使用说明
项目简介
MCP Hub Server 是一个中心枢纽,用于连接和管理多个独立的 MCP 服务器。通过它,LLM 客户端可以访问汇总后的所有工具,有效突破单个客户端工具数量的限制。此外,它还可以帮助用户组织和管理分散的工具,按需暴露工具给 LLM,降低潜在的误用风险。
主要功能点
- 连接和管理多个 MCP 服务器: 允许用户配置并自动连接到多个 MCP 服务器。
- 统一工具列表: 提供 'list-all-tools' 工具,汇总展示所有已连接 MCP 服务器提供的工具。
- 工具调用转发: 提供 'call-tool' 工具,允许用户指定服务器和工具名称,调用来自其他 MCP 服务器的工具。
- 配置灵活: 支持通过配置文件、环境变量或命令行参数指定 MCP 服务器连接信息。
安装步骤
- 克隆仓库
git clone https://github.com/warpdev/mcp-hub-mcp cd mcp-hub-mcp - 安装依赖
或者使用 yarn 或 pnpm:npm installyarn installpnpm install - 构建项目
或者使用 yarn 或 pnpm:npm run buildyarn buildpnpm build - 运行服务器
或者使用 yarn 或 pnpm:npm start
开发模式运行:yarn startnpm run dev
服务器配置
MCP Hub Server 的配置文件用于指定需要连接的其他 MCP 服务器。你需要创建一个 'mcp-config.json' 文件,或者通过环境变量 'MCP_CONFIG_PATH' 或命令行参数 '--config-path' 指定配置文件路径。
配置文件 'mcp-config.json' 格式如下:
{ "mcpServers": { "serverName1": { "command": "command", // 启动目标 MCP 服务器的命令 "args": ["arg1", "arg2", ...], // 启动命令的参数 (可选) "env": { "ENV_VAR1": "value1", ... } // 环境变量 (可选) }, "serverName2": { "command": "anotherCommand", "args": ["arg1", "arg2", ...] } } }
配置示例: 连接两个 MCP 服务器
{ "mcpServers": { "filesystem": { // 服务器名称,自定义 "command": "npx", // 使用 npx 启动 "args": [ "-y", "@modelcontextprotocol/server-filesystem", // 文件系统 MCP 服务器 "/Users/username/Desktop", // 文件系统访问路径 "/Users/username/Downloads" // 文件系统访问路径 ] }, "other-server": { // 服务器名称,自定义 "command": "node", // 使用 node 启动 "args": ["path/to/other-mcp-server.js"] // 其他 MCP 服务器的启动脚本路径 } } }
MCP 客户端配置 (例如 Cursor):
要让 MCP 客户端连接到 MCP Hub Server,需要在客户端的 'mcp.json' 配置文件中添加如下配置。这里的 'command' 和 'args' 是用于启动 MCP Hub Server 的命令。
{ "mcpServers": { "hub-server": { // 服务器名称,自定义 "command": "npx", // 使用 npx 启动 "args": [ "-y", "mcp-hub-mcp", // 启动 MCP Hub Server "--config-path", // 指定 MCP Hub Server 的配置文件路径 "/Users/username/mcp-config.json" // MCP Hub Server 的配置文件路径 ] } } }
注意: '/Users/username/mcp-config.json' 是 MCP Hub Server 用来连接其他 MCP 服务器的配置文件,而不是 MCP 客户端自身的配置文件。
基本使用方法
- 启动 MCP Hub Server 并确保已正确配置 'mcp-config.json' 文件,使其能够连接到其他 MCP 服务器。
- 在 MCP 客户端 (如 Cursor) 中配置连接到 MCP Hub Server,配置示例见上方 MCP 客户端配置 部分。
- 在 LLM 中使用 'list-all-tools' 工具。指示 LLM 首先调用 'list-all-tools' 工具,获取所有可用工具的列表。客户端发送的 JSON-RPC 请求示例如下:
MCP Hub Server 将返回包含所有已连接服务器工具信息的 JSON 响应。{ "name": "list-all-tools", "arguments": {} } - 使用 'call-tool' 工具调用特定服务器的工具。 当需要调用特定工具时,使用 'call-tool' 工具,并指定 'serverName' (目标服务器名称), 'toolName' (工具名称) 和 'toolArgs' (工具参数)。客户端发送的 JSON-RPC 请求示例如下:
MCP Hub Server 将转发请求到指定的 MCP 服务器并返回工具执行结果。{ "name": "call-tool", "arguments": { "serverName": "filesystem", // 要调用工具的服务器名称 (配置文件中定义的) "toolName": "readFile", // 要调用的工具名称 "toolArgs": { // 工具参数 "path": "/Users/username/Desktop/example.txt" } } }
信息
分类
AI与计算