mcp-builder について
mcp-builderは、MCPサーバーを開発する人向けのガイドです。計画から実装、テスト、評価までを扱い、TypeScriptとPythonの手順を紹介します。
主な機能
- 01MCP設計と計画の指針
- 02TypeScriptとPythonの実装ガイド
- 03ツールスキーマ、エラー処理、ページネーション
- 04ビルドとMCP Inspectorによるテスト
- 05評価用の質問と回答の形式
活用シーン
- 01外部API向けMCPサーバーの計画
- 02構造化スキーマを使ったツールの実装
- 03リリース前のMCPサーバーテスト
- 04現実的なエージェントタスクの評価作成
MCP 対応
MCPサーバーの開発を支援し、ツール、リソース、プロンプト、トランスポート、MCP Inspectorによるテストを扱います。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ pskoett/ pskoett-ai-skills --skill mcp-builderインストール後、Claude Code で/mcp-builderを入力して読み込まれたか確認します。
同梱ファイルLICENSE.txt
詳細
MCP サーバー開発ガイド
概要
LLM が、適切に設計されたツールを通じて外部サービスとやり取りできる MCP(Model Context Protocol)サーバーを作成します。MCP サーバーの品質は、LLM が実際のタスクをどれだけ適切に遂行できるかによって測られます。
プロセス
🚀 ワークフローの概要
高品質な MCP サーバーの作成には、主に 4 つのフェーズがあります。
フェーズ 1:詳細な調査と計画
1.1 最新の MCP 設計を理解する
API の網羅性とワークフローツール: API エンドポイントを幅広く網羅することと、特定のワークフローに特化したツールのバランスを取ります。ワークフローツールは特定のタスクに便利な一方、幅広い網羅性があれば、エージェントは操作を組み合わせる柔軟性を得られます。パフォーマンスはクライアントによって異なります。基本的なツールを組み合わせるコード実行が役立つクライアントもあれば、より高レベルのワークフローが適しているクライアントもあります。判断に迷う場合は、API の幅広い網羅性を優先してください。
ツールの命名と見つけやすさ: 明確で説明的なツール名を付けると、エージェントは適切なツールをすばやく見つけられます。一貫したプレフィックス(例:github_create_issue、github_list_repos)を使い、アクションを表す名前を付けてください。
コンテキスト管理: 簡潔なツールの説明と、結果をフィルタリングしたりページ分割したりする機能は、エージェントにとって有用です。焦点を絞った関連性の高いデータを返すツールを設計してください。一部のクライアントではコード実行に対応しており、効率的なデータのフィルタリングや処理に役立ちます。
実行可能なエラーメッセージ: エラーメッセージには、具体的な提案と次の手順を示し、エージェントが解決策を見つけられるようにしてください。
1.2 MCP プロトコルのドキュメントを確認する
MCP 仕様を参照する:
サイトマップを使って、関連するページを見つけます。
https://modelcontextprotocol.io/sitemap.xml
次に、.md サフィックスを付けて特定のページを取得し、Markdown 形式で確認します(例:
https://modelcontextprotocol.io/specification/draft.md)。
確認する主なページ:
- 仕様の概要とアーキテクチャ
- トランスポート方式(ストリーミング可能な HTTP、stdio)
- ツール、リソース、プロンプトの定義
1.3 フレームワークのドキュメントを確認する
推奨スタック:
- 言語:TypeScript(高品質な SDK のサポートと、多くの実行環境(例:MCPB)との高い互換性を備えています。また、幅広く使われており、静的型付けや優れたリンティングツールも利用できるため、AI モデルによる TypeScript コードの生成にも適しています)
- トランスポート:リモートサーバーには、ステートレス JSON を使用するストリーミング可能な HTTP を使います(ステートフルなセッションやストリーミング応答に比べ、スケーリングと保守が容易です)。ローカルサーバーには stdio を使います。
フレームワークのドキュメントを読み込む:
- MCP のベストプラクティス: 📋 ベストプラクティスを見る - 基本的なガイドライン
TypeScript の場合(推奨):
- TypeScript SDK:WebFetch を使って
https://raw.githubusercontent.com/modelcontextprotocol/typescript-sdk/main/README.mdを読み込みます。 - ⚡ TypeScript ガイド - TypeScript のパターンと例
Python の場合:
- Python SDK:WebFetch を使って
https://raw.githubusercontent.com/modelcontextprotocol/python-sdk/main/README.mdを読み込みます。 - 🐍 Python ガイド - Python のパターンと例
1.4 実装を計画する
API を理解する: サービスの API ドキュメントを確認し、主要なエンドポイント、認証要件、データモデルを特定します。必要に応じてウェブ検索や WebFetch を利用してください。
ツールの選定: API を幅広く網羅することを優先します。実装するエンドポイントをリストアップし、よく使われる操作から着手してください。
フェーズ 2:実装
2.1 プロジェクト構成を設定する
プロジェクトの設定については、言語別のガイドを参照してください。
- ⚡ TypeScript ガイド - プロジェクト構成、package.json、tsconfig.json
- 🐍 Python ガイド - モジュール構成、依存関係
2.2 コアインフラストラクチャを実装する
共有ユーティリティを作成します。
- 認証機能を備えた API クライアント
- エラー処理のヘルパー
- 応答のフォーマット(JSON/Markdown)
- ページネーションのサポート
2.3 ツールを実装する
各ツールについて、以下を行います。
入力スキーマ:
- Zod(TypeScript)または Pydantic(Python)を使用します
- 制約を含め、明確な説明を記述します
- フィールドの説明に例を追加します
出力スキーマ:
- 構造化データの場合は、可能な限り
outputSchemaを定義します - ツールの応答では
structuredContentを使用します(TypeScript SDK の機能) - クライアントがツールの出力を理解し、処理するのに役立ちます
ツールの説明:
- 機能の簡潔な要約
- パラメーターの説明
- 戻り値の型スキーマ
実装:
- I/O 操作には Async/await を使用します
- 実行可能なメッセージを含む適切なエラー処理を行います
- 該当する場合はページネーションをサポートします
- モダンな SDK を使用する場合は、テキストコンテンツと構造化データの両方を返します
アノテーション:
readOnlyHint: true/falsedestructiveHint: true/falseidempotentHint: true/falseopenWorldHint: true/false
フェーズ 3:レビューとテスト
3.1 コード品質
以下を確認します。
- コードが重複していない(DRY 原則)
- エラー処理に一貫性がある
- 型が完全に網羅されている
- ツールの説明が明確である
3.2 ビルドとテスト
TypeScript:
npm run buildを実行してコンパイルを確認します- MCP Inspector でテストします:
npx @modelcontextprotocol/inspector
Python:
- 構文を確認します:
python -m py_compile your_server.py - MCP Inspector でテストします
テスト方法と品質チェックリストの詳細については、言語別のガイドを参照してください。
フェーズ 4:評価を作成する
MCP サーバーを実装したら、その有効性をテストするための包括的な評価を作成します。
評価の完全なガイドラインについては、✅ 評価ガイドを読み込んでください。
4.1 評価の目的を理解する
評価を使用して、LLM が MCP サーバーを効果的に利用し、現実的で複雑な質問に回答できるかテストします。
4.2 評価用の質問を 10 個作成する
効果的な評価を作成するには、評価ガイドに記載されたプロセスに従います。
- ツールの調査:利用可能なツールを一覧表示し、それぞれの機能を把握します
- コンテンツの探索:読み取り専用操作を使用して、利用可能なデータを探索します
- 質問の作成:複雑で現実的な質問を 10 個作成します
- 回答の検証:回答を検証するため、各質問を自分で解きます
4.3 評価の要件
各質問が以下を満たすことを確認します。
- 独立性:ほかの質問に依存しない
- 読み取り専用:破壊的でない操作のみを必要とする
- 複雑性:複数のツール呼び出しと詳細な探索を必要とする
- 現実性:人々が関心を持つ実際のユースケースに基づいている
- 検証可能性:文字列比較で検証できる、明確で単一の回答がある
- 安定性:時間が経っても回答が変わらない
4.4 出力形式
次の構造の XML ファイルを作成します。
<evaluation>
<qa_pair>
<question>Find discussions about AI model launches with animal codenames. One model needed a specific safety designation that uses the format ASL-X. What number X was being determined for the model named after a spotted wild cat?</question>
<answer>3</answer>
</qa_pair>
</evaluation>
参照ファイル
📚 ドキュメントライブラリ
開発中、必要に応じてこれらのリソースを読み込みます。
MCP のコアドキュメント(最初に読み込む)
- MCP プロトコル:まずサイトマップ
https://modelcontextprotocol.io/sitemap.xmlを確認し、続いて.mdサフィックスを付けて特定のページを取得します - 📋 MCP のベストプラクティス - 以下を含む、MCP 全般のガイドライン:
- サーバーとツールの命名規則
- 応答形式のガイドライン(JSON と Markdown の比較)
- ページネーションのベストプラクティス
- トランスポートの選択(ストリーミング可能な HTTP と stdio の比較)
- セキュリティとエラー処理の標準
SDK のドキュメント(フェーズ 1/2 で読み込む)
- Python SDK:
https://raw.githubusercontent.com/modelcontextprotocol/python-sdk/main/README.mdから取得します - TypeScript SDK:
https://raw.githubusercontent.com/modelcontextprotocol/typescript-sdk/main/README.mdから取得します
言語別実装ガイド(フェーズ 2 で読み込み)
-
🐍 Python 実装ガイド - Python/FastMCP の完全ガイドです。以下を含みます:
- サーバーの初期化パターン
- Pydantic モデルの例
@mcp.toolによるツールの登録- 完全な動作例
- 品質チェックリスト
-
⚡ TypeScript 実装ガイド - TypeScript の完全ガイドです。以下を含みます:
- プロジェクト構成
- Zod スキーマのパターン
server.registerToolによるツールの登録- 完全な動作例
- 品質チェックリスト
評価ガイド(フェーズ 4 で読み込み)
- ✅ 評価ガイド - 評価の作成に関する完全ガイドです。以下を含みます:
- 質問の作成に関するガイドライン
- 回答の検証方法
- XML 形式の仕様
- 質問と回答の例
- 提供されたスクリプトを使った評価の実行