go-mcp-server-mds について
go-mcp-server-mdsは、ファイルシステム上のMarkdownファイルをMCPリソースとして提供し、一覧表示と読み取りのツールを備えています。ファイルシステム抽象化を使って文書を公開するGoプロジェクト向けで、YAMLまたはTOMLのフロントマターを解析します。
主な機能
- 01MarkdownファイルをMCP経由で提供
- 02ファイルとメタデータの一覧表示
- 03ファイル内容の読み取り
- 04YAMLとTOMLのフロントマター解析
- 05fs.FSによるファイルシステム抽象化
活用シーン
- 01MCPクライアントへのMarkdown文書の提供
- 02フロントマターメタデータによる文書整理
MCP 対応
MCPサーバーとして、Markdownファイルをfile://リソースとして登録し、ファイル一覧と内容読み取りのツールを提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
go-mcp-server-mds
ファイルシステム上の Markdown ファイルを提供する、Model Context Protocol(MCP)サーバーの Go 実装です。
概要
このサーバーを使用すると、Model Context Protocol を介して Markdown ファイルを公開し、リソースとしてアクセスできるようにするとともに、Markdown ファイルの一覧表示や読み取りを行うツールを利用できます。YAML または TOML のフロントマターを含む Markdown ファイルに対応しています。
機能
- MCP 経由で Markdown ファイルを提供
- メタデータ付きで利用可能な Markdown ファイルをすべて一覧表示
- 個々の Markdown ファイルの内容を読み取り
- YAML および TOML のフロントマターに対応
fs.FSを使用したファイルシステムの抽象化- URI ベースのアクセスによるリソース管理
フロントマターのサポート
このサーバーは、YAML または TOML のフロントマターを含む Markdown ファイルに対応しています。フロントマターは、区切り文字で囲まれた、Markdown ファイルの先頭に配置するメタデータです。
YAML フロントマター
YAML フロントマターでは、区切り文字として --- を使用します。
---
title: My Document
date: 2024-03-21
tags: [documentation, markdown]
---
# Document Content
TOML フロントマター
TOML フロントマターでは、区切り文字として +++ を使用します。
+++
title = "My Document"
date = 2024-03-21
tags = ["documentation", "markdown"]
+++
# Document Content
フロントマターのメタデータは解析され、サーバーのツールおよびリソースの説明から利用できます。このメタデータには、有効な YAML または TOML のデータを含めることができ、Markdown ドキュメントの整理や説明に役立ちます。
インストール
go get github.com/Warashi/go-mcp-server-mds
使用方法
MCP Markdown サーバーを作成して使用する基本的な例を以下に示します。
package main
import (
"context"
"os"
mcpmds "github.com/Warashi/go-mcp-server-mds"
)
func main() {
// Create a new server using the current directory
server, err := mcpmds.New(
"markdown-server",
"A server that provides access to markdown files",
os.DirFS("."),
)
if err != nil {
panic(err)
}
// Start the server
if err := server.ServeStdio(context.Background()); err != nil {
panic(err)
}
}
コマンドラインツール(mcp-server-mds)
このリポジトリには、サーバーを直接実行するコマンドラインツール mcp-server-mds が含まれています。
インストール
コマンドラインツールをビルドするには、次のようにします。
go install github.com/Warashi/go-mcp-server-mds/cmd/mcp-server-mds@latest
実行
サーバーを実行するには、ビルドしたバイナリを実行します。指定したディレクトリの Markdown ファイルを、標準入力/出力経由で提供します。
$HOME/go/bin/mcp-server-mds -path /path/to/your/markdown/files
フラグ:
-path:提供する Markdown ファイルが含まれるディレクトリを指定します。デフォルトは現在のディレクトリ(.)です。-name:サーバー名を設定します。デフォルトはmcp-server-mdsです。-description:サーバーの説明を設定します。デフォルトはMarkdown Documents Serverです。
利用可能なツール
list_{server-name}_markdown_files
サーバーが管理するすべての Markdown ファイルを一覧表示します。次のようなメタデータを返します。
- ファイルパス
- ファイルサイズ
- 解析済みのフロントマター(利用可能な場合)
read_{server-name}_markdown_file
指定した Markdown ファイルを読み取ります。次の項目が必要です。
path:Markdown ファイルへのパス
返される内容:
- ファイルパス
- ファイルサイズ
- 解析済みのフロントマター
- ファイルの全内容
リソースへのアクセス
リソースには file:// URI でアクセスできます。各 Markdown ファイルは、次の情報を持つリソースとして登録されます。
- URI:
file://{path} - 名前:ベースファイル名
- 説明:JSON 形式のフロントマター
- MimeType:
text/markdown - サイズ:バイト単位のファイルサイズ
ライセンス
このプロジェクトは MIT License のもとでライセンスされています。詳細については、LICENSE ファイルをご覧ください。
コントリビューション
コントリビューションを歓迎します。お気軽にプルリクエストを送信してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。