Skip to content

[BUG] Custom MCP registry lookup fails — SimpleRegistryClient uses /v0/ API, official MCP Registry spec is /v0.1/ #1210

@fassmus

Description

@fassmus

Describe the bug

APM's SimpleRegistryClient uses the /v0/ API prefix and a /v0/servers/search endpoint that do not exist in the official MCP Registry API specification. This causes apm install --mcp with --registry to fail against any registry implementing the official spec.

The official Generic Registry API defines all endpoints under /v0.1/:

Endpoint Purpose
GET /v0.1/servers List all servers (with pagination)
GET /v0.1/servers/{serverName}/versions List all versions of a server
GET /v0.1/servers/{serverName}/versions/{version} Get specific version (use latest)

APM's SimpleRegistryClient (src/apm_cli/registry/client.py) instead calls:

Method Endpoint called Issue
list_servers() GET /v0/servers Wrong prefix (/v0/ vs /v0.1/)
search_servers() GET /v0/servers/search?q=... Endpoint does not exist in the spec
get_server_info() GET /v0/servers/{id} Spec uses /{serverName}/versions/{version}

The Official Registry API uses a search query parameter on GET /v0.1/servers?search=..., not a separate /search endpoint.

To Reproduce

  1. Deploy an MCP registry implementing the official spec (e.g. https://my-registry.example.com)
  2. Publish a server (e.g. my-org/my-server)
  3. Verify it exists: curl "https://my-registry.example.com/v0.1/servers?name=my-org/my-server" → server found
  4. Run: apm install --mcp my-org/my-server --registry https://my-registry.example.com
  5. See error:
[>] Looking up 1 MCP server in registry...
[x] Server(s) not found in registry: my-org/my-server

Expected behavior

APM should use the /v0.1/ API prefix and spec-compliant endpoints to resolve servers from any registry implementing the official MCP Registry API. Suggested changes:

  1. Use /v0.1/ prefix instead of /v0/
  2. Replace GET /v0/servers/search?q=... with GET /v0.1/servers?search=...
  3. Use GET /v0.1/servers/{serverName}/versions/latest for individual server lookup
  4. URL-encode server names in paths (e.g. my-org%2Fmy-server)

Environment:

  • OS: macOS 14.7.3 (23H417)
  • APM Version: 0.12.4 (6aceef7)

Additional context

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Status

    Todo

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions