MCP.so
Sign In
Servers

go-mcp-server-mds

@Warashi

A Go implementation of a Model Context Protocol (MCP) server that serves markdown files with frontmatter support from a filesystem.

Overview

What is go-mcp-server-mds?

A Go implementation of a Model Context Protocol (MCP) server that serves markdown files from a filesystem. It exposes markdown files as resources with URI-based access and provides tools to list and read them, supporting YAML and TOML frontmatter. Targeted at developers who want to make markdown documentation or notes available to MCP clients.

How to use go-mcp-server-mds?

Install with go get github.com/Warashi/go-mcp-server-mds. Use the Go library: create a server with mcpmds.New and start it via server.ServeStdio(context.Background()). Alternatively, install the CLI tool mcp-server-mds with go install github.com/Warashi/go-mcp-server-mds/cmd/mcp-server-mds@latest and run it with -path to specify the markdown directory.

Key features of go-mcp-server-mds

  • Serves markdown files over MCP as resources and tools
  • Lists all markdown files with metadata and frontmatter
  • Reads individual markdown file content and frontmatter
  • Supports YAML (---) and TOML (+++) frontmatter
  • Uses Go’s fs.FS for filesystem abstraction
  • URI-based resource access via file:// URIs

Use cases of go-mcp-server-mds

  • Making a local documentation folder accessible to an MCP-powered AI assistant
  • Exposing markdown notes with structured frontmatter for search or organization
  • Building an MCP-based tool that needs to read and serve markdown files from any directory
  • Integrating markdown content into larger MCP workflows (e.g., summarization or retrieval)

FAQ from go-mcp-server-mds

What frontmatter formats are supported?

YAML frontmatter (delimited by ---) and TOML frontmatter (delimited by +++) are both fully supported.

How are resources accessed?

Each markdown file is registered as a resource with a file:// URI (e.g., file:///path/to/file.md). The resource includes name, description (JSON-encoded frontmatter), MIME type text/markdown, and file size.

How can I customize the server name or description?

Use the -name and -description flags when running the CLI tool, or pass them as string arguments to the mcpmds.New function.

What transport does the server use?

The server uses standard input/output (stdio) via the ServeStdio method.

Are there any runtime dependencies?

Only Go itself; the server is a self-contained Go binary that reads markdown files from the local filesystem specified by the -path flag.

Tags

More from Files & Storage