MCP BatchIt 使用说明

项目简介

MCP BatchIt 是一个基于 Model Context Protocol (MCP) 的聚合服务器,旨在优化 LLM 应用与 MCP 服务器的交互效率。它通过提供 'batch_execute' 工具,允许客户端将多个针对下游 MCP 服务器的工具调用合并到一个请求中执行,从而显著减少网络通信开销和令牌消耗。

主要功能点

  • 批量执行工具调用: 通过单一的 'batch_execute' 请求,可以执行多个原本需要独立发送的工具调用,减少客户端与服务器之间的往返次数。
  • 并行操作: 支持并发执行批处理中的子操作,通过 'maxConcurrent' 参数控制并发数量,提高整体执行速度。
  • 错误处理机制: 提供 'stopOnError' 选项,允许在批处理中遇到错误时立即停止后续操作,并支持设置单个操作的超时时间 'timeoutMs'。
  • 连接复用: 具备连接缓存功能,对于相同的目标 MCP 服务器,可以复用已建立的连接,减少重复连接的开销。

安装步骤

  1. 克隆仓库
    git clone https://github.com/ryanjoachim/mcp-batchit.git
    cd mcp-batchit
  2. 安装依赖
    npm install
  3. 构建项目
    npm run build
  4. 启动服务器
    npm start
    启动成功后,终端会显示 'mcp-batchit is running on stdio. Ready to batch-execute!',表明服务器已在 STDIO 模式下运行,等待接收 MCP 客户端的请求。

服务器配置 (MCP 客户端配置)

MCP 客户端需要配置与 BatchIt 服务器建立连接的信息。由于 BatchIt 默认通过 STDIO 运行,客户端需要配置启动 BatchIt 服务器的命令。以下是一个 JSON 格式的客户端配置示例,用于连接本地运行的 BatchIt 服务器:

{
  "serverName": "batchit-server",
  "transport": {
    "type": "stdio",
    "command": "node",
    "args": ["path/to/mcp-batchit/dist/index.js"] // 请替换为 mcp-batchit 项目 dist/index.js 文件的实际路径
  }
}

配置参数说明:

  • 'serverName': 为该 MCP 服务器连接配置的名称,客户端内部使用,可以自定义。
  • 'transport': 定义连接方式。
    • 'type': 设置为 '"stdio"',表示使用标准输入输出流进行通信。
    • 'command': 启动 BatchIt 服务器的命令,这里使用 'node' 命令。
    • 'args': 命令参数,指向 BatchIt 服务器的入口文件 'dist/index.js' 的路径。请务必根据 BatchIt 项目的实际存放路径修改此参数。

基本使用方法

要使用 BatchIt 服务器,MCP 客户端需要向 'batch_execute' 工具发送符合 MCP 协议的 JSON-RPC 请求。请求的 'params.arguments' 字段需要包含以下内容:

  • 'targetServer': 描述目标 MCP 服务器的信息,BatchIt 将把子操作转发到该服务器执行。
  • 'operations': 一个数组,包含要批量执行的操作。每个操作都是一个工具调用,包括 'tool' (工具名称) 和 'arguments' (工具参数)。
  • 'options' (可选): 控制批处理执行行为的选项,如 'maxConcurrent' (最大并发数), 'timeoutMs' (超时时间), 'stopOnError' (错误时停止) 等。

请求示例 (JSON-RPC):

{
  "method": "tools/call",
  "params": {
    "tool_call_id": "batch-test-1",
    "name": "batch_execute",
    "arguments": {
      "targetServer": {
        "name": "local-fs",
        "serverType": {
          "type": "filesystem",
          "config": {}
        },
        "transport": {
          "type": "stdio",
          "command": "npx",
          "args": ["@modelcontextprotocol/server-filesystem"]
        }
      },
      "operations": [
        {
          "tool": "read_file",
          "arguments": {
            "path": "README.md"
          }
        },
        {
          "tool": "list_files",
          "arguments": {
            "path": "."
          }
        }
      ],
      "options": {
        "maxConcurrent": 2,
        "stopOnError": true
      }
    }
  }
}

注意: 'targetServer' 中的 'transport' 配置描述了 BatchIt 如何连接到下游 MCP 服务器。客户端配置中配置的是如何连接到 BatchIt 服务器 本身

通过合理配置 'batch_execute' 工具的参数,可以有效地利用 BatchIt 服务器批量执行工具调用,提升 LLM 应用的效率和性能。

信息

分类

AI与计算