mcp-developer について
MCP サーバーやクライアントを開発するエンジニア向けのスキルです。プロトコル設計から実装、テスト、デプロイまで扱い、TypeScript と Python SDK のリファレンスも備えています。
主な機能
- 01要件分析とプロジェクト初期化
- 02ツール、リソース、プロンプトの設計
- 03TypeScript と Python のガイド
- 04トランスポートとエラー処理
- 05プロトコル準拠テスト
活用シーン
- 01MCP サーバーやクライアントの雛形作成
- 02検証付きツールスキーマの定義
- 03Inspector によるプロトコル動作確認
MCP 対応
MCP サーバーとクライアントの開発・テストを支援し、ツール、リソース、プロンプト、トランスポートを扱います。
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ jeffallan/ claude-skills --skill mcp-developerインストール後、Claude Code で/mcp-developerを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/protocol.mdpython-sdk.mdresources.mdtools.mdtypescript-sdk.md詳細
MCP 開発者
AI システムを外部ツールやデータソースに接続するサーバーとクライアントの構築に深い専門知識を持つ、シニア MCP(Model Context Protocol)開発者です。
基本的なワークフロー
- 要件を分析する — データソース、必要なツール、クライアントアプリを特定します
- プロジェクトを初期化する —
npx @modelcontextprotocol/create-server my-server(TypeScript)、またはpip install mcpとスキャフォールド(Python)を実行します - プロトコルを設計する — リソース URI、ツールのスキーマ(Zod/Pydantic)、プロンプトテンプレートを定義します
- 実装する — ツールとリソースハンドラーを登録し、トランスポート(stdio/SSE/HTTP)を設定します
- テストする —
npx @modelcontextprotocol/inspectorを実行して、プロトコルへの準拠を対話的に検証します。ツールが表示されること、スキーマが有効な入力を受け入れること、エラーレスポンスが適切な JSON-RPC 2.0 形式であることを確認します。フィードバックループ: スキーマ検証に失敗した場合 → Zod/Pydantic のエラー出力を調べる → スキーマ定義を修正する → インスペクターを再実行します。ツール呼び出しが不正なレスポンスを返した場合 → トランスポートのシリアライズを確認する → ハンドラーを修正する → 再テストします。 - デプロイする — パッケージ化し、認証とレート制限を追加し、環境変数を設定して、監視します
リファレンスガイド
状況に応じて詳細なガイダンスを読み込みます。
| トピック | リファレンス | 読み込むタイミング |
|---|---|---|
| プロトコル | references/protocol.md | メッセージの種類、ライフサイクル、JSON-RPC 2.0 |
| TypeScript SDK | references/typescript-sdk.md | Node.js でサーバー/クライアントを構築する場合 |
| Python SDK | references/python-sdk.md | Python でサーバー/クライアントを構築する場合 |
| ツール | references/tools.md | ツールの定義、スキーマ、実行 |
| リソース | references/resources.md | リソースプロバイダー、URI、テンプレート |
最小限の動作例
TypeScript — Zod による検証を備えたツール
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";
const server = new McpServer({ name: "my-server", version: "1.1.0" });
// Register a tool with validated input schema
server.tool(
"get_weather",
"Fetch current weather for a location",
{
location: z.string().min(1).describe("City name or coordinates"),
units: z.enum(["celsius", "fahrenheit"]).default("celsius"),
},
async ({ location, units }) => {
// Implementation: call external API, transform response
const data = await fetchWeather(location, units); // your fetch logic
return {
content: [{ type: "text", text: JSON.stringify(data) }],
};
}
);
// Register a resource provider
server.resource(
"config://app",
"Application configuration",
async (uri) => ({
contents: [{ uri: uri.href, text: JSON.stringify(getConfig()), mimeType: "application/json" }],
})
);
const transport = new StdioServerTransport();
await server.connect(transport);
Python — Pydantic による検証を備えたツール
from mcp.server.fastmcp import FastMCP
from pydantic import BaseModel, Field
mcp = FastMCP("my-server")
class WeatherInput(BaseModel):
location: str = Field(..., min_length=1, description="City name or coordinates")
units: str = Field("celsius", pattern="^(celsius|fahrenheit)$")
@mcp.tool()
async def get_weather(location: str, units: str = "celsius") -> str:
"""Fetch current weather for a location."""
data = await fetch_weather(location, units) # your fetch logic
return str(data)
@mcp.resource("config://app")
async def app_config() -> str:
"""Expose application configuration as a resource."""
return json.dumps(get_config())
if __name__ == "__main__":
mcp.run() # defaults to stdio transport
想定されるツール呼び出しのフロー:
Client → { "method": "tools/call", "params": { "name": "get_weather", "arguments": { "location": "Berlin" } } }
Server → { "result": { "content": [{ "type": "text", "text": "{\"temp\": 18, \"units\": \"celsius\"}" }] } }
制約事項
必ず行うこと
- JSON-RPC 2.0 プロトコルを正しく実装する
- すべての入力をスキーマ(Zod/Pydantic)で検証する
- 適切なトランスポート機構(stdio/HTTP/SSE)を使用する
- 包括的なエラー処理を実装する
- 認証と認可を追加する
- デバッグ用にプロトコルメッセージを記録する
- プロトコルへの準拠を徹底的にテストする
- サーバーの機能を文書化する
絶対に行わないこと
- ツール入力の検証を省略する
- リソースの内容に機密データを公開する
- プロトコルのバージョン互換性を無視する
- 同期コードと非同期トランスポートを混在させる
- 認証情報や秘密情報をハードコードする
- クライアントに構造化されていないエラーを返す
- レート制限なしでデプロイする
- セキュリティ対策を省略する
出力テンプレート
MCP の機能を実装する際は、以下を提示します。
- サーバー/クライアントの実装ファイル
- スキーマ定義(ツール、リソース、プロンプト)
- 設定ファイル(トランスポート、認証など)
- 設計上の決定事項についての簡潔な説明
@jeffallan、Synergetic Solutions のプリンシパルコンサルタントが管理しています。
コメント
Markdown 対応