Remove redundant endpoint as suggested in #617. Clients should now use `GET /v0/servers/{serverName}/versions/latest` instead (using `latest` as a special version value in the existing endpoint). This simplifies the API surface and reduces implementation burden for subregistries, while maintaining a clear migration path for consumers. ## Changes - Removed `GET /v0/servers/{serverName}` endpoint - Updated `GET /v0/servers/{serverName}/versions/{version}` to accept `latest` as special version - Updated all tests to use new endpoint pattern - Updated documentation and OpenAPI spec - Added breaking change notice to CHANGELOG Fixes #617 Co-authored-by: Claude <noreply@anthropic.com>
2.5 KiB
2.5 KiB
Generic Registry API Specification
A standardized RESTful HTTP API for MCP registries to provide consistent endpoints for discovering and retrieving MCP servers.
Also see:
- For guidance consuming the API, see the consuming guide.
Browse the Complete API Specification
📋 View the full API specification interactively: Open openapi.yaml in an OpenAPI viewer like Stoplight Elements.
The official registry has some more endpoints and restrictions on top of this. See the official registry API spec for details.
Quick Reference
Core Endpoints
GET /v0/servers- List all servers with paginationGET /v0/servers/{serverName}/versions- List all versions of a serverGET /v0/servers/{serverName}/versions/{version}- Get specific version of server. Use the special versionlatestto get the latest version.POST /v0/publish- Publish new server (optional, registry-specific authentication)
Server names and version strings should be URL-encoded in paths.
Authentication
- Read operations: No authentication required
- Write operations: Registry-specific authentication (if supported)
Content Type
All requests and responses use application/json
Pagination
List endpoints use cursor-based pagination for efficient, stable results.
Usage
- Initial request: Omit the
cursorparameter - Subsequent requests: Use the
nextCursorvalue from the previous response - End of results: When
nextCursoris null or empty, there are no more results
Important: Always treat cursors as opaque strings. Never manually construct or modify cursor values.
Basic Example: List Servers
curl https://registry.example.com/v0/servers?limit=10
{
"servers": [
{
"server": {
"name": "io.modelcontextprotocol/filesystem",
"description": "Filesystem operations server",
"version": "1.0.2"
},
"_meta": {
"io.modelcontextprotocol.registry/official": {
"status": "active",
"publishedAt": "2025-01-01T10:30:00Z",
"isLatest": true
}
}
}
],
"metadata": {
"count": 10,
"nextCursor": "com.example/my-server:1.0.0"
}
}
For complete endpoint documentation, view the OpenAPI specification in a schema viewer.