MCP 레지스트리 애그리게이터

MCP 레지스트리 애그리게이터 (MCP Registry Aggregators)

애그리게이터는 MCP 레지스트리의 다운스트림 소비자로, 추가 가치를 제공해요. 예를 들어 사용자 평점과 보안 스캔을 제공하는 서버 마켓플레이스가 그렇죠. 이 글은 MCP 레지스트리 REST API를 소비해 자체 데이터 저장소를 채우는 애그리게이터가 알아야 할 내용을 다룹니다.

출처: MCP 공식 문서 - MCP Registry Aggregators

💡 MCP 레지스트리는 현재 프리뷰 단계예요. 일반 공개 전에 파괴적 변경이나 데이터 리셋이 있을 수 있습니다. 이슈가 있으면 GitHub에 보고해 주세요.

MCP 레지스트리는 애그리게이터가 자체 데이터 저장소를 채우는 데 쓸 수 있는 미인증 읽기 전용 REST API를 제공해요. 애그리게이터는 정기적이지만 드물게(예: 한 시간에 한 번) 데이터를 스크랩하고, 그 데이터를 자체 저장소에 영속화할 것으로 예상됩니다. MCP 레지스트리는 업타임이나 데이터 내구성 보장을 제공하지 않아요.

MCP 레지스트리 REST API 소비

MCP 레지스트리 REST API의 기본 URL은 https://registry.modelcontextprotocol.io입니다. 다음 엔드포인트를 지원해요.

⚠️ serverName·version 같은 URL 경로 파라미터는 반드시 URL 인코딩해야 해요. 예를 들어 io.modelcontextprotocol/everythingio.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 레지스트리가 정의한 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" 같은) 아래 두는 것을 권장해요.

더 알아보기 (Learn more)