分享一个同时部署多个 MCP 服务器的方法,支持抱抱脸 space

项目介绍

这是另一个能够在同一个 Docker 容器中部署多个 MCP server 的项目,支持部署到 Huggingface space。

项目地址:GitHub - BHznJNs/mcp-all-in-one: An easy way to deploy multiple MCP servers in one Docker container.
这个项目基于:GitHub - kfirtoledo/multi-mcp

部署到 Huggingface Space

点击这里创建 space,选择 Docker,然后在 Files 便签页添加下述文件(这里只是方便复制,请以 GitHub 上的文件为准):

Dockerfile:

# Build github mcp server
FROM golang:latest AS builder

WORKDIR /app
RUN CGO_ENABLED=0 go install github.com/github/github-mcp-server/cmd/github-mcp-server@latest
RUN ls -l /go/bin/


FROM alpine

# copy github mcp server binary
COPY --from=builder /go/bin/github-mcp-server /usr/local/bin/github-mcp-server

WORKDIR /app

# initiate python environment
RUN apk add --no-cache python3 py3-pip git py3-uv

# initiate nodejs environment
RUN apk add --no-cache nodejs npm

# initiate multi-mcp
RUN git clone https://github.com/kfirtoledo/multi-mcp.git .
RUN uv venv
RUN uv pip install -r requirements.txt

# copy the config file
COPY mcp.json /app/mcp.json

RUN mkdir /app/.uv-cache && chmod -R 777 /app/.uv-cache
ENV UV_CACHE_DIR=/app/.uv-cache
RUN mkdir /app/.npm-cache && chmod -R 777 /app/.npm-cache
ENV npm_config_cache=/app/.npm-cache
CMD ["uv", "run", "main.py", "--host", "0.0.0.0", "--port", "8080", "--config", "mcp.json", "--transport", "sse"]

mcp.json:

{
  "mcpServers": {
    "github": {
      "command": "/usr/local/bin/github-mcp-server",
      "args": ["stdio", "--toolsets", "all"]
    },
    "tavily": {
      "command": "npx",
      "args": ["-y", "[email protected]"]
    }
  }
}

在设置中添加 secrets:

变量名 示例值 描述
TAVILY_API_KEY tavily-9876543210fedcba tavily 密钥
GITHUB_PERSONAL_ACCESS_TOKEN ghp_9876543210fedcba gitHub 密钥

点击 Embed this Space 获取链接,如 https://xxx-xxx.hf.space/

在 MCP 客户端选择远程服务器(Remote servers),填入上面获取的链接,后面加上 sse(如 https://xxx-xxx.hf.space/sse)即可使用。


要使用其它的 MCP server 的话可以参考这里添加配置。


一些比较实用的、适合部署在远程服务器上的 MCP server

1 Like