跳到主要内容

MCP注册表(2025-09-08)————通过REST API消费注册表数据

· 阅读需 5 分钟

翻译自:https://github.com/modelcontextprotocol/registry/blob/main/docs/guides/consuming/use-rest-api.md

集成模式和最佳实践:构建使用MCP注册表数据的应用程序。

关键细节

基本URL: https://registry.modelcontextprotocol.io

认证:只读访问不需要认证

  • GET /v0/servers - 列出所有带分页的服务器
  • GET /v0/servers/{id} - 根据UUID获取服务器详细信息

请参阅交互式 API 文档,以获取完整的请求/响应模式。

免责声明:官方注册表不提供正常运行时间或数据持久性的保证。您应该通过缓存设计您的应用程序来应对服务停机。

建立子注册表

创建增强的注册表 - 提取官方注册表数据并添加您自己的元数据,如评级、安全扫描或兼容性信息。

目前我们建议定期抓取 GET /v0/servers 端点。未来我们可能会提供一个 updated_at 的过滤器(#291),以便仅获取最近更改的服务器。

服务器通常是不可变的,除了status字段可以更新为deleted(以及其他状态)。对于这些包,我们建议您也将状态字段更新为deleted或者快速从您的注册表中移除该包。这是因为该状态通常表明它违反了我们的宽松审核指南,暗示它可能是非法的、恶意软件或者垃圾信息。

过滤与增强

官方注册表具有宽松的审核政策,因此您可能需要在注册表数据的基础上实施自己的过滤。

您还可以使用 _meta 字段向服务器添加自定义元数据。例如,用户评分、下载次数或安全扫描结果。如果您这样做,我们建议您将其放在一个以您的组织命名空间命名的键下,例如:

{
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-07-09/server.schema.json",
"name": "io.github.yourname/weather-server",
"description": "天气数据访问的MCP服务器",
"status": "active",
"version": "1.0.0",
"packages": [
{
"registry_type": "npm",
"identifier": "weather-mcp-server",
"version": "1.0.0"
}
],
"_meta": {
"com.example.subregistry/custom": {
"user_rating": 4.5,
"download_count": 12345,
"security_scan": {
"last_scanned": "2024-06-01T12:00:00Z",
"vulnerabilities_found": 0
}
}
}
}

提供一个API

我们建议您的子注册表提供一个符合注册表 API 规范的 API,这样客户端可以轻松地在不同的注册表之间切换。有关详细信息,请参阅注册表 API 文档

MCP客户端集成

将注册表数据转换为客户端配置 - 获取服务器并将包信息转换为MCP客户端的配置格式。

我们强烈建议使用子注册表,而不是直接从官方注册表获取数据。您可能希望使其可配置,以便您的客户端用户可以选择他们首选的注册表,例如,我们预计某些企业用户可能会有自己的注册表。

您的客户端应优雅地处理符合最低规范的注册表,即避免对_meta字段的硬性依赖。

过滤

您可能需要筛选出在status字段中不是active的服务器。

运行服务器

你可以使用 packagesremotes 字段来决定如何运行服务器。这些字段的更多详细信息可以在 server.json 文档 中找到。