MCP Registry 聚合器

MCP Registry 聚合器

社区译文;来源: MCP 80041ab0

MCP Registry 目前处于预览阶段。在正式发布之前,可能发生破坏性变更或数据重置。如果遇到任何问题,请在 GitHub 上报告。

聚合器是 MCP Registry 的下游消费者,可在其数据基础上提供附加价值。例如,提供用户评分和安全扫描的服务器市场。

MCP Registry 提供未经身份验证的只读 REST API,聚合器可以用它填充自己的数据存储。聚合器应当定期但不频繁地抓取数据(例如每小时一次),并将数据持久化到自己的数据存储中。MCP Registry 不对正常运行时间或数据持久性作出保证。

使用 MCP Registry REST API

MCP Registry REST API 的基础 URL 是 https://registry.modelcontextprotocol.io。它支持以下端点:

serverName 和 version 等 URL 路径参数必须进行 URL 编码。例如,io.modelcontextprotocol/everything 必须编码为 io.modelcontextprotocol%2Feverything。

聚合器最常抓取的端点可能是 GET /v0.1/servers。

分页

GET /v0.1/servers 端点支持基于游标的分页。

例如,可以使用 limit 查询参数获取第一页:

curl "https://registry.modelcontextprotocol.io/v0.1/servers?limit=100"
{
  "servers": [
    /* ... */
  ],
  "metadata": {
    "count": 100,
    "nextCursor": "com.example/my-server:1.0.0",
  },
}

然后,将 nextCursor 的值作为 cursor 查询参数传入,即可获取后续页面:

curl "https://registry.modelcontextprotocol.io/v0.1/servers?limit=100&cursor=com.example/my-server:1.0.0"

按更新时间筛选

GET /v0.1/servers 端点支持筛选自给定时间戳以来更新过的服务器。

例如,要获取自 2025-10-23 以来更新过的服务器,可以使用采用 RFC 3339 日期时间格式的 updated_since 查询参数:

curl "https://registry.modelcontextprotocol.io/v0.1/servers?updated_since=2025-10-23T00:00:00.000Z"

服务器状态

服务器元数据通常不可变,但 status 字段除外;该字段可能更新为例如 "deprecated" 或 "deleted"。我们建议聚合器及时更新其保存的每个服务器的 status 副本。

"deleted" 状态通常表示服务器违反了我们较为宽松的审核政策 ,说明该服务器可能是垃圾内容、恶意软件或违法内容。聚合器可以选择将这些服务器从其索引中移除。

充当子注册表

子注册表是一种同时实现 MCP Registry 所定义的 OpenAPI 规范 的聚合器。这样,MCP 宿主应用等客户端就能通过标准化接口使用服务器元数据。

子注册表 OpenAPI 规范允许子注册表通过 _meta 字段注入自定义元数据。例如,子注册表可以注入用户评分、下载次数和安全扫描结果:

{
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "name": "io.github.username/email-integration-mcp",
  "title": "Email Integration",
  "description": "Send emails and manage email accounts",
  "version": "1.0.0",
  "packages": [
    {
      "registryType": "npm",
      "identifier": "@username/email-integration-mcp",
      "version": "1.0.0",
      "transport": {
        "type": "stdio"
      }
    }
  ],
  "_meta": {
    "com.example.subregistry/custom": {
      "user_rating": 4.5,
      "download_count": 12345,
      "security_scan": {
        "last_scanned": "2025-10-23T12:00:00Z",
        "vulnerabilities_found": 0
      }
    }
  }
}

我们建议将自定义元数据放在能够体现子注册表身份的键下(例如上例中的 "com.example.subregistry/custom")。