在计算巢中接入自定义 MCP

更新时间:
复制 MD 格式

本文介绍如何把公开软件包、私有软件包、远程 MCP 服务或现有 HTTP API 接入计算巢 MCP 市场。完成接入后,可以在服务实例中统一查看、配置和验证 MCP 服务。

选择接入方式

根据 MCP 当前的交付形式选择接入方式。

现有资源

选择的类型

计算巢如何处理

npm 公开包

NPX、公开包

使用包名和启动参数部署 MCP 运行时

PyPI 公开包

UVX、公开包

使用包名和启动参数部署 MCP 运行时

JavaScript 私有包

NPX、私有包

从 OSS 读取 .tgz 文件并部署 MCP 运行时

Python 私有包

UVX、私有包

从 OSS 读取 .whl.tar.gz 文件并部署 MCP 运行时

已有 SSE

SSE

ACS 直连远程 MCP;FC 通过轻量函数代理 SSE

只有 HTTP API

AI 网关 HTTP 转 MCP

转换为 MCP 后,再接入计算巢

NPX 和 UVX 适合需要计算巢托管运行环境的场景。远程 SSE 和Streamable HTTP 适合已部署完成、可直接访问的 MCP 服务。

接入公开软件包

适用于MCP 已经发布到 npm 或 PyPI 公开仓库,只需填写包名和启动参数,不需要上传文件或配置 OSS。

  1. 打开计算巢控制台,进入目标 MCP 服务实例。

  2. 单击配置 MCP,在 自定义 MCP 页签中,单击 新增自定义 MCP

  3. 上传图标,并填写名称和服务标识,服务标识在当前实例内必须唯一。

  4. JavaScript 包选择 NPX,Python 包选择 UVX,并将包类型设置为 公开包

  5. 填写包名、启动参数和 MCP 所需的环境变量,保存配置并提交变配。

参数示例

计算巢会自动补充 uvxnpx -y。参数输入框中不要重复填写安装命令。
  • UVX

    mcp-server-fetch
  • NPX

    @modelcontextprotocol/server-filesystem /data

接入私有软件包

适用于MCP 尚未发布到 npm 或 PyPI,需要上传标准软件包。计算巢会把文件保存到 OSS,并在部署时读取该文件。

准备软件包

Python

Python MCP 必须满足以下要求:

JavaScript

JavaScript MCP 必须满足以下要求:

  • 使用标准 package.json

  • 使用 .tgz 文件。

  • 通过 bin 字段提供可执行入口。

  • 可参考 JavaScript MCP 示例仓库准备项目。

上传并部署软件包

准备好软件包后,在计算巢控制台完成上传和部署。

  1. 打开 新增自定义 MCP 页面,选择 NPXUVX

  2. 将包类型设置为 私有包

  3. 选择 OSS Bucket 所在地域和 Bucket。

  4. 上传软件包。计算巢会把文件保存到 mcp-package/ 目录。

  5. 填写启动参数和环境变量。

  6. 保存配置并提交变配。

启动命令示例

  • UVX

    uvx /mcp-package/<文件名>
  • NPX

    需要填写 package.json 中声明的 bin 命令
    npx -y --package /mcp-package/<文件名> <bin命令>

配置 OSS 权限

如果使用计算巢自动创建的 OSS Bucket,模板会配置运行时访问权限,通常不需要额外授权。

如果使用已有 Bucket,操作用户必须能上传软件包,服务运行时必须能读取软件包。

使用方

最小权限

资源范围

控制台操作用户

oss:ListBuckets

当前账号下的 Bucket 列表

控制台操作用户

oss:GetBucketInfooss:ListObjects

目标 Bucket

控制台操作用户

oss:PutObjectoss:GetObject

mcp-package/*

FC 运行角色

oss:ListObjects

目标 Bucket

FC 运行角色

oss:GetObject

mcp-package/*

下面的 RAM 策略展示了上传用户所需的最小权限,需将 <bucket-name> 替换为实际 Bucket 名称。

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["oss:ListBuckets"],
      "Resource": ["acs:oss:*:*:*"]
    },
    {
      "Effect": "Allow",
      "Action": ["oss:GetBucketInfo", "oss:ListObjects"],
      "Resource": ["acs:oss:*:*:<bucket-name>"]
    },
    {
      "Effect": "Allow",
      "Action": ["oss:GetObject", "oss:PutObject"],
      "Resource": ["acs:oss:*:*:<bucket-name>/mcp-package/*"]
    }
  ]
}
重要
  • 如果 Bucket 配置了限制性 Bucket Policy,必须允许服务实例创建的运行角色读取 mcp-package/*。不要把 Bucket 或软件包设置为公共读。

  • 当前 FC 模板已包含 OSS 挂载和运行角色授权。使用 ACS 部署私有包前,必须确认模板版本已包含从 OSS 下载私有包的逻辑。仅挂载空目录无法读取上传的软件包。

接入远程 SSE 或 Streamable HTTP 服务

如果 MCP 已经部署并提供可访问地址,可以直接保存远程连接。ACS 会把远程 MCP 直接注册到 AI 网关,不为它创建 Deployment、Service 或 Pod。FC 当前仅支持远程 SSE,并会创建轻量函数完成协议代理。

  1. 打开 新增自定义 MCP 页面,填写图标、名称和服务标识。

  2. 根据服务端声明选择 SSE 或Streamable HTTP。

    Streamable HTTP 当前仅适用于 ACS 版本
  3. 粘贴服务端生成的完整 URL,保存配置并提交变配。

协议必须与地址匹配,例如SSE的常见地址格式为https://<域名>/mcp-servers/<服务名>/sseStreamable HTTP 常见地址不带 /sse。路径仅用于识别常见格式,必须使用服务端实际生成的完整地址,不要根据示例手工拼接。

认证说明(适用于ACS)

远程 SSE 或 Streamable HTTP 服务要求认证时,在环境变量中使用 header:<请求头名>。计算巢会移除 header: 前缀,并在 AI 网关转发请求时写入对应的上游请求头。

  • Bearer Token: 填写header:Authorization=Bearer <令牌>

  • API Key 请求头: 填写header:x-api-key=<API Key>。

重要
  • 不要配置 Host、Content-Length、Connection、Transfer-Encoding 或 Upgrade 等网关管理的请求头,也不要把凭据拼进 URL。header:* 只负责 AI 网关到远程服务的上游认证。

  • 部署时开启的 API Key 认证保护调用方到计算巢 MCP 地址,两层可同时启用且互不替代。

  • FC 当前不支持 header:* 写法。

  • 认证值会随服务实例参数保存,请使用专用、最小权限且可轮换的凭据。

将 HTTP API 转换为 MCP

适用于后端只提供普通 HTTP API,可以先通过 AI 网关转换为 MCP,再把生成的 SSE 或 Streamable HTTP 地址接入计算巢。

准备资源

开始前,请准备以下资源:

  • 一个可用的 AI 网关实例,以及调用方可访问的域名。

  • 一个 AI 网关能够访问的 HTTP 后端服务。

  • 一份 OpenAPI 或 Swagger 文件,或一份可手工配置的工具定义。

  • 一个已部署的计算巢 MCP 服务实例。

测试域名适合功能验证,但存在每日调用次数限制。生产环境推荐使用已备案并配置 HTTPS 证书的自定义域名。

创建 MCP 服务

在 AI 网关中创建后端服务,再把 HTTP 接口转换为 MCP。

  1. 登录 AI 网关控制台,选择目标地域,在左侧导航栏选择服务

  2. 单击创建服务,并根据后端位置选择函数计算、域名、固定地址或容器服务,在左侧导航栏选择 MCP 管理

  3. 单击创建 MCP 服务,将协议设置为 HTTP 接口转 MCP,将使用场景设置为 单服务

  4. 选择后端服务,填写 MCP 服务名称和描述,并选择访问域名。

  5. 单击保存并发布

如果 AI 网关 MCP 已开启消费者认证,ACS 接入计算巢时需要把消费者认证请求头配置为上游请求头。例如,AI 网关要求 x-api-key 时,在自定义 MCP 的环境变量中填写 header:x-api-key 和对应的 API Key。计算巢 MCP 实例自身的 API Key 认证仍可独立开启,两层认证互不替代。

添加并调试工具

创建 MCP 服务后,添加工具并验证两种 MCP 协议。

  1. 打开刚创建的 MCP 服务,单击添加工具

  2. 上传 OpenAPI 文件、粘贴 Swagger 定义,或使用自定义 YAML 配置工具。

  3. 检查工具名称、描述、输入参数和 HTTP 路径。

    如果后端需要认证,配置基础认证、令牌认证或密钥认证。
  4. 打开调试页面,选择 SSE 或 Streamable HTTP。依次完成连接、获取工具和测试调用。

  5. 调试通过后,复制与目标协议对应的地址,并按 接入远程 SSE 或 Streamable HTTP 服务完成接入。

常见问题

先根据错误发生的阶段定位问题,再检查对应配置。

现象

处理方法

OSS Bucket 无法选择

检查 oss:ListBucketsoss:GetBucketInfo 权限。

软件包上传失败

检查 mcp-package/*oss:PutObject 权限。

软件包部署后找不到文件

检查运行角色的 oss:GetObject 权限和 Bucket Policy。

软件包启动失败

检查软件包格式、命令行入口、启动参数和必填环境变量。

远程 MCP 返回 401403

ACS 请检查变量名是否为 header:<请求头名>、变量值是否完整,以及远程服务要求的是 Authorization、x-api-key 还是其他请求头;同时确认调用方携带的是计算巢 MCP 实例自己的 API Key。

远程 MCP 返回 404

重新复制服务端生成的完整地址,不要手工拼接路径。

AI 网关中找不到目标 MCP

检查网关 ID、MCP 部署状态和名称匹配;共享网关还需排除 serverCode 重名。

无法获取工具

确认服务完成 MCP 初始化,并检查 tools/list 是否返回非空列表。