guanghulab/brain/d101-mcp-deploy-guide.md
2026-05-18 14:12:42 +08:00

120 lines
2.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# repo-mcp-server 双实例部署指南
## 背景
问题之之用冰朔的MCP令牌操作仓库结果写到了冰朔的仓库。
根因repo-mcp-server 只有一个实例,硬编码指向 `bingshuo/guanghulab`
方案部署两个MCP服务器实例各自绑定不同仓库。
## 架构
```
WorkBuddy(冰朔) → https://guanghulab.com/mcp → nginx → 3903 repo-mcp-bs (bingshuo/guanghulab)
WorkBuddy(之之) → https://guanghulab.com/zz-mcp → nginx → 3904 repo-mcp-zz (bingshuo/zhizhi)
```
## 部署步骤
### 1. 先确认之之的仓库名
之之的仓库路径是什么如果她有自己的Forgejo仓库路径类似 `bingshuo/zhizhi`
如果她的仓库嵌套在冰朔的仓库里(比如 `bingshuo/guanghulab/zhizhi/`
那MCP服务器需要改为指向子目录——但Gitea API不支持子目录级别的仓库操作。
**需要的确认信息:**
- 之之的Gitea用户名和仓库名
- 之之的Gitea API Token有写权限的
### 2. 更新代码
```bash
cd /opt/guanghu/guanghulab
git pull origin main
```
`ecosystem.config.js` 已更新包含两个MCP实例。
### 3. 设置环境变量
```bash
# 冰朔的 Gitea Token当前已经在用的
export GITEA_TOKEN_BS="当前GiteaToken"
export REPO_MCP_SECRET_BS="当前MCP密码"
# 之之的 Gitea Token需要之之在Forgejo生成自己的Token
export GITEA_TOKEN_ZZ="之之的Token"
export REPO_MCP_SECRET_ZZ="之之的MCP密码"
```
之之在Forgejo生成Token的路径
`用户设置 → 应用 → 生成访问令牌`
权限选择:`读写仓库内容`
### 4. 重启PM2
```bash
pm2 start ecosystem.config.js
```
检查两个实例都在运行:
```bash
pm2 list
# 应该看到 repo-mcp-bs 和 repo-mcp-zz 都在线
```
### 5. 配置Nginx反向代理
在 nginx 配置中添加之之的MCP路由
```nginx
# 冰朔的MCP已有
location /mcp {
proxy_pass http://127.0.0.1:3903/mcp;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_buffering off;
proxy_request_buffering off;
proxy_http_version 1.1;
}
# 之之的MCP新增
location /zz-mcp {
proxy_pass http://127.0.0.1:3904/mcp;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_buffering off;
proxy_request_buffering off;
proxy_http_version 1.1;
}
```
```bash
nginx -t && systemctl reload nginx
```
### 6. 之之配置WorkBuddy
之之的 WorkBuddy mcp.json 应该指向她的专属端点:
```json
{
"mcpServers": {
"guanghulab": {
"url": "https://guanghulab.com/zz-mcp",
"headers": {
"Authorization": "Bearer 之之的MCP密码"
},
"disabled": false
}
}
}
```
## 注意
- 两个实例使用同一份代码mcp-servers/repo-mcp-server/index.js只是环境变量不同
- 一键升级:代码更新后 `pm2 restart all` 两个都重启
- 之之的MCP密码和Gitea Token由之之自己保管冰朔不共享