MCP 注册表目前处于预览阶段。在正式发布之前,可能会发生破坏性更改或数据重置。如果遇到任何问题,请在 GitHub 上报告。
包类型
MCP 注册表支持几种不同的包类型,每种包类型都有其自己的验证方法。npm 包
对于 npm 包,MCP 注册表目前仅支持 npm 公共注册表(https://registry.npmjs.org)。
npm 包在 server.json 中使用 "registryType": "npm"。例如:
server.json
所有权验证
MCP 注册表通过检查package.json 中的 mcpName 来验证 npm 包的所有权。mcpName 属性必须与 server.json 中的服务器名称匹配。例如:
package.json
PyPI 包
对于 PyPI 包,MCP 注册表目前仅支持官方 PyPI 注册表(https://pypi.org)。
PyPI 包在 server.json 中使用 "registryType": "pypi"。例如:
server.json
所有权验证
MCP 注册表通过检查包 README 中是否存在mcp-name: $SERVER_NAME 字符串来验证 PyPI 包的所有权(该 README 会成为 PyPI 上的包描述)。该字符串可以隐藏在注释中,但 $SERVER_NAME 部分必须与 server.json 中的服务器名称匹配。例如:
README.md
NuGet 包
对于 NuGet 包,MCP 注册表目前仅支持官方 NuGet 注册表(https://api.nuget.org/v3/index.json)。
NuGet 包在 server.json 中使用 "registryType": "nuget"。例如:
server.json
所有权验证
MCP 注册表通过检查包 README 中是否存在mcp-name: $SERVER_NAME 字符串来验证 NuGet 包的所有权。该字符串可以隐藏在注释中,但 $SERVER_NAME 部分必须与 server.json 中的服务器名称匹配。例如:
README.md
Cargo(Rust)包
对于 Cargo 包,MCP 注册表目前仅支持官方 crates.io 注册表(https://crates.io)。
Cargo 包在 server.json 中使用 "registryType": "cargo"。例如:
server.json
运行时模型
Cargo 的运行时模型不同于 npm、PyPI 和 NuGet。cargo install <crate> 会将编译后的二进制文件放置在 PATH 中的 ~/.cargo/bin,之后 MCP 客户端会直接按名称调用它。不存在与 npx(npm)、uvx(PyPI)或 dnx(NuGet、.NET 10 SDK Preview 6+)等效的、针对每次调用的运行器——安装只需执行一次,运行时按二进制文件名称执行。出于这一原因,上面的 Cargo 示例特意省略了 runtimeHint。
Rust MCP 作者有两种一等分发路径:
- Cargo(
registryType: cargo)——通过 crates.io 以源代码形式分发。最终用户需要 Rust 工具链(rustup)才能运行cargo install。这符合 Rust 生态系统的惯例,也与 Rust CLI 通常的发布方式一致。 - MCPB(
registryType: mcpb)——通过 GitHub 或 GitLab Releases 分发预构建的二进制文件。最终用户无需工具链。如果优先考虑“无需 Rust 工具链”,这是正确的选择。
所有权验证
MCP 注册表通过检查包 README 中是否存在mcp-name: $SERVER_NAME 字符串来验证 Cargo 包的所有权(该 README 会被渲染为 HTML,并由 crates.io 的静态 CDN 提供)。$SERVER_NAME 部分必须与 server.json 中的服务器名称匹配。例如:
README.md
<!-- mcp-name: ... --> 隐藏注释形式不适用于 cargo——该令牌不会出现在验证器检查的渲染后 HTML 中。Cargo 作者必须将 mcp-name: 令牌作为可见的 markdown 文本包含在内。在 Links 部分添加一个简单的项目符号是推荐的方式。
Docker/OCI 镜像
对于 Docker/OCI 镜像,MCP 注册表目前支持:- Docker Hub (
docker.io) - GitHub 容器注册表 (
ghcr.io) - Google Artifact Registry(任何
*.pkg.dev域名) - Azure 容器注册表 (
*.azurecr.io) - Microsoft 容器注册表 (
mcr.microsoft.com)
server.json 中使用 "registryType": "oci"。例如:
server.json
identifier 的格式是 registry/namespace/repository:tag。例如,docker.io/user/app:1.0.0 或 ghcr.io/user/app:1.0.0。标签也可以指定为摘要。
所有权验证
MCP 注册表通过检查io.modelcontextprotocol.server.name 注解来验证 Docker/OCI 镜像的所有权。io.modelcontextprotocol.server.name 注解的值必须与 server.json 中的服务器名称匹配。例如:
Dockerfile
MCPB 包
对于 MCPB 包,MCP 注册表目前支持通过 GitHub 或 GitLab 发布版本托管的 MCPB 工件。 MCPB 包在server.json 中使用 "registryType": "mcpb"。例如:
server.json
验证
MCPB 包 URL(server.json 中的 identifier)必须包含字符串 “mcp”。这可以是 .mcpb 文件扩展名的一部分,也可以是存储库名称的一部分。
server.json 中的包元数据必须包含一个 fileSha256 属性,其中包含 MCPB 工件的 SHA-256 哈希值,可以使用 openssl 命令计算: