一种在单个Docker容器中部署多个MCP服务器的简便方法。基于multi-mcp。
docker pull ghcr.io/one-mcp/one-mcp:latest
docker run -p 7860:7860 one-mcp:latest
你可以基于此仓库中的Dockerfile添加你需要的内容。 例如,你可以使用这样的Dockerfile来支持GitHub MCP。
你也可以初始化如rust和java这样的环境:
FROM ghcr.io/one-mcp/one-mcp:latest
# 初始化rust环境
RUN apk add --no-cache rust cargo
# 初始化java环境
RUN apk add --no-cache openjdk17-jre
# 正常运行服务
COPY mcp.json /app/mcp.json
EXPOSE 7860
CMD . .venv/bin/activate && hypercorn src.main:app --bind 0.0.0.0:7860
对于普通的MCP客户端,可以使用以下配置:
{
"mcpServers": {
"remote-mcp": {
"autoApprove": [],
"disabled": false,
"timeout": 60,
"type": "streamableHttp",
"url": "https://example.com/mcp",
"headers": {
"X-MCP-Token": "123456"
}
}
}
}
如果你的客户端不支持远程MCP服务器,或者你使用了某些客户端不支持的认证,请使用以下配置:
{
"mcpServers": {
"mcp-proxy": {
"command": "npx",
"args": [
"mcp-remote",
"https://example.com/sse",
"--header",
"Authorization: Bearer <your-auth-token>"
]
}
}
}
如果你使用的是Windows和Cline,可以尝试以下配置:
{
"mcpServers": {
"mcp-proxy": {
"command": "cmd",
"args": [
"/c",
"npx",
"mcp-remote",
"https://example.com/sse",
"--header", "Authorization: Bearer <your-auth-token>"
]
}
}
}
此工具将所有选定的MCP服务器聚合到一个服务器下,并使用如server_name::tool_name的命名空间来避免冲突并允许多个服务器暴露具有相同基本名称的工具。但对于某些MCP客户端,模型不会使用命名空间名称,而是单独使用工具名称,这会导致错误。
你可以尝试使用以下提示来避免这种情况:
当你尝试使用MCP工具时,请使用`mcp-proxy`作为服务器名称,并对工具名称和资源名称采取命名空间,例如:
1. 使用`github::add_issue_comment`而不是`add_issue_comment`
2. 使用`context7::resolve-library-id`而不是`resolve-library-id`
你可以通过更改mcp.json文件来添加所需内容。
详细的配置可以在这里找到。
此项目的认证由AUTH_TOKEN环境变量控制:
当启用认证时,你需要在请求中包含Authorization头,如下所示:
Authorization: Bearer YOUR_AUTH_TOKEN_VALUE
或:
X-MCP-Token: <Your-AUTH_TOKEN>