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 注册表仅托管元数据,而非制品,因此在将服务器发布到 MCP 注册表之前,我们必须先将包发布到 npm。 确保分发生成文件已构建:步骤 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
故障排除
| 错误消息 | 操作 |
|---|---|
| ”包注册表验证失败” | 确保您的包包含所需的验证信息(例如,package.json 中的 mcpName 属性)。 |
| “注册表 JWT 令牌无效或已过期” | 通过运行 mcp-publisher login github 重新认证。 |
| “您没有权限发布此服务器” | 您的认证方法与服务器的命名空间格式不匹配。使用 GitHub 认证时,您的服务器名称必须以 io.github.your-username/ 开头。 |
后续步骤
- 了解 对其他包类型的支持。
- 了解 对远程服务器的支持。
- 了解如何 使用其他身份验证方法,例如 DNS 身份验证,它可为服务器名称前缀启用自定义域。
- 了解如何 使用 GitHub Actions 自动化发布。