mcp-dynamic-orchestrator について
設定済みのMCPサーバーを見つけ、機能を調べ、生成されたクライアントコードからツールを呼び出すスキルです。レジストリを基盤とし、コード実行には制限があり、vmベースのサンドボックスは信頼できないコード向けの安全境界ではありません。
主な機能
- 01クエリやフィルターによるMCP検索
- 02必要な機能だけを確認
- 03コード実行によるMCPツール呼び出し
- 04レジストリによるサーバー設定
- 05許可するMCP IDの制限
活用シーン
- 01タスクに適したサーバーを探す
- 02ツール呼び出し前に利用可能な操作を確認する
- 03エージェントコードから設定済みMCPツールを呼び出す
MCP 対応
エージェントによるMCPサーバーの検索と機能確認を支援し、コード実行を通じて公開ツールを呼び出します。stdioとHTTPのトランスポートに対応しますが、コード実行とサンドボックスの安全性には制限があります。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ secondsky/ claude-skills --skill mcp-dynamic-orchestratorインストール後、Claude Code で/mcp-dynamic-orchestratorを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/mcp-protocol.mdregistry-schema.mdsecurity-model.mdtroubleshooting.mdscripts/describe_mcp.tsexecute_mcp_code.tslist_mcp_capabilities.ts詳細
概要
このスキルを使用すると、次のことができます。
- 利用可能な MCP サーバーと、その用途を確認します。
- すべてのツールスキーマを読み込まずに、特定の MCP の機能を調べます。
- 生成された
mcp-clients/*モジュールを介して MCP ツールを呼び出す TypeScript/JavaScript を実行します。
MCP サーバーが設定されていない場合、list_mcp_capabilities は空のリストと、ユーザーが MCP エントリを追加できるよう skills/mcp-dynamic-orchestrator/mcp.registry.json を案内するメッセージを返します。
このスキルは mcp.registry.json を読み取るため、そこに MCP エントリ(Cloudflare MCP など)を追加すると、ツールの接続設定を変更せずに自動的に検出できるようになります。
Cloudflare MCP の例
Cloudflare MCP サーバーは、次のように mcp.registry.json に設定できます。
{
"id": "cloudflare",
"title": "Cloudflare platform MCP",
"summary": "Interact with Cloudflare's MCP endpoint for documentation, examples, and platform operations exposed via the official Cloudflare MCP server.",
"mcp": {
"transport": "stdio",
"command": "npx",
"args": [
"mcp-remote",
"https://docs.mcp.cloudflare.com/sse"
]
},
"domains": ["cloudflare", "workers", "kv", "r2", "queues", "zero_trust", "networking", "security", "observability"],
"tags": ["cloudflare", "platform", "infra", "docs", "workers", "mcp"],
"examples": [
"Fetch Cloudflare Workers documentation for a specific API.",
"Search Cloudflare platform docs for queues or KV usage patterns.",
"Look up configuration guidance for Zero Trust or networking features."
],
"sensitivity": "low",
"visibility": "default",
"priority": 10,
"autoDiscoverTools": true
}
このエントリがある場合:
- クエリに Cloudflare、Workers、KV、R2、Queues などが含まれると、
list_mcp_capabilitiesはcloudflareを返します。 id: "cloudflare"を指定してdescribe_mcpを呼び出すと、Cloudflare MCP サーバーの簡潔なツール概要が表示されます。execute_mcp_codeを使うと、エージェントは次のような TypeScript を記述できます。
import * as cloudflare from "mcp-clients/cloudflare";
async function main() {
const docs = await cloudflare.search_docs({ query: "Workers KV" });
console.log(docs.summary);
}
mcp-clients/cloudflare で利用できる実際の関数は、MCP ツール定義から動的に生成されます。エージェントは常に次の手順を実行してください。
list_mcp_capabilitiesで検出します。describe_mcpで利用可能な操作を確認します。execute_mcp_codeを介してそれらの操作を使用します。
使用方法
- 自然言語のクエリまたはフィルターを指定して
list_mcp_capabilitiesを呼び出し、利用可能な MCP を確認します。 - MCP(例:
cloudflare)を選び、describe_mcpを呼び出して操作を把握します。 mcp-clients/<id>からインポートし、エクスポートされた関数を呼び出す TypeScript/JavaScript を記述します。execute_mcp_codeでコードを実行します。安全のため、必要に応じてallowedMcpIdsを制限してください。
ルール
- 個々の MCP ツールがトップレベルのツールであると想定しないでください。
- 常に「検出 → 説明 → コード生成 →
execute_mcp_code」の順に進めてください。 - 正確なパラメーター構造が必要な場合に限り、
describe_mcpでdetail: "schema"を指定してください。
既知の制限事項
サンドボックスのセキュリティ(重大)
⚠️ 現在のサンドボックス実装は、信頼できないコードに対して安全ではありません。
⚠️
vmベースのサンドボックスはセキュリティ境界ではありません。 Node のvmモジュールは脱出可能です(Node のドキュメントを参照)。この設定は偶発的な損害を減らすだけです。信頼できない MCP エントリを実行する場合は、適切な OS レベルの分離を施した別のプロセス/コンテナーで実行してください。
- セキュリティ境界ではない
vm.createContext()を使用します - プロトタイプ汚染や require() の操作などによって脱出される可能性があります
- Claude が生成したコード(信頼できるソース)のみに対して有効にしてください
MCP_ORCH_ENABLE_SANDBOX=1環境変数が必要です- セキュリティの詳細については
references/security-model.mdを参照してください
プロセス起動の強化(コマンドと環境変数の許可リスト)
mcp.registry.json にエントリを追加すると、オーケストレーターによって次の制御が適用されます。
- コマンド許可リスト — 許可されるのは
npx, npm, pnpm, yarn, bunx, bun, node, deno, uvx, uv, python, python3, cargo, goのみです(パスを含まない名前は PATH から解決されます)。絶対パス/相対パスとシェルは拒否されます。無効にするにはMCP_ORCH_ALLOW_RAW_COMMANDS=1を設定します(stderr に大きな警告が表示されます。完全に信頼できるレジストリでのみ使用してください)。 - 環境変数の拒否リスト —
PATH、NODE_OPTIONS、LD_PRELOAD、DYLD_INSERT_LIBRARIES、PYTHONPATHなどは、プロセス起動前にmcp.envから除去されます(除去されたキーごとに stderr に警告が表示されます)。
その他の制限事項
- TypeScript のコンパイルなし:
.ts形式のユーザーコードは失敗します - モジュール解決なし:
mcp-clients/*からのインポートは解決されません。$call()API を使用してください - 静的レジストリ:MCP の追加/削除には再起動が必要です
- 限定的なエラー処理:MCP 接続に失敗した場合、汎用エラーが返されます
詳細なトラブルシューティングについては、references/troubleshooting.md を参照してください。
本番環境のステータス
動作中 ✅:
list_mcp_capabilitiesによる検出(完全に機能)describe_mcpによる検査(完全に機能)- レジストリ管理(16 個の MCP を設定済み)
- MCP クライアント(stdio と HTTP のトランスポート)
- 安全性の制御(可視性、機密性、ポリシー)
制限あり 🟡:
- コード実行(環境変数フラグが必要。サンドボックスの安全性は不十分)
- テスト(基本的なスモークテストのみ)
予定 🔮:
- Worker スレッドによる安全なサンドボックス(v1.1)
- TypeScript コンパイルのサポート(v1.1)
- モジュール解決(v1.1)
- レジストリの動的更新(v1.2)
ロードマップの全容については、リポジトリのルートにある plan.md を参照してください。