MetaMCP:统一的MCP中间件,管理您所有的MCP
MetaMCP是一个统一的中间件MCP(大模型客户端协议),旨在帮助您集中管理所有不同的MCP实例。它通过一个全栈的图形用户界面(GUI)应用(即本项目仓库)和一个本地MCP代理(见我们的最新npm仓库 mcp-server-metamcp
)协同工作来实现这一目标。
主要功能亮点:
- 统一管理多MCP服务器: 提供一个GUI应用界面,让您可以将多个MCP服务器集成在一起,并进行统一管理。
- 支持任何MCP客户端: 由于MetaMCP本身就是一个MCP服务器,它能够兼容并支持任何遵循MCP协议的客户端应用,例如Claude Desktop、Cursor等。
- 全面支持MCP元素: 在MCP框架下,MetaMCP支持管理prompts(提示词)、resources(资源)和tools(工具)。
- 多工作区支持: 支持创建和切换不同的工作区。例如,您可以在一个工作区中激活DB1相关的设置,然后在另一个工作区中切换到DB2,这样可以有效隔离不同项目或数据库的上下文,避免污染MCP客户端的语境。
- 工具级别开关: 您可以在应用中对单个工具进行启用或禁用操作。
可用性:
此应用是自托管的,完全免费并开源。同时,我们也会提供一个云版本。您可以使用云版本来体验应用的功能,但我强烈建议熟悉Docker的用户进行自托管:自托管将提供无限访问、更低延迟以及完全私密的自主操作体验。
您可以在 https://metamcp.com/ 查看演示视频,网站上也提供了一个概览截图供您参考。
经过验证的平台:
- Windows (在MCP官方TypeScript SDK 1.8.0更新后,我们已相应更新并验证可用) (详见 issue #15)
- Mac
- Linux
安装(自托管版本):
开始使用此自托管版本的MetaMCP App的最简单方法是克隆仓库并使用Docker Compose来运行它。
- 克隆仓库:
bash
git clone https://github.com/metatool-ai/metatool-app.git - 进入项目目录:
bash
cd metatool-app - 复制环境变量文件:
bash
cp example.env .env - 使用Docker Compose构建并以后台模式运行:
bash
docker compose up --build -d
然后,在您的浏览器中打开 http://localhost:12005
即可访问MetaMCP App。
建议全局安装npx(基于Node.js的mcp)和uvx(基于Python的mcp)。安装uv请参考:https://docs.astral.sh/uv/getting-started/installation/
连接到MetaMCP:
默认远程模式 SSE 端点:
推荐通过SSE(Server-Sent Events)端点连接MetaMCP:
- 使用HTTP头部
Authorization: Bearer <your-api-key>
的方式:
http://localhost:12007/sse
- 或者,如果客户端无法设置头部,可以使用基于URL的方式:
http://localhost:12007/api-key/<your-api-key>/sse
您的API key可以在MetaMCP App的“API Keys”页面获取。
本地访问:
即使您的工作区处于“默认远程模式”,您仍然可以使用上述SSE端点方式进行本地访问。
客户端配置示例:
MetaMCP作为一个MCP服务器,可以通过不同的方式与MCP客户端连接。以下是一些常见客户端的配置示例:
- Claude Desktop 配置:
在Claude Desktop的配置文件中,mcpServers
部分应如下配置:
json
{
"mcpServers": {
"MetaMCP": {
"command": "npx",
"args": [
"-y",
"@metamcp/mcp-server-metamcp@latest"
],
"env": {
"METAMCP_API_KEY": "<your api key>",
"METAMCP_API_BASE_URL": "http://localhost:12005"
}
}
}
}
此配置通过npx
运行@metamcp/mcp-server-metamcp
包,并通过环境变量METAMCP_API_KEY
和METAMCP_API_BASE_URL
将API key和MetaMCP App的基础URL传递给代理。 - Cursor 配置 (非Windows):
对于Cursor客户端,如果环境变量不容易配置,您可以使用命令行参数传递API key和基础URL:
npx -y @metamcp/mcp-server-metamcp@latest --metamcp-api-key <your-api-key> --metamcp-api-base-url http://localhost:12005
- Windows 上的 Cursor 配置:
在Windows上,您可以在Cursor中使用cmd /c
命令来执行npx命令:
cmd /c npx -y @metamcp/mcp-server-metamcp@latest --metamcp-api-key <your-api-key> --metamcp-api-base-url http://localhost:12005
或者,也可以使用JSON配置文件,类似于Claude Desktop,但需要在command
中指定cmd
,并在args
中包含/c
和其余npx命令参数:
json
{
"mcpServers": {
"MetaMCP": {
"command": "cmd",
"args": [
"/c",
"npx",
"-y",
"@metamcp/mcp-server-metamcp@latest"
],
"env": {
"METAMCP_API_KEY": "<your api key>",
"METAMCP_API_BASE_URL": "http://localhost:12005"
}
}
}
} - 独立 SSE 服务器:
您还可以单独启动MetaMCP的本地代理作为独立的SSE服务器,并在客户端直接连接到该服务器:
mcp-server-metamcp --metamcp-api-key <your-api-key> --transport sse --port 12006
然后使用如下JSON配置连接到该服务器:
json
{
"mcpServers": {
"MetaMCP": {
"url": "http://localhost:12006"
}
}
} - Smithery Windows 配置:
您还可以使用Smithery在云端的Docker容器中运行MCP代理,以获得最佳兼容性:
smithery run @metatool-ai/mcp-server-metamcp --config '{"metamcpApiKey":"<your api key>"}'
或者,在您的Claude Desktop配置文件中进行配置:
json
{
"mcpServers": {
"MetaMCP": {
"command": "smithery",
"args": [
"run",
"@metatool-ai/mcp-server-metamcp",
"--config",
"{\"metamcpApiKey\":\"<your api key>\"}"
]
}
}
}
同样,您需要从MetaMCP App的API Keys页面获取API key。
架构概览:
注意到prompts和resources也类似地被涵盖,类似于tools的管理方式。
以下序列图描述了MetaMCP的核心交互流程:
“`mermaid
sequenceDiagram
participant MCPClient as MCP Client (例如 Claude Desktop)
participant MetaMCPMCP as MetaMCP MCP 服务器
participant MetaMCPApp as MetaMCP App
participant MCPServers as MetaMCP App中安装的MCP服务器
MCPClient ->> MetaMCPMCP: 请求工具列表
MetaMCPMCP ->> MetaMCPApp: 获取工具配置和状态
MetaMCPApp ->> MetaMCPMCP: 返回工具配置和状态
loop 遍历每个已列出的MCP服务器
MetaMCPMCP ->> MCPServers: 请求 list_tools
MCPServers ->> MetaMCPMCP: 返回工具列表
end
MetaMCPMCP ->> MetaMCPMCP: 汇总工具列表
MetaMCPMCP ->> MCPClient: 返回汇总的工具列表
MCPClient ->> MetaMCPMCP: 调用工具 (call_tool)
MetaMCPMCP ->> MCPServers: 向目标MCP服务器 call_tool
MCPServers ->> MetaMCPMCP: 返回工具响应结果
MetaMCPMCP ->> MCPClient: 返回工具响应结果
“`
许可:
本项目遵循特定的开源许可协议。
(注意:原始README中关于Loading和License部分内容较少,在此仅作提及。)