MCP 注册表目前处于预览阶段。正式可用前可能发生破坏性变更或数据重置。如果遇到问题,请在 GitHub 上反馈。
mcp-publisher CLI 工具,将用 TypeScript 编写的 MCP 服务器发布到 MCP 注册表。
前置条件
- Node.js — 本教程假定 MCP 服务器使用 TypeScript 编写。
- npm 账号 — MCP 注册表只托管元数据,不托管构件。在发布到 MCP 注册表前,我们会先将 MCP 服务器包发布到 npm,因此你需要一个 npm 账号。
- GitHub 账号 — MCP 注册表支持多种认证方式。为简化流程,本教程会使用基于 GitHub 的认证,因此你需要一个 GitHub 账号。
modelcontextprotocol/quickstart-resources 仓库复制 weather-server-typescript 服务器,跟随本教程操作:
package.json,替换为你自己的信息:
package.json
package.json
第 1 步:向包中添加验证信息
MCP 注册表会验证服务器底层包是否与其元数据匹配。对于 npm 包,需要在package.json 中添加 mcpName 属性:
package.json
mcpName 的值将作为该服务器在 MCP 注册表中的名称。
由于本教程会使用基于 GitHub 的认证,mcpName 必须以 io.github.my-username/ 开头。
第 2 步:发布包
MCP 注册表只托管元数据,不托管构件,因此必须先将包发布到 npm,再将服务器发布到 MCP 注册表。 确保已构建分发文件:第 3 步:安装 mcp-publisher
使用预构建二进制文件或 Homebrew 安装 mcp-publisher CLI 工具:
mcp-publisher 已正确安装:
Output
第 4 步:创建 server.json
mcp-publisher init 命令可以生成一个 server.json 模板文件,其中包含从项目中推导出的一些信息。
在服务器项目目录中运行 mcp-publisher init:
server.json 文件,你应该会看到类似内容:
server.json
server.json
server.json 中的 name 属性必须与 package.json 中的 mcpName 属性一致。
第 5 步:向 MCP 注册表认证
本教程会使用基于 GitHub 的认证方式向 MCP 注册表认证。 运行mcp-publisher login 命令发起认证:
Output
ABCD-1234)。完成后回到终端,你应该会看到类似输出:
Output
第 6 步:发布到 MCP 注册表
最后,使用mcp-publisher publish 命令将服务器发布到 MCP 注册表:
Output
Output
排障
| 错误消息 | 处理方式 |
|---|---|
| ”Registry validation failed for package” | 确认你的包包含所需的验证信息(例如 package.json 中的 mcpName 属性)。 |
| “Invalid or expired Registry JWT token” | 运行 mcp-publisher login github 重新认证。 |
| “You do not have permission to publish this server” | 你的认证方式与服务器命名空间格式不匹配。使用 GitHub 认证时,服务器名称必须以 io.github.your-username/ 开头。 |
后续步骤
- 了解其他包类型的支持。
- 了解远程服务器支持。
- 了解如何使用其他认证方式,例如可为服务器名称前缀启用自定义域名的 DNS 认证。
- 了解如何使用 GitHub Actions 自动发布。