# mcp-builder > よく設計されたツールを通じてLLMが外部サービスと対話できるようにする高品質なMCP(Model Context Protocol)サーバーを作成するためのガイド。外部APIまたはサービスを統合するMCPサーバーを構築するときに使用します。Python(FastMCP)またはNode/TypeScript(MCP SDK)のいずれかで構築する場合に使用します。 - Author: mahha - Repository: mahha/anthropic_skills - Version: 20260105081446 - Stars: 0 - Forks: 0 - Last Updated: 2026-02-07 - Source: https://github.com/mahha/anthropic_skills - Web: https://mule.run/skillshub/@@mahha/anthropic_skills~mcp-builder:20260105081446 --- --- name: mcp-builder description: よく設計されたツールを通じてLLMが外部サービスと対話できるようにする高品質なMCP(Model Context Protocol)サーバーを作成するためのガイド。外部APIまたはサービスを統合するMCPサーバーを構築するときに使用します。Python(FastMCP)またはNode/TypeScript(MCP SDK)のいずれかで構築する場合に使用します。 license: 完全な条件はLICENSE.txtに記載されています --- # MCPサーバー開発ガイド ## 概要 よく設計されたツールを通じてLLMが外部サービスと対話できるようにするMCP(Model Context Protocol)サーバーを作成します。MCPサーバーの品質は、LLMが実際のタスクを達成するのにどれだけうまく機能するかで測定されます。 --- # プロセス ## 🚀 高レベルワークフロー 高品質なMCPサーバーを作成するには、4つの主要なフェーズが含まれます: ### フェーズ1:深い調査と計画 #### 1.1 モダンなMCPデザインを理解 **APIカバレッジ vs. ワークフローツール:** 包括的なAPIエンドポイントカバレッジと専門的なワークフローツールのバランスを取ります。ワークフローツールは特定のタスクにより便利ですが、包括的なカバレッジはエージェントに操作を組み合わせる柔軟性を与えます。パフォーマンスはクライアントによって異なります—一部のクライアントは基本的なツールを組み合わせるコード実行の恩恵を受けますが、他のクライアントはより高レベルのワークフローでより良く動作します。不確実な場合は、包括的なAPIカバレッジを優先します。 **ツール名と発見可能性:** 明確で説明的なツール名は、エージェントが適切なツールを迅速に見つけるのに役立ちます。一貫したプレフィックス(例:`github_create_issue`、`github_list_repos`)とアクション指向の命名を使用します。 **コンテキスト管理:** エージェントは簡潔なツール説明と結果をフィルタリング/ページネーションする機能の恩恵を受けます。焦点を絞った関連データを返すツールを設計します。一部のクライアントはコード実行をサポートしており、エージェントがデータを効率的にフィルタリングおよび処理するのに役立ちます。 **実行可能なエラーメッセージ:** エラーメッセージは、具体的な提案と次のステップでエージェントをソリューションに導く必要があります。 #### 1.2 MCPプロトコルドキュメントを研究 **MCP仕様をナビゲート:** 関連ページを見つけるためにサイトマップから始めます:`https://modelcontextprotocol.io/sitemap.xml` 次に、マークダウンフォーマットで`.md`サフィックス付きの特定のページを取得します(例:`https://modelcontextprotocol.io/specification/draft.md`)。 レビューすべき主要なページ: - 仕様の概要とアーキテクチャ - トランスポートメカニズム(ストリーミング可能なHTTP、stdio) - ツール、リソース、プロンプトの定義 #### 1.3 フレームワークドキュメントを研究 **推奨スタック:** - **言語**: TypeScript(高品質なSDKサポートと多くの実行環境での良好な互換性、例:MCPB。さらに、AIモデルはTypeScriptコードの生成が得意で、その広範な使用、静的型付け、優れたリンティングツールの恩恵を受けます) - **トランスポート**: リモートサーバーにはストリーミング可能なHTTP、ステートレスJSONを使用(ステートフルセッションやストリーミングレスポンスとは対照的に、スケールとメンテナンスが簡単)。ローカルサーバーにはstdio。 **フレームワークドキュメントを読み込む:** - **MCPベストプラクティス**: [📋 ベストプラクティスを表示](./reference/mcp_best_practices.md) - コアガイドライン **TypeScript(推奨)の場合:** - **TypeScript SDK**: WebFetchを使用して`https://raw.githubusercontent.com/modelcontextprotocol/typescript-sdk/main/README.md`を読み込みます - [⚡ TypeScriptガイド](./reference/node_mcp_server.md) - TypeScriptパターンと例 **Pythonの場合:** - **Python SDK**: WebFetchを使用して`https://raw.githubusercontent.com/modelcontextprotocol/python-sdk/main/README.md`を読み込みます - [🐍 Pythonガイド](./reference/python_mcp_server.md) - Pythonパターンと例 #### 1.4 実装を計画 **APIを理解:** サービスのAPIドキュメントをレビューして、主要なエンドポイント、認証要件、データモデルを識別します。必要に応じてWeb検索とWebFetchを使用します。 **ツール選択:** 包括的なAPIカバレッジを優先します。実装するエンドポイントをリストアップし、最も一般的な操作から始めます。 --- ### フェーズ2:実装 #### 2.1 プロジェクト構造をセットアップ プロジェクトセットアップについては、言語固有のガイドを参照: - [⚡ TypeScriptガイド](./reference/node_mcp_server.md) - プロジェクト構造、package.json、tsconfig.json - [🐍 Pythonガイド](./reference/python_mcp_server.md) - モジュール組織、依存関係 #### 2.2 コアインフラストラクチャを実装 共有ユーティリティを作成: - 認証付きAPIクライアント - エラーハンドリングヘルパー - レスポンスフォーマット(JSON/Markdown) - ページネーションサポート #### 2.3 ツールを実装 各ツールについて: **入力スキーマ:** - Zod(TypeScript)またはPydantic(Python)を使用 - 制約と明確な説明を含める - フィールド説明に例を追加 **出力スキーマ:** - 構造化データには可能な限り`outputSchema`を定義 - ツールレスポンスで`structuredContent`を使用(TypeScript SDK機能) - クライアントがツール出力を理解および処理するのに役立ちます **ツール説明:** - 機能の簡潔な要約 - パラメータ説明 - 戻り値の型スキーマ **実装:** - I/O操作にはasync/await - 実行可能なメッセージを含む適切なエラーハンドリング - 該当する場合はページネーションをサポート - モダンなSDKを使用する場合は、テキストコンテンツと構造化データの両方を返す **アノテーション:** - `readOnlyHint`: true/false - `destructiveHint`: true/false - `idempotentHint`: true/false - `openWorldHint`: 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サーバーを実装した後、その有効性をテストするための包括的な評価を作成します。 **完全な評価ガイドラインについては、[✅ 評価ガイド](./reference/evaluation.md)を読み込んでください。** #### 4.1 評価の目的を理解 評価を使用して、LLMがMCPサーバーを効果的に使用して現実的で複雑な質問に答えることができるかどうかをテストします。 #### 4.2 10個の評価質問を作成 効果的な評価を作成するには、評価ガイドに概説されたプロセスに従います: 1. **ツール検査**: 利用可能なツールをリストアップし、その機能を理解します 2. **コンテンツ探索**: 読み取り専用操作を使用して利用可能なデータを探索します 3. **質問生成**: 10個の複雑で現実的な質問を作成します 4. **回答検証**: 各質問を自分で解決して回答を確認します #### 4.3 評価要件 各質問が以下であることを確認します: - **独立**: 他の質問に依存しない - **読み取り専用**: 非破壊的な操作のみが必要 - **複雑**: 複数のツール呼び出しと深い探索が必要 - **現実的**: 人間が気にする実際のユースケースに基づく - **検証可能**: 文字列比較で検証できる単一の明確な答え - **安定**: 時間の経過とともに答えが変わらない #### 4.4 出力フォーマット この構造でXMLファイルを作成します: ```xml 動物のコードネームを持つAIモデルのローンチに関する議論を見つけます。1つのモデルには、ASL-X形式を使用する特定の安全指定が必要でした。斑点のある野生の猫にちなんで名付けられたモデルについて、どの数値Xが決定されていましたか? 3 ``` --- # リファレンスファイル ## 📚 ドキュメントライブラリ 開発中に必要に応じてこれらのリソースを読み込みます: ### コアMCPドキュメント(最初に読み込む) - **MCPプロトコル**: `https://modelcontextprotocol.io/sitemap.xml`のサイトマップから始め、次に`.md`サフィックス付きの特定のページを取得 - [📋 MCPベストプラクティス](./reference/mcp_best_practices.md) - ユニバーサルMCPガイドライン、以下を含む: - サーバーとツールの命名規則 - レスポンスフォーマットガイドライン(JSON vs Markdown) - ページネーションベストプラクティス - トランスポート選択(ストリーミング可能なHTTP vs 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実装ガイド](./reference/python_mcp_server.md) - 完全なPython/FastMCPガイド、以下を含む: - サーバー初期化パターン - Pydanticモデルの例 - `@mcp.tool`でのツール登録 - 完全な動作例 - 品質チェックリスト - [⚡ TypeScript実装ガイド](./reference/node_mcp_server.md) - 完全なTypeScriptガイド、以下を含む: - プロジェクト構造 - Zodスキーマパターン - `server.registerTool`でのツール登録 - 完全な動作例 - 品質チェックリスト ### 評価ガイド(フェーズ4中に読み込む) - [✅ 評価ガイド](./reference/evaluation.md) - 完全な評価作成ガイド、以下を含む: - 質問作成ガイドライン - 回答検証戦略 - XMLフォーマット仕様 - 質問と回答の例 - 提供されたスクリプトで評価を実行