godoc-mcp-server について
godoc-mcp-server は、pkg.go.dev から Go パッケージとそのドキュメントを検索し、結果を LLM に提供する MCP サーバーです。Go 開発者を対象とし、stdio 上で動作します。
主な機能
- 01Go パッケージとドキュメントの検索
- 02パッケージ情報とサンプルコードの取得
- 03パッケージのインポート数の確認
- 04ローカルキャッシュによる検索の効率化
- 05サブパッケージ情報の照会
活用シーン
- 01LLM による Go パッケージの使い方やドキュメントの調査
- 02サブパッケージを探し、その詳細を取得
MCP 対応
MCP サーバーとして stdio 上で searchPackage や getPackageInfo などのツールを提供し、pkg.go.dev のパッケージ情報を MCP クライアントに返します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
godoc-mcp-server
pkg.go.dev から Go パッケージとそのドキュメントを検索し、MCP サーバーとして情報を LLM に提供します。
インストール
コンパイル済みバイナリは、リリースページからダウンロードできます。
または、ソースからインストールして、自分でコンパイルすることもできます。
go install github.com/yikakia/godoc-mcp-server/cmd/godoc-mcp-server@latest
使い方
クライアントからリクエストするだけです。stdio で動作します。
今後の予定
- localCache
- 毎回検索するのを避けるため、ローカルキャッシュを使用する(Reddit ユーザーからの提案)
- searchPackage
- 何個のパッケージからインポートされているかを表示
- getPackageInfo
- 修正が必要:サブパッケージには新しいアダプターが必要
- サンプルを取得
- リリース
- GitHub Actions を使用して複数のプラットフォーム向けにリリース
開発時の経験
説明は非常に重要です。パラメーターを説明するときは、あるツールの出力をクライアントがどのように使い、別のツールの入力に合うように形式を変更するかを伝える必要があります。
たとえば、searchPackage の出力にはサブパッケージ名が含まれますが、パッケージ名は含まれません。そのため、LLM に getPackageInfo を使ってサブパッケージの情報を取得させる場合に備えて、packageName パラメーターの説明に、searchPackage と連携させる方法を記載しました。
検索するパッケージ名です。先に searchPackages を使用していて、ユーザーがサブパッケージの情報を取得したい場合は、名前を結合してください。たとえば、ユーザーが mcp と検索し、packageName: github.com/mark3labs/mcp-go/mcp とサブパッケージ client が返された場合、client パッケージの情報を取得したいときは、packageName に client ではなく github.com/mark3labs/mcp-go/mcp/client を設定してください。
この詳細な説明を使用すると、検索後に LLM がサブパッケージ名を伝えてくれます。情報を取得したいパッケージ、またはパッケージとサブパッケージの名前を伝えるだけで、それらを結合して getPackageInfo を呼び出し、情報を取得します。
そのため、ツールをより便利かつ効率的にするために、ユーザーが説明を設定できるようにしたほうがよいかもしれません。
ライブラリの使用
このモジュールのエクスポートされた Go API は、現在、不安定であり、破壊的変更が加えられる可能性があるものとして扱う必要があります。将来的には安定性を提供する場合があります。これが有益となるユースケースがあれば、issue を報告してください。
ライセンス
このプロジェクトは、MIT オープンソースライセンスの条件に基づいてライセンスされています。条件の全文については、MITを参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。