mcp-builder-ms について
LLMと外部APIやサービスを接続するMCPサーバーを開発するためのスキルです。TypeScript、Python、C#/.NETを対象に、計画、実装、安全性、テスト、評価を案内します。
主な機能
- 01MCPサーバー設計とツール計画
- 02TypeScript、Python、C#/.NETの指針
- 03トランスポートとSDKの選択
- 04セキュリティとエラー処理の実践
- 05MCP Inspectorによるテスト
- 06評価用質問の設計
活用シーン
- 01カスタムAPI向けサーバーの計画
- 02トランスポートと実装SDKの選択
- 03ツールの安全性と使いやすさの確認
- 04サーバー動作とLLMタスク性能のテスト
MCP 対応
外部サービスをツール、リソース、プロンプトとしてMCPクライアントに公開するサーバーの開発を案内します。stdioやStreamable HTTPなどのトランスポートも扱います。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ sickn33/ agentic-awesome-skills --skill mcp-builder-msインストール後、Claude Code で/mcp-builder-msを入力して読み込まれたか確認します。
詳細
MCP サーバー開発ガイド
使用する場面
Python(FastMCP)または Node/TypeScript(MCP SDK)で外部 API やサービスを統合する MCP サーバーを構築するときに、このスキルを使用します。
概要
LLM が適切に設計されたツールを通じて外部サービスとやり取りできるようにする MCP(Model Context Protocol)サーバーを作成します。MCP サーバーの品質は、LLM が実際のタスクをどれだけうまく達成できるようにするかで測られます。
以下の絵文字付きの実装/評価ガイドは、このツリーには含まれていません。これらのガイドやスクリプトを読んだと主張せず、公式 SDK のドキュメントを確認してください。エンドポイントやサービスの数は例であり、最新の情報を確認する必要があります。stdio はトランスポートです。stdio のサーバーでもネットワークリクエストを実行できます。ツールのアノテーションはヒントであり、認可制御ではありません。サーバーコードでテナント/ID のチェック、最小権限、入出力の制限、タイムアウト、エラーの機密情報のマスキングを実施してください。リモートサービスでは、プロトコルがサポートする認証とリクエスト発信元の保護が必要です。stdio では、プロトコルメッセージを標準出力に記録しないでください。
Microsoft MCP エコシステム
Microsoft は Azure および Foundry サービス向けに、幅広い MCP インフラストラクチャを提供しています。このエコシステムを理解すると、カスタムサーバーを構築するか、既存のサーバーを活用するかを判断しやすくなります。
サーバーの種類
| 種類 | トランスポート | 用途 | 例 |
|---|---|---|---|
| ローカル | stdio | デスクトップアプリ、単一ユーザー、ローカル開発 | NPM/Docker 経由の Azure MCP Server |
| リモート | Streamable HTTP | クラウドサービス、マルチテナント、Agent Service | https://mcp.ai.azure.com(Foundry) |
Microsoft MCP サーバー
カスタムサーバーを構築する前に、Microsoft がすでに提供しているサーバーがないか確認してください。
| サーバー | 種類 | 説明 |
|---|---|---|
| Azure MCP | ローカル | 48 以上の Azure サービス(Storage、KeyVault、Cosmos、SQL など) |
| Foundry MCP | リモート | https://mcp.ai.azure.com - モデル、デプロイ、評価、エージェント |
| Fabric MCP | ローカル | Microsoft Fabric API、OneLake、アイテム定義 |
| Playwright MCP | ローカル | ブラウザーの自動化とテスト |
| GitHub MCP | リモート | https://api.githubcopilot.com/mcp |
エコシステム全体: サーバーの全カタログとパターンについては、🔷 Microsoft MCP Patterns を参照してください。
Microsoft のサーバーとカスタムサーバーの使い分け
| シナリオ | 推奨事項 |
|---|---|
| Azure サービスとの統合 | Azure MCP Server を使用します(48 サービスに対応) |
| AI Foundry のエージェント/評価 | Foundry MCP リモートサーバーを使用します |
| カスタムの社内 API | カスタムサーバー を構築します(このガイド) |
| サードパーティの SaaS との統合 | カスタムサーバー を構築します(このガイド) |
| Azure MCP の拡張 | Microsoft MCP Patterns に従います |
プロセス
🚀 高レベルのワークフロー
高品質な 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 フレームワークのドキュメントを確認する
言語の選択:
| 言語 | 最適な用途 | SDK |
|---|---|---|
| TypeScript(推奨) | 一般的な MCP サーバー、幅広い互換性 | @modelcontextprotocol/sdk |
| Python | データ/ML パイプライン、FastAPI との統合 | mcp(FastMCP) |
| C#/.NET | Azure/Microsoft エコシステム、エンタープライズ | Microsoft.Mcp.Core |
トランスポートの選択:
| トランスポート | 用途 | 特徴 |
|---|---|---|
| Streamable HTTP | リモートサーバー、マルチテナント、Agent Service | ステートレス、スケーラブル、認証が必要 |
| 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 のパターンと例
C#/.NET の場合(Microsoft エコシステム):
- 🔷 Microsoft MCP パターン - C# のパターン、Azure MCP アーキテクチャ、コマンド階層
1.4 実装を計画する
API を理解する: サービスの API ドキュメントを確認し、主要なエンドポイント、認証要件、データモデルを特定します。必要に応じて、ウェブ検索や WebFetch を使用します。
ツールの選択: 包括的な API カバレッジを優先します。実装するエンドポイントを、よく使われる操作から順に列挙します。
フェーズ 2:実装
2.1 プロジェクト構造を設定する
プロジェクトの設定については、言語ごとのガイドを参照してください:
- ⚡ TypeScript ガイド - プロジェクト構造、package.json、tsconfig.json
- 🐍 Python ガイド - モジュール構成、依存関係
- 🔷 Microsoft MCP パターン - C# のプロジェクト構造、コマンド階層
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 サーバーを実装したら、その有効性をテストするための包括的な評価を作成します。
完全な評価ガイドラインについては、✅ Evaluation Guide を読み込んでください。
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)
- セキュリティとエラー処理の標準
Microsoft MCP ドキュメント(Azure/Foundry 用)
- 🔷 Microsoft MCP パターン - 以下を含む、Microsoft 固有のパターン:
- Azure MCP サーバーのアーキテクチャ(48 以上の Azure サービス)
- C#/.NET のコマンド実装パターン
- Foundry Agent Service を使用したリモート MCP
- 認証(Entra ID、OBO フロー、マネージド ID)
- Bicep テンプレートを使用したテストインフラストラクチャ
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から取得します - Microsoft MCP SDK:C#/.NET については Microsoft MCP パターンを参照してください
言語別の実装ガイド(フェーズ 2 で読み込む)
-
🐍 Python 実装ガイド - 以下を含む、Python/FastMCP の完全ガイド:
- サーバー初期化のパターン
- Pydantic モデルの例
@mcp.toolを使用したツール登録- 完全な動作例
- 品質チェックリスト
-
⚡ TypeScript 実装ガイド - 以下を含む、TypeScript の完全ガイド:
- プロジェクト構造
- Zod スキーマのパターン
server.registerToolを使用したツール登録- 完全な動作例
- 品質チェックリスト
-
🔷 Microsoft MCP パターン - 以下を含む、C#/.NET の完全ガイド:
- コマンド階層(BaseCommand → GlobalCommand → SubscriptionCommand)
- 命名規則(
{Resource}{Operation}Command) .AsRequired()/.AsOptional()を使用したオプションの処理- Azure Functions によるリモート MCP のデプロイ
- Bicep を使用したライブテストのパターン
評価ガイド(フェーズ 4 で読み込み)
- ✅ 評価ガイド - 評価の作成に関する完全なガイド。以下を含みます。
- 質問の作成ガイドライン
- 回答の検証方法
- XML 形式の仕様
- 質問と回答の例
- 提供されたスクリプトを使用した評価の実行
制限事項
- タスクが上記の範囲に明確に該当する場合にのみ、このスキルを使用してください。
- 出力を、環境固有の検証、テスト、または専門家によるレビューの代わりとして扱わないでください。
- 必要な入力、権限、安全上の境界、または成功基準が不足している場合は、作業を中断して確認を求めてください。