mcpField
M
MCP-of-MCPS

MCP-of-MCPS

本地服务
github.com/eliavamarAI 与智能体1045 周前更新

关于 MCP-of-MCPS

MCP-of-MCPS 是面向多 MCP 服务场景中 AI Agent 的元服务器。它支持语义化工具发现、按需加载工具架构,并可直接在工具间传递数据执行代码。

主要功能

  1. 01按任务描述搜索工具
  2. 02列出各服务中的工具名称
  3. 03按需加载所选工具架构
  4. 04运行跨工具的 JavaScript 工作流
  5. 05保留分析后的工具元数据

适用场景

  1. 01在已连接的服务中查找合适工具
  2. 02只加载任务所需工具的定义
  3. 03在工具间传递文件内容,避免经模型中转
  4. 04组合跨 MCP 服务的多步工作流

MCP 相关

将已配置的 MCP 服务聚合到单一端点,并向 MCP 客户端提供发现、架构查询和代码执行工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"of-mcps": {
"command": "npx",
"args": [
"-y",
"@dbestai/mcp-of-mcps"
]
}
}
}
启动命令npx -y @dbestai/mcp-of-mcps

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@dbestai/mcp-of-mcps

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

MCP of MCPs

MCP of MCPs 是一个元服务器,可将你的所有 MCP 服务合并为一个智能端点。 它让 AI Agent 能够即时发现工具、按需加载架构并以极低成本执行,从而不再浪费 token 和时间。

借助持久化工具元数据、语义搜索以及工具间的直接代码执行,它能将混乱的多服务配置转变为快速、高效且无幻觉的工作流。 它还会在需要时自动分析工具的输出架构,并在不同会话间保留这些架构,以确保行为一致。

简而言之:
🚀 自动化更快速
🧠 推理更清晰
💰 大幅减少 token 消耗
📦 持久化且经过分析的架构元数据

替代文本

工具 1:semantic_search_tools

语义发现工具 - 通过描述你想完成的任务来搜索工具。无需浏览所有工具名称——或者在工具名称无法清楚表明用途时——只需用通俗的英语描述你的意图(例如,“发送通知”“查询数据库”“处理图像”),即可立即获取最相关的工具。无需加载任何完整的工具定义,就能快速、轻量地了解所有已连接服务中有哪些可用工具。

// Search by task/intent, not by tool names:
// Input: { query: "send notifications to a channel", limit: 5 }
// Returns only relevant matches (ranked by similarity):
// [
//   {
//     serverName: "slack",
//     toolName: "post_message",
//     description: "Post a message to a Slack channel",
//     similarityScore: 0.94,
//     fullPath: "slack/post_message"
//   },
// ....
//   // Only 5 most relevant tools returned - fast and lightweight!
// ]

适合快速查找:

  • 描述你需要做什么,而不是需要哪个工具
  • 无需加载完整架构即可立即获得结果
  • 在毫秒内发现所有服务中的功能
  • 不增加 token 开销——只提供轻量的工具名称和描述
工具 2:get_mcps_servers_overview

发现工具 - 此工具仅返回工具名称,不包含完整架构,让 Agent 能在几秒内轻松了解可用工具,而不必预先加载数百个详细定义。它只展示可用内容,不提供过多细节,从而避免混淆和幻觉,同时消除加载延迟。

// Returns:
// google_drive/download_file
// google_drive/upload_file
// slack/send_message
// database/execute_query
// ...
工具 3:get_tools_overview

自省工具 - 仅加载你实际需要的工具,而不是全部 30 多个工具,通过按需加载节省数千个 token。这种按需方式能加快响应速度,并提供聚焦的上下文,从而减少混淆、提高准确性。

// Input: ["google_drive/download_file", "slack/send_message"]
// Returns: Full tool definitions with:
// - Parameter schemas
// - Required vs optional fields
// - Example usage code
工具 4:run_functions_code

执行工具 - 数据可在工具间直接流转,无需经由模型来回传递,因此传输一个 2 MB 的文件只需约 100 个 token,而不是 50,000 多个。模型只会看到简洁的最终结果,而不会看到嘈杂的中间数据;复杂工作流可一次执行完成,无需处理延迟。

// Write code that:
// - Calls multiple tools in sequence or parallel
// - Processes and transforms data
// - Implements complex logic and error handling
// - Returns only final results to the model

完整流程如何解决所有问题

需要完成任务时,先使用 get_mcps_servers_overview 获取所有服务中可用工具名称的轻量列表——这样无需加载任何架构,就能快速查看有哪些工具可用。如果找不到任务所需的工具,或者工具名称含义不明确,就使用 semantic_search_tools,通过通俗的英语描述你的意图(例如,“向某个频道发送通知”)来搜索。它利用 AI 驱动的语义理解,立即返回按相似度排序的最相关工具。确定所需的具体工具后,使用 get_tools_overview 加载这些工具的定义及其完整架构和参数——这样可避免加载无关工具,节省数千个 token,并为模型提供聚焦的上下文。最后,使用 run_functions_code 执行工作流,让数据在内存中直接于工具间流转,并将中间结果保留为原生对象,而不是序列化为 token,只有最终结果会返回给模型。这种模式可大幅降低 token 使用量,通过避免不必要的模型处理来加快执行速度,并在每个步骤中只展示相关信息,从而消除幻觉。

真实案例

传统方法:

TOOL CALL: gdrive.getDocument(documentId: "abc123")
  → returns full transcript text (loads into context: 50,000 tokens)
  
TOOL CALL: salesforce.updateRecord(...)
  → model writes entire transcript again (doubles the tokens: +50,000 tokens)

总计:处理了 100,000+ 个令牌,响应缓慢

使用 MCP of MCPs:

const transcript = (await gdrive.getDocument({ documentId: 'abc123' })).content;
await salesforce.updateRecord({
  objectType: 'SalesMeeting',
  data: { Notes: transcript }
});

代码在一次操作中执行。数据直接在工具之间流转。只有最终结果会返回给模型。

总计:处理了 2,000 个令牌(减少 98.7%)⚡

主要优势

✅ 响应更快 - 无需预先加载所有工具
✅ 减少幻觉 - 模型只会看到相关信息
✅ 渐进式披露 - 按需加载工具
✅ 代码组合 - 使用熟悉的 JavaScript 编排复杂工作流
✅ 持久化工具元数据 - 自动跨会话保留工具输出架构

设置

前置条件
  • Node.js
  • npm 或 yarn
  • 已配置好要聚合的 MCP 服务
添加到 Cline

将以下内容添加到 Cline MCP 设置文件中:

选项 1:使用内联配置

{
  "mcpServers": {
    "mcp-of-mcps": {
      "autoApprove": [],
      "disabled": false,
      "timeout": 60,
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@dbestai/mcp-of-mcps",
        "--config",
        "[{\"name\":\"weather\",\"command\":\"npx\",\"args\":[\"-y\",\"@h1deya/mcp-server-weather\"]},{\"name\":\"time\",\"command\":\"uvx\",\"args\":[\"mcp-server-time\"]}]"
      ]
    }
  }
}

选项 2:使用配置文件

首先,创建一个 config.json 文件,指定要连接的 MCP 服务:

[
  {
    "name": "weather",
    "command": "npx",
    "args": ["-y", "@h1deya/mcp-server-weather"]
  },
  {
    "name": "time",
    "command": "uvx",
    "args": ["mcp-server-time"]
  }
]

然后在 Cline 设置中引用此文件:

{
  "mcpServers": {
    "mcp-of-mcps": {
      "autoApprove": [],
      "disabled": false,
      "timeout": 60,
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@dbestai/mcp-of-mcps",
        "--config-file",
        "/absolute/path/to/your/config.json"
      ]
    }
  }
}

配置选项:

  • autoApprove:无需审批的工具名称数组(例如,["get_mcps_servers_overview"])
  • disabled:设为 false 以启用服务
  • timeout:工具执行超时时间,单位为秒(默认值:60)
  • type:连接类型,MCP 服务始终使用 "stdio"

了解更多

此实现遵循 Anthropic 文章中介绍的 MCP 代码执行模式:
📖 使用 MCP 执行代码:构建更高效的 Agent

参与贡献

欢迎贡献!欢迎提交 Pull Request。

许可证

ISC

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。