巨大なREST API(200以上のエンドポイント)をコンテキストを圧迫せずにMCPとしてラップする
使うタイミング: 自社APIに300のエンドポイントがあり、素朴なMCP実装ではすべてをシステムプロンプトに投入してしまい、レイテンシとヒット率が悪化している場合。
前提条件
- Python 3.9+ — pyenv / uv
- OpenAPI仕様またはエンドポイントカタログ — APIゲートウェイ / Swagger
フロー
-
concierge-sdkでスキャフォールドUsing concierge-sdk, scaffold an MCP server that wraps my OpenAPI spec at ./openapi.yaml. Make it use semantic search rather than listing all tools up front.✓ コピーしました→ ボイラープレートコード + 検索ハンドラー
-
ワークフローステージを定義Group the endpoints into 3 workflows: 'read operations', 'create operations', 'admin'. Each workflow exposes only its own tools.✓ コピーしました→ ツール許可リスト付きのワークフロー定義
-
ClaudeでテストConnect Claude Desktop to this server and verify that listing tools only shows the search tool + current workflow tools — not all 300.✓ コピーしました→ Claudeに表示されるツールが300個ではなく約10個
結果: システムプロンプトの長さで破綻することなく、大規模なAPIをLLMから利用可能にする。
注意点
- 説明文が類似しすぎていると、セマンティック検索が誤ったツールを返す — ツールごとに特徴的な一行説明を書き、ホールドアウトクエリで検索精度をテストする