
Table of Contents

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 对话中的令牌使用和网络开销。
核心功能
- 批量执行工具:通过
batch_execute
工具批量执行多个 MCP 工具调用。 - 并行执行:支持并行执行多个子操作,通过
maxConcurrent
参数控制并发数。 - 超时和错误处理:每个子操作可以设置超时时间 (
timeoutMs
),并且可以通过stopOnError
参数控制在遇到错误时是否停止后续操作。 - 连接缓存:重复使用与下游 MCP 服务器的连接,减少连接开销。
适用场景
- 多步文件操作:如批量读取、写入或创建文件。
- 文档生成:通过批量操作生成多个文档。
- 数据收集:批量收集多个文件或数据源的信息。
工具列表
batch_execute
:批量执行多个 MCP 工具调用,返回一个合并的 JSON 结果。
常见问题解答
- Q1: 如果子操作 #2 依赖于子操作 #1 的结果,是否需要多次调用 BatchIt?
- 是的,BatchIt 不支持在同一请求中传递数据。
- Q2: 为什么有时会收到“Tool create_directory not found”错误?
- 可能是因为
transport
指向了 BatchIt 脚本本身而不是实际的 MCP 服务器。 - Q3: 是否可以同时使用并发和
stopOnError
? - 是的,如果子操作失败,将跳过新的子操作,但已运行的子操作会并行完成。
- Q4: BatchIt 是否会每次都重新启动目标服务器?
- 如果指定
keepAlive: false
,则会重新启动;否则会缓存连接直到空闲超时。 - Q5: 如果中间发生错误,是否会返回部分结果?
- 是的,已完成的操作会包含在最终响应中。
使用教程
使用依赖
确保已安装 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
}
}