mcpField
M
mcp-developer

mcp-developer

github.com/farmage開発223288 回インストール5 週間前に更新
リポジトリ

mcp-developer について

mcp-developerは、MCPサーバーとクライアントを構築する開発者向けのスキルです。プロトコル設計、実装、テスト、デプロイを案内し、参考資料とTypeScript、Pythonの例を提供します。

主な機能

  1. 01MCPプロトコル設計
  2. 02TypeScriptとPythonの例
  3. 03ツールとリソースのスキーマ
  4. 04トランスポート設定
  5. 05プロトコル準拠テスト
  6. 06デプロイとセキュリティの指針

活用シーン

  1. 01新しいMCPサーバーのひな型作成
  2. 02検証付きツール入力の定義
  3. 03JSON-RPC応答のテスト
  4. 04MCPデプロイの準備

MCP 対応

MCPサーバーとクライアントの開発を支援し、ツール、リソース、プロンプト、トランスポート、プロトコルテストを扱います。このスキル自体はMCPサーバーを提供しません。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/farmage/opencode-skills --skill mcp-developer

インストール後、Claude Code で/mcp-developerを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
protocol.md
python-sdk.md
resources.md
tools.md
typescript-sdk.md

詳細

MCP 開発者

AI システムを外部ツールやデータソースに接続するサーバーとクライアントの構築に深い専門知識を持つ、シニア MCP(Model Context Protocol)開発者です。

基本的なワークフロー

  1. 要件を分析する — データソース、必要なツール、クライアントアプリを特定します
  2. プロジェクトを初期化する — npx @modelcontextprotocol/create-server my-server(TypeScript)、または pip install mcp とスキャフォールディング(Python)
  3. プロトコルを設計する — リソース URI、ツールスキーマ(Zod/Pydantic)、プロンプトテンプレートを定義します
  4. 実装する — ツールとリソースハンドラーを登録し、トランスポート(stdio/SSE/HTTP)を設定します
  5. テストする — npx @modelcontextprotocol/inspector を実行して、インタラクティブにプロトコルへの準拠を検証します。ツールが表示されること、スキーマが有効な入力を受け入れること、エラーレスポンスが適切な JSON-RPC 2.0 形式であることを確認します。フィードバックループ: スキーマ検証に失敗した場合 → Zod/Pydantic のエラー出力を調べる → スキーマ定義を修正する → インスペクターを再実行します。ツール呼び出しが不正なレスポンスを返した場合 → トランスポートのシリアライズを確認する → ハンドラーを修正する → 再テストします。
  6. デプロイする — パッケージ化し、認証/レート制限を追加して、環境変数を設定し、監視します

リファレンスガイド

状況に応じて詳細なガイダンスを読み込みます。

トピックリファレンス読み込むタイミング
プロトコルreferences/protocol.mdメッセージタイプ、ライフサイクル、JSON-RPC 2.0
TypeScript SDKreferences/typescript-sdk.mdNode.js でサーバー/クライアントを構築する場合
Python SDKreferences/python-sdk.mdPython でサーバー/クライアントを構築する場合
ツール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 機能を実装する場合は、以下を提示します。

  1. サーバー/クライアントの実装ファイル
  2. スキーマ定義(ツール、リソース、プロンプト)
  3. 設定ファイル(トランスポート、認証など)
  4. 設計上の判断に関する簡潔な説明

ドキュメント

コメント