Table of Contents

Table of Contents

site icon
2025.03.14 17
JavaScript批量操作效率优化开发效率
MCP BatchIt 是一个在 Model Context Protocol (MCP) 生态系统中的简单聚合服务器,旨在通过批量执行多个 MCP 工具调用来减少 AI 代理或 LLM 对话中的令牌使用、网络开销和重复上下文。它通过暴露一个单一的 `batch_execute` 工具,允许用户将多个操作合并为一个请求,从而显著提高效率。
View on GitHub

Overview

基本能力

产品定位

MCP BatchIt 是一个聚合服务器,专门用于批量执行多个 MCP 工具调用,以减少 AI 代理或 LLM 对话中的令牌使用和网络开销。

核心功能

  1. 批量执行工具:通过 batch_execute 工具批量执行多个 MCP 工具调用。
  2. 并行执行:支持并行执行多个子操作,通过 maxConcurrent 参数控制并发数。
  3. 超时和错误处理:每个子操作可以设置超时时间 (timeoutMs),并且可以通过 stopOnError 参数控制在遇到错误时是否停止后续操作。
  4. 连接缓存:重复使用与下游 MCP 服务器的连接,减少连接开销。

适用场景

  1. 多步文件操作:如批量读取、写入或创建文件。
  2. 文档生成:通过批量操作生成多个文档。
  3. 数据收集:批量收集多个文件或数据源的信息。

工具列表

  • batch_execute:批量执行多个 MCP 工具调用,返回一个合并的 JSON 结果。

常见问题解答

  1. Q1: 如果子操作 #2 依赖于子操作 #1 的结果,是否需要多次调用 BatchIt?
  2. 是的,BatchIt 不支持在同一请求中传递数据。
  3. Q2: 为什么有时会收到“Tool create_directory not found”错误?
  4. 可能是因为 transport 指向了 BatchIt 脚本本身而不是实际的 MCP 服务器。
  5. Q3: 是否可以同时使用并发和 stopOnError
  6. 是的,如果子操作失败,将跳过新的子操作,但已运行的子操作会并行完成。
  7. Q4: BatchIt 是否会每次都重新启动目标服务器?
  8. 如果指定 keepAlive: false,则会重新启动;否则会缓存连接直到空闲超时。
  9. Q5: 如果中间发生错误,是否会返回部分结果?
  10. 是的,已完成的操作会包含在最终响应中。

使用教程

使用依赖

确保已安装 Node.js 和 npm。

安装教程

git clone https://github.com/ryanjoachim/mcp-batchit.git
cd mcp-batchit
npm install
npm run build
npm start

调试方式

启动后,BatchIt 默认运行在 STDIO 上,可以通过发送 JSON-RPC 请求(tools/call 方法,name= "batch_execute")进行调试。

示例请求:

{
  "targetServer": {
    "name": "filesystem",
    "serverType": {
      "type": "filesystem",
      "config": {
        "rootDirectory": "C:/Users/Chewy/Documents/GitHub/ryanjoachim/mcp-batchit"
      }
    },
    "transport": {
      "type": "stdio",
      "command": "cmd.exe",
      "args": [
        "/c",
        "npx",
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "C:/Users/Chewy/Documents/GitHub/ryanjoachim/mcp-batchit"
      ]
    }
  },
  "operations": [
    {
      "tool": "read_file",
      "arguments": {
        "path": "C:/Users/Chewy/Documents/GitHub/ryanjoachim/mcp-batchit/package.json"
      }
    },
    {
      "tool": "read_file",
      "arguments": {
        "path": "C:/Users/Chewy/Documents/GitHub/ryanjoachim/mcp-batchit/README.md"
      }
    }
  ],
  "options": {
    "maxConcurrent": 2,
    "stopOnError": true,
    "timeoutMs": 30000
  }
}

许可证

该项目遵循 MIT 开源许可条款。