通用 MCP Server
提示
本文适用于托管任意通用的本地运行的 MCP Server 。
对于以 npx/uvx 方式运行的 MCP Server ,云开发平台提供了一键托管的能力,详情可以阅读 托管现有的 MCP Server / 以 npx/uvx 运行的 MCP Server 。
介绍
如果你想将只支持本地运行的 MCP Server 部署到云开发,来提供远程 MCP 服务,可以使用云开发托管本地 MCP Server 的功 能。
托管后的 MCP Server 具备以下能力:
- 支持远程 Streamable HTTP 访问
- 支持 ApiKey 认证,保护 MCP Server 代码和密钥信息的安全
- 支持在 Cursor 等支持 MCP 的客户端访问
- 支持在 云开发 Agent 使用,构建复杂的自动化 Agent
- 可提交上架到云开发 MCP 市场,审核通过后即可让更多人来部署使用
支持托管的 MCP Server 需要满足以下条件:
- 不限语言/框架,Java/Python/GoLang/PHP 均可
- 支持 MCP 的 Stdio Transport
我们会采用云托管服务来运行你的 MCP Server,因此需要你的 MCP Server 支持 Stdio Transport,即支持通过 Stdio 传输数据。
在容器内网我们会通过 cloudbase-mcp-transformer 工具将本地 MCP Server 的 Stdio 转换为远程 MCP 服务,从而实现远程访问,同时支持鉴权/认证/一个服务支持多会话/一个服务支持多实例。
本篇文章将会使用社区中的 MongoDB MCP 进行演示
最终代码地址:托管本地 MCP 到云开发服务端示例项目
准备工作
- 在开始前请确保已经开通云开发环境
- 本地具有 Node.js 环境(建议使用 Node.js LTS 版本),用于运行
@cloudbase/cli命令来部署云托管服务
创建空白 MCP Server
在云开发 AI+ 中创建一个 MCP Server,选择空白模板, 名称和服务名可以根据自己需要进行命名
准备代码
准备一个本地 MCP Server,例如支持 npx、uv 等命令运行的 MCP Server,本文将使用 MongoDB MCP 进行演示
可以下载 托管本地 MCP 到云开发服务端示例项目 来进行测试
其中包含 3 个文件
Dockerfile:云开发 MCP 服务 Dockerfile 文件DOC.md:MCP 服务的展示文档(选填,需要上架云开发 MCP 时必填)mcp-meta.json: 云开发 MCP 服务的配置文件(选填,需要上架云开发 MCP 时必填)
编写 Dockerfile
Dockerfile 内容如下:
# 使用 Node.js 官方 Alpine 镜像作为基础
FROM node:20-alpine
# 配置腾讯云镜像源
RUN npm config set registry https://mirrors.cloud.tencent.com/npm/ \
&& yarn config set registry https://mirrors.cloud.tencent.com/npm/
# 配置 Alpine 国内镜像源
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.tencent.com/g' /etc/apk/repositories
# 安装 Python(自动创建 python/pip 链接)
RUN apk update \
&& apk add --no-cache python3 py3-pip \
&& apk add curl
# 如果你的项目是一个 python 项目,推荐全局安装,提升运行态的性能
# 例如 RUN pip3 install --break-system-packages mysql-mcp-server
RUN pip3 install --break-system-packages uv
## 全局安装必须的 npm 依赖
## @cloudbase/mcp-transformer 必须安装
## 如果你的项目是一个 npm 包,推荐全局安装,提升运行态的性能
RUN npm install -g @cloudbase/mcp-transformer@1.0.0-beta.18 mongo-mcp
# 固定暴露端口
EXPOSE 80
# 启动命令
## 这里是使用 cloudbase-mcp-transformer 命令来将 Stdio 转换为远程 MCP 服务
## --stdioCmd 是指定需要转换的命令,其中可以引用环境变量,例如 $USER、$PASSWORD、$HOST、$PORT、$DATABASE
## 在创建云托管服务的时候,用户可以指定环境变量
## 如果你的项目依赖环境变量,需要在 mcp-meta.json 中进行声明
## --port 是指定转换后的服务端口,默认为 3000
CMD cloudbase-mcp-transformer stdioToStreamable --stdioCmd "mongodb-mcp mongodb://$USER:$PASSWORD@$HOST:$PORT/$DATABASE?authSource=admin ./" --port 80
完成 Dockerfile 编写后,我们可以将 MCP Server 部署至云托管了。