MCP服务器部署工具

一个用于在OpenShift Local上部署和管理Model Context Protocol (MCP)服务器的工具,支持多种MCP服务器类型和Google Workspace集成。

  • by Daniel-Warner-X
  • 本地部署
  • 更新于
在 GitHub 查看 Daniel-Warner-X/mcp-deployment

使用说明

OpenShift本地上的MCP部署

本项目记录了模型上下文协议(MCP)服务器在OpenShift Local(CRC)上的部署。

我们建造了什么

  1. ToolHive MCP服务器 -使用ToolHive Kubernetes运算符部署
  2. 谷歌工作区MCP服务器 -Gmail、日历、驱动器等的自定义部署。
  3. 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凭据

  1. 首选 谷歌云控制台
  2. 创建项目或选择现有项目
  3. 启用API:Gmail、日历、驱动器、文档、表格等。
  4. 首选 API和服务 → 凭证
  5. 创建 OAuth 2.0客户端ID → 选择 桌面应用 类型
  6. 下载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流。调用工具时:

  1. 服务器返回授权URL
  2. 需要端口转发 对于OAuth回调:
    oc port-forward svc/workspace-mcp 8000:8000 -n toolhive-system
    
  3. 在浏览器中打开授权URL
  4. 使用Google帐户登录
  5. 回调路由通过端口转发到pod
  6. 重试工具调用

第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)。解决:

  1. 缩减未使用的部署
  2. 减少资源请求/限制
  3. 检查: 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

参考文献