Model Context Protocol (MCP) Server - Filesystem Implementation について
Goで実装された教育向けのMCPサーバーで、MCPクライアントにローカルファイルシステムを公開します。ディレクトリ一覧、ファイルの読み書きや削除のツールに加え、ファイルとディレクトリのリソースを提供します。追加のセキュリティ強化なしで本番利用しないようREADMEで注意しています。
主な機能
- 01ディレクトリ内容の一覧表示
- 02ファイルの読み書き
- 03ファイルとディレクトリの削除
- 04ファイルとディレクトリのリソース公開
- 05基本的なパスのサニタイズ
活用シーン
- 01教育向けMCPサーバー実装の学習
- 02MCPクライアントからのファイル操作
MCP 対応
MCPクライアントにファイルシステムのツールと、ファイルおよびディレクトリのリソースを公開します。エンドポイントは機能の検出、ツール呼び出し、リソースの読み込みに対応します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Model Context Protocol (MCP) サーバー - ファイルシステム実装
これは、Echo フレームワークを使用した、Go による Model Context Protocol (MCP) サーバーの教育目的の実装です。このサーバーは、MCP プロトコルを通じてローカルファイルシステムへのアクセスを提供します。
概要
Model Context Protocol (MCP) は、開発者がデータソースと AI 搭載ツールの間に安全な双方向接続を構築できるようにするオープン標準です。この実装では、ローカルファイルシステムへのアクセスを提供する MCP サーバーの作成方法を紹介します。
機能
- ファイルシステムプロバイダー:MCP ツールとリソースを通じてローカルファイルシステムへのアクセスを提供します
- ツール:
filesystem.list:ディレクトリの内容を一覧表示しますfilesystem.read:ファイルの内容を読み取りますfilesystem.write:ファイルに内容を書き込みますfilesystem.delete:ファイルまたはディレクトリを削除します
- リソース:
filesystem.file:ファイルシステム内のファイルを表しますfilesystem.directory:ファイルシステム内のディレクトリを表します
セキュリティに関する考慮事項
この実装には、ディレクトリトラバーサル攻撃を防ぐための基本的なパスのサニタイズが含まれていますが、教育目的のみを想定しています。本番環境では、次のような追加のセキュリティ対策が必要です。
- ユーザー認証と認可
- より堅牢な入力検証
- レート制限
- 監査ログ
- サンドボックス化
はじめに
前提条件
- Go 1.24 以降
インストール
- リポジトリをクローンします
- 依存関係をインストールします:
go mod tidy - サーバーを起動します:
go run main.go
サーバーはデフォルトでポート 8080 で起動します。PORT 環境変数を設定すると、ポートを変更できます。
API エンドポイント
GET /:サーバー情報POST /v1/discover:サーバーの機能を検出しますPOST /v1/call-tool:ツールを呼び出しますPOST /v1/load-resource:リソースを読み込みます
使用例
サーバーの機能を検出する
curl -X POST http://localhost:8080/v1/discover
ディレクトリの内容を一覧表示する
curl -X POST http://localhost:8080/v1/call-tool \
-H "Content-Type: application/json" \
-d '{
"tool_id": "filesystem.list",
"request_id": "req-123",
"params": {
"arguments": {
"path": "."
}
}
}'
ファイルの内容を読み取る
curl -X POST http://localhost:8080/v1/call-tool \
-H "Content-Type: application/json" \
-d '{
"tool_id": "filesystem.read",
"request_id": "req-123",
"params": {
"arguments": {
"path": "README.md"
}
}
}'
ライセンス
このプロジェクトは MIT License の下でライセンスされています。詳細については LICENSE ファイルを参照してください。
免責事項
この実装は教育目的のみを対象としており、適切なセキュリティレビューと強化を行わずに本番環境で使用しないでください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。