使用说明
项目简介
MCP工具链服务器是一个实现了 Model Context Protocol (MCP) 的应用后端,它作为一个 MCP 服务器,核心功能是将多个独立的 MCP 工具串联起来,形成一个工具链。通过 'mcp_chain' 工具,用户可以定义一系列 MCP 工具的执行顺序,并将前一个工具的输出作为后一个工具的输入,从而实现复杂的数据处理和分析流程。这种链式调用方式可以有效减少与大型语言模型 (LLM) 的交互次数,降低 Token 使用量,并提升整体工作效率。
主要功能点
- MCP工具链执行: 核心功能,允许用户定义和执行由多个 MCP 工具组成的链式工作流。
- 结果传递 (CHAIN_RESULT): 支持将链中前一个工具的执行结果自动传递给后一个工具作为输入,无需手动处理中间数据。
- JSONPath 数据过滤: 集成 JSONPath 功能,可以在工具链中灵活地提取和过滤 JSON 数据,精确控制工具之间的数据流动。支持 'inputPath' 和 'outputPath' 参数,用于在工具输入和输出时应用 JSONPath 表达式。
- 自动工具发现: 能够自动发现和注册配置中其他 MCP 服务器提供的工具,方便用户在工具链中调用这些工具。
- 降低Token消耗: 通过工具链的机制,减少了不必要的 LLM 交互,从而降低了 Token 使用量,节省成本。
安装步骤
本服务器基于 Node.js 开发,安装前请确保已安装 Node.js (v16 或更高版本) 和 npm 或 yarn。
方法一:通过 npm 全局安装 (推荐)
打开终端,运行以下命令进行全局安装:
npm install -g @thirdstrandstudio/mcp-tool-chainer
安装完成后,即可在全局环境中使用 'mcp-tool-chainer' 命令。
方法二:从源代码安装
-
克隆仓库到本地:
git clone https://github.com/thirdstrandstudio/mcp-tool-chainer.git cd mcp-tool-chainer -
安装依赖:
npm install -
构建项目:
npm run build
安装完成后,可以使用 'node index.js' 命令启动服务器。
服务器配置
MCP 客户端 (例如 Claude Desktop, Cursor 等) 需要配置 MCP 服务器的启动信息才能连接和使用本服务器提供的工具。配置信息通常在 'claude_desktop_config.json' 或 'mcp.json' 文件中,以 JSON 格式配置。
如果通过 npm 全局安装:
{ "mcpServers": { "mcp_tool_chainer": { "command": "npx", "args": ["-y", "@thirdstrandstudio/mcp-tool-chainer", "'claude_desktop_config.json' or 'mcp.json'"], "env": {} } } }
- 'mcpServers': 定义 MCP 服务器的配置。
- 'mcp_tool_chainer': 为本工具链服务器定义的服务器名称,可以自定义。
- 'command': 启动服务器的命令,'npx' 用于执行全局安装的 npm 包。
- 'args': 传递给 'npx' 命令的参数,'-y' 表示自动确认,'@thirdstrandstudio/mcp-tool-chainer' 是要执行的包名,"'claude_desktop_config.json' or 'mcp.json'" 是传递给服务器的配置文件路径,注意这里需要替换为实际的配置文件路径,如果不需要配置文件,可以省略此参数。
- 'env': 环境变量,默认为空。
如果从源代码安装:
{ "mcpServers": { "mcp_tool_chainer": { "command": "node", "args": ["/path/to/mcp-tool-chainer/index.js", "config.json"], "env": {} } } }
- 'command': 启动服务器的命令,'node' 用于执行 Node.js 程序。
- 'args': 传递给 'node' 命令的参数,'/path/to/mcp-tool-chainer/index.js' 需要替换为 实际的 'index.js' 文件路径,'config.json' 是传递给服务器的配置文件路径,请确保 'config.json' 文件存在并且配置正确,或者根据实际情况修改为其他配置文件名或省略此参数。
重要提示: 请确保将本工具链服务器配置为 MCP 客户端配置中的最后一个服务器。因为本服务器启动时会尝试发现其他已配置的 MCP 服务器的工具,如果它不是最后一个,可能会因为工具发现不完整而影响工具链的正常使用。
基本使用方法
配置完成后,在 MCP 客户端中,您可以使用 'mcp_chain' 工具来执行工具链。
示例:链式调用浏览器工具和 XPath 工具
假设您已经配置了 'mcp_browser' 和 'mcp_xpath' 两个 MCP 服务器,您可以使用以下方式调用 'mcp_chain' 工具:
// JavaScript 代码示例 (在支持 MCP 客户端的环境中) const result = await callTool("mcp_chain", { "mcpPath": [ { "toolName": "mcp_browser_mcp_fetch_url", // 浏览器工具的抓取网页工具 "toolArgs": "{\"url\": \"https://example.com\"}" // 抓取 example.com 首页 }, { "toolName": "mcp_xpath_xpath", // XPath 工具 "toolArgs": "{\"xml\": CHAIN_RESULT, \"query\": \"//h1\"}" // 使用 XPath 提取网页中的 <h1> 标签内容,CHAIN_RESULT 表示使用上一步的网页内容作为输入 } ] }); console.log(result); // 打印工具链的最终结果
在上述示例中,'mcpPath' 数组定义了工具链的步骤:
- 第一步: 调用 'mcp_browser_mcp_fetch_url' 工具抓取 'https://example.com' 网页。
- 第二步: 调用 'mcp_xpath_xpath' 工具,使用 XPath 查询 '//h1' 从上一步抓取的网页内容 ('CHAIN_RESULT') 中提取 '<h1>' 标签的内容。
'callTool("mcp_chain", ...)' 会执行整个工具链,并将最终结果返回。您可以根据需要配置更复杂的工具链,实现各种自动化工作流程。
注意: 'toolName' 需要使用 完整的工具名称 (通常是 '服务器名称_工具名称' 的格式),您可以使用 'chainable_tools' 工具或 'discover_tools' 工具来查看当前可用的工具列表。
信息
分类
开发者工具