介绍
MCPO 是一个基于Python的MCP代理服务,支持以下功能:
- MCP协议代理转发
- 支持fetch服务请求
- 可配置多个后端MCP服务器
- 提供健康检查接口
本篇教程提供了以下服务
- 绘图(grok2_images)
- 搜索(tavily-mcp)
- 天气地图 (baidu-map)
- GitHub仓库 (github)
- 文件操作 (filesystem)
- HTML预览 (edgeone-pages-mcp-server)
你也可以修改 entrypoint.sh
自行添加或替换服务
准备
-
注册 tavily 并创建 API_KEY:点击前往,免费调用1000次每月
-
注册 baidu 地图开放平台并创建 API_KEY:点击前往,普通功能5000次每天
-
注册 github 账号并创建 AccessToken:点击前往 ,需要 Repo 权限
配置
点击这里 创建空间,Space 名称建议使用随机字符,选择 Docker,然后在 Files 便签页添加或者修改下述文件
- 环境变量
变量名 | 示例值 | 描述 |
---|---|---|
XAIAPI_KEY | xai-1234567890abcdef | xai 密钥 |
XAIAPI_BASE_URL | https://api.xai.ai/v1 |
xai 基础URL |
TAVILY_API_KEY | tavily-9876543210fedcba | tavily 密钥 |
BAIDU_MAP_API_KEY | 9876543210fedcba | baidu 开发者 密钥 |
GITHUB_PERSONAL_ACCESS_TOKEN | ghp_9876543210fedcba | gitHub 密钥 |
- Dockerfile ``` FROM python:3.11-slim
RUN useradd -ms /bin/bash mcp
WORKDIR /app
RUN apt-get update &&
apt-get install -y curl unzip &&
curl -fsSL https://deb.nodesource.com/setup_18.x | bash - &&
apt-get install -y nodejs &&
apt-get clean && rm -rf /var/lib/apt/lists/*
COPY entrypoint.sh /app/ RUN chmod +x /app/entrypoint.sh
USER mcp RUN curl -fsSL https://bun.sh/install | bash
ENV BUN_INSTALL=”/home/mcp/.bun” ENV PATH=”${BUN_INSTALL}/bin:${PATH}”
USER root RUN pip install –no-cache-dir mcpo uv
RUN mkdir -p /app/.cache/uv && chown -R mcp:mcp /app
ENV XDG_CACHE_HOME=”/app/.cache”
USER mcp
EXPOSE 8000
ENTRYPOINT [“/app/entrypoint.sh”]
- entrypoint.sh
#!/bin/bash
cat «EOF > /app/config.json
{
“mcpServers”: {
“grok2_images”: {
“command”: “npx”,
“args”: [
“-y”,
“grok2-image-mcp-server@0.1.3”
],
“env”: {
“XAIAPI_KEY”: “${XAIAPI_KEY}”,
“XAIAPI_BASE_URL”: “${XAIAPI_BASE_URL}”
}
},
“tavily-mcp”: {
“command”: “npx”,
“args”: [
“-y”,
“tavily-mcp@0.1.2”
],
“env”: {
“TAVILY_API_KEY”: “${TAVILY_API_KEY}”
}
},
“baidu-map”: {
“command”: “npx”,
“args”: [
“-y”,
“@baidumap/mcp-server-baidu-map”
],
“env”: {
“BAIDU_MAP_API_KEY”: “${BAIDU_MAP_API_KEY}”
}
},
“github”: {
“command”: “npx”,
“args”: [
“-y”,
“@modelcontextprotocol/server-github”
],
“env”: {
“GITHUB_PERSONAL_ACCESS_TOKEN”: “${GITHUB_PERSONAL_ACCESS_TOKEN}”
}
},
“filesystem”: {
“command”: “npx”,
“args”: [
“-y”,
“@modelcontextprotocol/server-filesystem”,
“/home/mcp”
]
},
“edgeone-pages-mcp-server”: {
“command”: “npx”,
“args”: [“edgeone-pages-mcp”]
}
}
}
EOF
exec mcpo –config /app/config.json
- README.md
layout: mypost title: mcp emoji: 💻 colorFrom: pink colorTo: indigo sdk: docker pinned: false app_port: 8000 — ```
使用
这里以 Open-WebUI 为例,版本要求 v0.6.0+,建议更行到最新版本
-
使用管理员账号登录,左下角点击头像 - 管理员面板 - 设置 - 工具,点击 + 添加一个连接
-
URI 输入
https://xxx-xxx.hf.space/grok2_images
,密匙留空即可,点击保存,类似的,替换 grok2_images 添加其他服务 -
全部添加成功后先后点击右下角 保存和左上角 新对话,接着点击输入框的 + 号可以查看并开关已添加的MCP,建议需要时再打开