使用说明
OpenShift本地上的MCP部署
本项目记录了模型上下文协议(MCP)服务器在OpenShift Local(CRC)上的部署。
我们建造了什么
- ToolHive MCP服务器 -使用ToolHive Kubernetes运算符部署
- 谷歌工作区MCP服务器 -Gmail、日历、驱动器等的自定义部署。
- ToolHive工作室 -用于本地MCP服务器管理的桌面UI
先决条件
所有先决条件均已验证并可用:
| 要求 | 版本 |
|---|---|
| Helm | v3.19.0 |
OpenShift命令行界面(oc) |
v4.19.9 |
| OpenShift本地(CRC) | 服务器v4.19.8 |
cluster-admin 访问 |
✅ (以以下身份登录 kubeadmin) |
| Node.js/npx | ✅ (供MCP检查员使用) |
第1部分:ToolHive操作员部署
第一步:创建项目
oc new-project toolhive-system
步骤2:克隆ToolHive存储库
git clone https://github.com/stacklok/toolhive
cd toolhive
git checkout toolhive-operator-0.2.18
步骤3:安装操作员CRD
helm upgrade -i toolhive-operator-crds toolhive/deploy/charts/operator-crds
步骤4:安装操作员
我们创建了一个自定义值文件(toolhive-values-crc.yaml)CRC有限内存的资源减少:
helm upgrade -i toolhive-operator toolhive/deploy/charts/operator \
--values toolhive-values-crc.yaml
注: 默认值需要太多内存。我们减少了:
- 内存请求:64Mi(从192Mi开始)
- 内存限制:128Mi(从384Mi开始)
步骤5:部署示例MCP服务器
获取服务器(可流式传输http):
oc create -f toolhive/examples/operator/mcp-servers/mcpserver_fetch.yaml
oc expose service mcp-fetch-proxy
标尺服务器(stdio传输):
oc create -f toolhive/examples/operator/mcp-servers/mcpserver_yardstick_stdio.yaml
oc expose service mcp-yardstick-proxy
注: 由于内存限制,Yardstick需要通过补丁减少资源:
oc patch mcpserver yardstick -n toolhive-system --type=merge \
-p '{"spec":{"resources":{"requests":{"cpu":"5m","memory":"32Mi"},"limits":{"cpu":"50m","memory":"64Mi"}}}}'
第2部分:Google Workspace MCP服务器部署
步骤1:创建Google OAuth凭据
- 首选 谷歌云控制台
- 创建项目或选择现有项目
- 启用API:Gmail、日历、驱动器、文档、表格等。
- 首选 API和服务 → 凭证
- 创建 OAuth 2.0客户端ID → 选择 桌面应用 类型
- 下载JSON凭据文件
重要提示: 凭据文件在本地存储为 client_secret_*.json 并且在 .gitignore.
步骤2:在OpenShift中构建容器映像
# Clone the repository
git clone https://github.com/taylorwilsdon/google_workspace_mcp.git
# Create build config
oc new-build --name=workspace-mcp --binary --strategy=docker -n toolhive-system
# Build from source
oc start-build workspace-mcp --from-dir=google_workspace_mcp --follow -n toolhive-system
步骤3:部署服务器
我们创造 workspace-mcp-openshift.yaml 与:
- OAuth凭据的Kubernetes密钥
- 具有适当资源限制的部署
- 内部访问服务
oc apply -f workspace-mcp-openshift.yaml
关键配置:
- 内存:384Mi限制(Python应用程序需要比典型应用程序更多的内存)
- 健康探测延迟:初始120秒(启动时下载紫外线包)
- OAuth和外部URL的环境变量
步骤4:公开路线
oc expose service workspace-mcp -n toolhive-system
步骤5:OAuth身份验证
服务器使用桌面OAuth流。调用工具时:
- 服务器返回授权URL
- 需要端口转发 对于OAuth回调:
oc port-forward svc/workspace-mcp 8000:8000 -n toolhive-system - 在浏览器中打开授权URL
- 使用Google帐户登录
- 回调路由通过端口转发到pod
- 重试工具调用
第3部分:使用MCP检查员进行测试
启动检查器
npx @modelcontextprotocol/inspector
连接到ToolHive获取服务器
- 运输类型: 流式HTTP
- 网址:
http://mcp-fetch-proxy-toolhive-system.apps-crc.testing/mcp - 连接类型: 通过代理
- 会话令牌: (来自码头运行检查员)
连接到谷歌工作区MCP
- 运输类型: 流式HTTP
- 网址:
http://workspace-mcp-toolhive-system.apps-crc.testing/mcp - 连接类型: 通过代理
- 会话令牌: (来自码头运行检查员)
第4部分:ToolHive Studio(桌面UI)
已下载并安装ToolHive Studio v0.14.1用于本地MCP服务器管理:
- 下载:
~/Downloads/ToolHive-arm64.dmg - 提供用于在本地浏览、安装和管理MCP服务器的GUI
当前状态
运行服务
oc get pods -n toolhive-system
| Pod | 状态 | 目的 |
|---|---|---|
toolhive-operator-* |
运行 | 管理MCPServer CRD |
workspace-mcp-* |
正在运行 | 谷歌工作区MCP服务器 |
可用路线
oc get routes -n toolhive-system
| 路由 | URL |
|---|---|
| 工作区mcp | http://workspace-mcp-toolhive-system.apps-crc.testing |
缩小(释放内存)
由于CRC内存限制,以下内容被缩减:
- 获取MCP服务器
- 标尺MCP服务器
要恢复它们,请执行以下操作:
# Re-create fetch
oc create -f toolhive/examples/operator/mcp-servers/mcpserver_fetch.yaml
oc expose service mcp-fetch-proxy
# Re-create yardstick
oc create -f toolhive/examples/operator/mcp-servers/mcpserver_yardstick_stdio.yaml
oc expose service mcp-yardstick-proxy
从你离开的地方继续
1.启动OpenShift本地
crc start
2.登录OpenShift
oc login -u kubeadmin -p <password> https://api.crc.testing:6443
3.检查状态
oc get pods -n toolhive-system
oc get routes -n toolhive-system
4.测试谷歌工作区MCP
启动端口转发(OAuth需要):
oc port-forward svc/workspace-mcp 8000:8000 -n toolhive-system &
启动MCP检查器:
npx @modelcontextprotocol/inspector
连接到: http://workspace-mcp-toolhive-system.apps-crc.testing/mcp
5.查看日志
oc logs -f deployment/workspace-mcp -n toolhive-system
此项目中的文件
| 文件 | 目的 | Git状态 |
|---|---|---|
.design/procedure.md |
原始ToolHive部署指南 | ✅ 轨道 |
README.md |
此文件 | ✅ 轨道 |
.gitignore |
保护敏感文件 | ✅ 轨道 |
client_secret_*.json |
Google OAuth凭据 | 🚫 忽略 |
workspace-mcp-*.yaml |
带有机密的部署文件 | 🚫 忽略 |
*-values*.yaml |
带秘密的Helm值 | 🚫 忽略 |
toolhive/ |
克隆的ToolHive仓库 | 🚫 忽略 |
google_workspace_mcp/ |
克隆的Google Workspace MCP仓库 | 🚫 忽略 |
toolhive-studio/ |
克隆的ToolHive Studio仓库 | 🚫 忽略 |
故障排除
内存问题(Pod待定)
CRC的内存有限(~10GB)。解决:
- 缩减未使用的部署
- 减少资源请求/限制
- 检查:
oc describe pod <pod-name> -n toolhive-system
OAuth回调失败
确保端口转发正在运行:
oc port-forward svc/workspace-mcp 8000:8000 -n toolhive-system
Pod OOM已填充
增加部署中的内存限制:
resources:
limits:
memory: 384Mi # or higher
健康探测器故障
增加下载包的Python应用程序的初始延迟:
livenessProbe:
initialDelaySeconds: 120