Closes #149 As noted in the FAQ update here, this is a helpful starting point in thinking about this: ``` ### What is the difference between "Official MCP Registry", "MCP Registry", "MCP registry", "MCP Registry API", etc? There are four underlying concepts: - "MCP Server Registry API" (or "MCP Registry API"): The OpenAPI specification defined in [openapi.yaml](./server-registry-api/openapi.yaml). This is a reusable API specification that anyone building any sort of "MCP server registry" should consider adopting / aligning with. - "Official MCP Registry" (or "MCP Registry"): The application that lives at `https://registry.modelcontextprotocol.io`. This registry currently only catalogs MCP servers, but may be extended in the future to also catalog MCP client/host apps and frameworks. - "Official MCP Registry API": The REST API that lives at `https://registry.modelcontextprotocol.io/api`, with an OpenAPI specification defined at [official-registry-openapi.yaml](./server-registry-api/official-registry-openapi.yaml) - "MCP server registry" (or "MCP registry"): A third party, likely commercial, implementation of the MCP Server Registry API or derivative specification. ``` Prior to this PR, we were just treating "MCP Server Registry API" and "Official MCP Registry API" to be the same thing. They are not the same: the latter is inherently a more constrained version of the former. A private deployment of a similar registry need not have constraints like "the only valid source code repositories are `github` and `gitlab`". This PR separates out the definitions to match that path forward. ## Notable Changes ### Base OpenAPI spec (`openapi.yaml`) - Removed official-registry-specific constraints: - No maximum limit on `/servers` endpoint - No enum constraint on `Repository.source` - No enum constraint on `Package.registry_name` - Removed `/v0` prefix from paths (it's now just baked into the `official` one's URL prefix) - Added `$id` for proper schema identification ### Official Registry OpenAPI spec (`official-registry-openapi.yaml`) - Created as a derivative of the base spec using `$ref` - Re-adds official-registry-specific constraints: - `Repository.source` enum: `[github]` - `Package.registry_name` enum: `[npm, docker, pypi, nuget]` ### Documentation updates - Added `server-registry-api/README.md` explaining the relationship between specs - Updated FAQ to clarify terminology - Reorganized docs structure
42 lines
1.6 KiB
YAML
42 lines
1.6 KiB
YAML
openapi: 3.1.0
|
|
jsonSchemaDialect: "https://json-schema.org/draft/2020-12/schema"
|
|
info:
|
|
title: Official MCP Registry API
|
|
summary: Official API for discovering and accessing MCP servers metadata with registry constraints
|
|
description: |
|
|
Extends the base MCP Server Registry API with additional constraints for the official registry and adding additional functionality.
|
|
The Official Registry allows server creators to publish and maintain metadata about their servers in a standardized format.
|
|
The read side of the API enables MCP client applications and "server aggregator" type consumers to discover and install MCP servers.
|
|
version: 0.0.1
|
|
contact:
|
|
name: MCP Community Working Group
|
|
license:
|
|
name: MIT
|
|
identifier: MIT
|
|
servers:
|
|
- url: https://registry.modelcontextprotocol.io/api/v0
|
|
description: Official MCP Registry
|
|
|
|
paths:
|
|
/servers:
|
|
$ref: 'https://modelcontextprotocol.io/schemas/draft/2025-07-09/server-registry-openapi#/paths/~1servers'
|
|
/servers/{id}:
|
|
$ref: 'https://modelcontextprotocol.io/schemas/draft/2025-07-09/server-registry-openapi#/paths/~1servers~1{id}'
|
|
|
|
components:
|
|
schemas:
|
|
Repository:
|
|
allOf:
|
|
- $ref: 'https://modelcontextprotocol.io/schemas/draft/2025-07-09/server-registry-openapi#/components/schemas/Repository'
|
|
- type: object
|
|
properties:
|
|
source:
|
|
enum: [github]
|
|
|
|
Package:
|
|
allOf:
|
|
- $ref: 'https://modelcontextprotocol.io/schemas/draft/2025-07-09/server-registry-openapi#/components/schemas/Package'
|
|
- type: object
|
|
properties:
|
|
registry_name:
|
|
enum: [npm, docker, pypi, nuget]
|