MCP服务器聚合工具

一个轻量级的中心,将多个MCP服务器连接成一个,提供单一连接点、工具命名空间、内置脚本和自动重连功能。

  • by vaayne
  • Go
  • 本地部署
  • 3 星标
  • 更新于
在 GitHub 查看 vaayne/mcphub

使用说明

MCP集线器

一个轻量级的集线器,将多个MCP服务器连接成一个。将其视为MCP的反向代理——你的AI助手与集线器对话,集线器将请求路由到正确的服务器。

为什么?

如果你使用多个MCP服务器(GitHub、文件系统、数据库等),分别管理它们会变得很混乱。MCP Hub为您提供:

  • 一个连接 而不是很多-您的客户端连接到集线器,完成
  • 工具名称间距 -当两台服务器具有 search 工具(githubSearch vs filesSearch)
  • 内置脚本 -链工具调用与JavaScript一起使用
  • 自动重新连接 -服务器有时会崩溃,集线器会处理

三种使用方法

服务器模式 -快跑 mh serve -c config.json 启动一个聚合多个MCP服务器的集线器。您的AI客户端连接到集线器,集线器将工具调用路由到正确的后端。

CLI模式 -使用 mh list, mh inspect, mh invoke 直接从您的终端与MCP服务器交互。非常适合调试、测试或脚本编写。

技术模式 -发现以下技能 技能s.sh 或者从MCP服务器生成轻量级的“技能”文件。技能教会AI代理如何按需使用工具,而无需将所有模式加载到上下文中。使用 mh skills find/add 浏览生态系统,或关注 mcp-skill-gen 从任何MCP服务器创建技能的工作流程。

所有模式都支持相同的连接类型:通过配置的本地服务器、通过URL的远程HTTP/SSE端点或stdio子进程。

快速开始

# Install
curl -fsSL https://raw.githubusercontent.com/vaayne/mcphub/main/scripts/install.sh | sh

# Create a config file
cat > config.json << 'EOF'
{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"]
    }
  }
}
EOF

# Run as hub server
mh serve -c config.json

# Or explore tools from CLI
mh list -c config.json
mh invoke -c config.json filesystemReadFile '{"path": "/tmp/test.txt"}'

配置

配置文件是简单的JSON。每个服务器都有一个名称和连接详细信息:

{
  "mcpServers": {
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": { "GITHUB_TOKEN": "ghp_xxx" }
    },
    "remote-api": {
      "transport": "http",
      "url": "https://api.example.com/mcp",
      "headers": { "Authorization": "Bearer ${API_TOKEN}" }
    },
    "streaming": {
      "transport": "sse",
      "url": "http://localhost:8080/sse"
    }
  }
}

运输类型:

  • stdio (默认)-运行本地命令
  • http -连接到远程HTTP端点
  • sse -流媒体服务器的服务器发送事件

其他选项:

  • enable: false -禁用服务器而不将其删除
  • required: true -如果此服务器无法连接,则启动失败
  • timeout -连接超时(秒)(仅限http/sse)
  • tlsSkipVerify -跳过TLS验证(不在生产中使用)

CLI使用情况

服务器模式

# Start hub on stdio (default, for AI clients)
mh serve -c config.json

# Start hub on HTTP (for web clients)
mh serve -c config.json -t http -p 8080

命令行接口命令模式

# From config file (connects to all servers defined in config)
mh list -c config.json
mh inspect -c config.json githubSearchRepos
mh invoke -c config.json githubSearchRepos '{"query": "mcp"}'

# From remote URL
mh list -u https://mcp.example.com
mh invoke -u http://localhost:3000 -t sse some_tool '{"arg": "value"}'

# From stdio subprocess
mh list --stdio -- npx @modelcontextprotocol/server-everything

# Enable debug logging
mh list -c config.json --verbose

内置工具

该中心包括一些自己的工具:

search -按名称或描述在所有连接的服务器上查找工具。

execute -运行可以调用任何工具的JavaScript。适用于链式操作:

const repos = mcp.callTool("githubSearchRepos", { query: "mcp" });
const readme = mcp.callTool("githubGetFile", {
  repo: repos[0].name,
  path: "README.md",
});
readme;

JS运行时是有意限制的——只有同步,没有网络访问,超时15秒。它用于粘合代码,而不是应用程序逻辑。

refreshTools -从服务器重新加载工具列表(在服务器重新启动后很有用)。

安全说明

该中心采取了偏执的态度:

  • 命令已验证-无shell注入,无路径遍历
  • Shell解释器(bash、sh)作为命令被阻止
  • 环境变量已被净化(否 LD_PRELOAD 技巧)
  • JavaScript是沙盒的-没有 eval,没有 Promise,没有 fetch

也就是说,你仍然在运行任意的MCP服务器。仅配置您信任的服务器。

从源头构建

git clone https://github.com/vaayne/mcphub.git
cd mcphub
go build -o mh .

# Or with mise
mise run build

需要Go 1.23+。

技能

技能是扩展AI代理功能的模块化包。MCP Hub支持两种工作流程:

发现并安装技能

浏览并安装以下技能 技能s.sh开放式代理技能生态系统:

# Search for skills by keyword
mh skills find react
mh skills find "code review"

# Install a skill
mh skills add anthropics/skills@mcp-builder
mh skills add vercel-labs/agent-skills@react-best-practices

技能被安装到 .agents/skills/<skill-name>/ 在当前目录中。

从MCP服务器生成技能

如果你使用的是人工智能编码代理,将所有MCP工具加载到上下文中可能会很昂贵。相反,生成一个“技能”文件,教代理如何按需发现和使用工具。

# Preview tools from a remote MCP server
mh list -u https://mcp.exa.ai

# Preview tools from config
mh list -c config.json

然后使用 mcp-skill-gen 工作流(in skills/mcp-skill-gen/)生成包含以下内容的SKILL.md:

  • 服务URL/config和传输类型
  • 可用工具列表及说明
  • 命令用于 mh list, mh inspect, mh invoke

当AI需要工具时,它会读取技能,运行 mh inspect 要获取模式,请执行以下操作 mh invoke 无需预先加载所有工具模式。

故障排除

“已超过上下文截止日期” -服务器启动时间过长。检查该命令是否存在并独立工作。

“不允许使用异步函数” -The execute 该工具仅支持同步代码。删除任何 async/await 或 Promise 使用。

未找到工具 -记住,camelCase中的工具以服务器前缀命名: serverNameToolName.使用 mh list 查看可用工具。

许可证

麻省理工学院

链接