mcpField
G
go-mcp-server-service

go-mcp-server-service

ローカル
github.com/AndrewDonelson開発ツール1100 週間前に更新

go-mcp-server-service について

ノート管理を題材にした Go 製 MCP サーバーのサンプル兼ひな形です。開発・リリース向けの設定と、コマンドラインおよびサービスの各コンポーネントを備えています。

主な機能

  1. 01JSON-RPC 2.0 API
  2. 02スレッドセーフなノート保存
  3. 03独自 URI のノートリソース
  4. 04ノート追加ツールと要約プロンプト
  5. 05コマンドラインとバックグラウンドサービス

活用シーン

  1. 01ノート管理の例を基にした Go MCP サーバーの構築
  2. 02ノートの保存と MCP クライアントからの参照

MCP 対応

独自の `note://` URI によるノートリソース、`add-note` ツール、`summarize-notes` プロンプトを MCP クライアントに提供します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"go-mcp-server-service": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/inspector"
]
}
}
}
起動コマンドnpx -y @modelcontextprotocol/inspector

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@modelcontextprotocol/inspector

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

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

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。