go-mcp-server-service について
ノート管理を題材にした Go 製 MCP サーバーのサンプル兼ひな形です。開発・リリース向けの設定と、コマンドラインおよびサービスの各コンポーネントを備えています。
主な機能
- 01JSON-RPC 2.0 API
- 02スレッドセーフなノート保存
- 03独自 URI のノートリソース
- 04ノート追加ツールと要約プロンプト
- 05コマンドラインとバックグラウンドサービス
活用シーン
- 01ノート管理の例を基にした Go MCP サーバーの構築
- 02ノートの保存と MCP クライアントからの参照
MCP 対応
独自の `note://` URI によるノートリソース、`add-note` ツール、`summarize-notes` プロンプトを MCP クライアントに提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
go-mcp-server-service
メモ管理用のModel Context Protocol(MCP)を実装した、JSON-RPC 2.0準拠のサーバー(例)
これはサンプルです。独自のプロジェクト用のボイラープレートとして変更して使用できます。クロスプラットフォームでの開発に対応しており、開発ビルドとリリースビルドの両方に、コマンドラインインターフェイスとサービスコンポーネントが含まれています。
機能
- JSON-RPC 2.0準拠のAPI
- クロスプラットフォーム対応(Windows、Linux、macOS)
- スレッドセーフなメモ管理
- 開発用およびリリース用のビルド設定
- サービスおよびコマンドラインインターフェイスのコンポーネント
コンポーネント
コマンドラインインターフェイス(cmd)
コマンドラインインターフェイスから、メモサーバーの機能に直接アクセスできます。
サービス(service)
サービスコンポーネントにより、システムレベルとの統合とバックグラウンドでの動作が可能になります。
リソース
サーバーは、次の機能を備えたメモストレージシステムを実装しています。
- 個々のメモにアクセスするためのカスタム
note://URIスキーム - 名前、説明、MIMEタイプを含むリソースメタデータ
- スレッドセーフな並行アクセス
プロンプト
利用可能なプロンプト:
summarize-notes:保存されているすべてのメモの要約を作成しますstyle引数は任意です("brief"/"detailed")- 現在のすべてのメモを、指定されたスタイルの設定に合わせてまとめます
- スレッドセーフなメモへのアクセス
ツール
利用可能なツール:
add-note:サーバーに新しいメモを追加します- 必須の引数:
name(文字列)、content(文字列) - スレッドセーフな状態の更新
- 確認メッセージを返します
- 必須の引数:
ビルド
前提条件
- Go 1.21以降
- GNU Makeまたは互換性のあるビルドツール
- Git(バージョン情報の取得用)
ビルドコマンド
開発ビルド(デバッグシンボルと競合検出を含む):
# Build all components for all platforms
make dev
# Build for specific platform
make dev-windows
make dev-linux
make dev-darwin
# Build specific components
make build-cmd
make build-service
リリースビルド(最適化済み、シンボル削除済み):
# Build all components for all platforms
make release-all
# Build for specific platform
make release-windows
make release-linux
make release-darwin
ローカルで実行する場合:
# Run command-line interface
make run-cmd
# Run service
make run-service
利用可能なすべてのターゲットを表示する場合:
make help
ビルド出力
バイナリはbinディレクトリに作成されます。
- 開発ビルド:
bin/dev/<platform>/ - リリースビルド:
bin/release/<platform>/
設定
Claude Desktopとの統合
Claude Desktopの設定ファイルでメモサーバーを設定します。
場所
- MacOS:
~/Library/Application\ Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%/Claude/claude_desktop_config.json
開発用設定
{
"mcpServers": {
"notes-server": {
"command": "./bin/dev/<platform>/notes-server",
"args": []
}
}
}
リリース用設定(サービスの例)
{
"mcpServers": {
"notes-server": {
"command": "./bin/release/<platform>/notes-service",
"args": []
}
}
}
開発
プロジェクト構成
.
├── cmd/ # Command-line interface
├── service/ # Service implementation
├── internal/
│ └── server/ # Core server implementation
│ ├── operations.go # Server operations
│ ├── server.go # Main server logic
│ └── types.go # Type definitions
├── Makefile # Build configuration
└── README.md
デバッグ
サーバーはstdio経由で動作するため、デバッグにはMCP Inspectorの使用をおすすめします。
npx @modelcontextprotocol/inspector ./bin/dev/<platform>/notes-server
Inspectorから、デバッグ用インターフェイスのURLが提供されます。
エラーコード
サーバーは、標準のJSON-RPC 2.0エラーコードに加えて、カスタムコードを実装しています。
| コード | 説明 | 標準 |
|---|---|---|
| -32700 | 解析エラー | はい |
| -32600 | 無効なリクエスト | はい |
| -32601 | メソッドが見つかりません | はい |
| -32602 | 無効なパラメーター | はい |
| -32603 | 内部エラー | はい |
| -32001 | リソースが見つかりません | いいえ |
| -32002 | サポートされていない操作 | いいえ |
ライセンス
MITライセンス
Copyright (c) 2024 Andrew Lee Donelson
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。