名称: mcp-dynamic-orchestrator 描述: 通过中央注册表实现动态MCP服务器发现和代码模式执行。用于多MCP集成、工具发现、渐进披露,或遇到MCP上下文膨胀、变化服务器集、大工具集的情况。
关键词: MCP, 代码模式, 注册表, 动态工具, 工具发现, 渐进披露 许可证: MIT 允许的工具:
- list_mcp_capabilities
- describe_mcp
- execute_mcp_code
概述
使用此技能来:
- 发现可用的MCP服务器及其用途。
- 检查特定MCP的能力,而无需加载所有工具模式。
- 执行TypeScript/JavaScript,通过生成的
mcp-clients/*模块调用MCP工具。
如果未配置MCP服务器,list_mcp_capabilities将返回空列表和一条消息,指向skills/mcp-dynamic-orchestrator/mcp.registry.json,以便用户可以添加MCP条目。
此技能从mcp.registry.json读取,因此在那里添加MCP条目(例如Cloudflare MCP)会自动使其可发现,而无需更改工具连接。
Cloudflare MCP 示例
Cloudflare MCP服务器可以在mcp.registry.json中配置如下:
{
"id": "cloudflare",
"title": "Cloudflare平台MCP",
"summary": "与Cloudflare的MCP端点交互,用于文档、示例和通过官方Cloudflare MCP服务器公开的平台操作。",
"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": [
"获取特定API的Cloudflare Workers文档。",
"在Cloudflare平台文档中搜索队列或KV使用模式。",
"查找Zero Trust或网络功能的配置指南。"
],
"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.createContext(),这不是安全边界。 - 可以通过原型污染、require()操作等逃逸。
- 仅启用Claude生成的代码(受信任源)。
- 需要
MCP_ORCH_ENABLE_SANDBOX=1环境变量。 - 详见
references/security-model.md获取完整安全详情。
其他限制
- 无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。