registry icon indicating copy to clipboard operation
registry copied to clipboard

Remove MCP Registry-specific _meta fields from generic API spec

Open rdimitrov opened this issue 5 months ago • 6 comments

Similarly to #459

Right now, we manually maintain the OpenAPI spec manually. A better approach would be to rely on tools that let us define everything at the code level and then auto-generate the OpenAPI spec from there. That way, we reduce errors and keep things consistent with less effort. Let’s take advantage of that.

rdimitrov avatar Sep 12 '25 10:09 rdimitrov

BTW we do autogenerate this: https://registry.modelcontextprotocol.io/openapi.yaml

Also similarly to #459 there is discrepancy between the registry API spec and the extensions that the official registry has.

domdomegg avatar Sep 12 '25 19:09 domdomegg

One potential sub-point of confusion: I think https://github.com/modelcontextprotocol/registry/blob/main/docs/reference/api/openapi.yaml#L495 is meant to be the generic MCP registry OpenAPI spec. Whereas https://registry.modelcontextprotocol.io/openapi.yaml is the Official MCP Registry API spec.

If that's the case, I think we should probably remove the specificity here: https://github.com/modelcontextprotocol/registry/blob/main/docs/reference/api/openapi.yaml#L484-L523 -- there's no need to define those official Registry-specific fields in the generic registry spec, right?

If the above understanding/suggestion is correct, I think that's the only change we should make here -- we do want the generic registry OpenAPI spec to be manually managed as the ultimate source of truth (with which the downstream registry implementation should simply be compliant; perhaps worth an automated test somewhere to ensure compliance).

tadasant avatar Sep 14 '25 19:09 tadasant

ah, thank you! 🙏 You're right, this is what I got confused about. My understanding was the yaml file is what we also advertise but I did not check their content to notice they are different

I agree we should probably remove the extensions if we don't want them enforced by all.

Also I think we can try to make this more explicit in the docs/repo layout 👍 Or as it was suggested in the other issue once things get more stable move both to the specification repository and maintain them there so there's less ambiguity

rdimitrov avatar Sep 15 '25 12:09 rdimitrov

Renamed the title to reflect what I think we should do to address the root cause of the confusion here

tadasant avatar Sep 17 '25 16:09 tadasant

Whether _meta fields are remove or not, we still need a property which defines the id of mcp server to make sure all the mcp registies are aligining.

formulahendry avatar Sep 18 '25 01:09 formulahendry

Whether _meta fields are remove or not, we still need a property which defines the id of mcp server to make sure all the mcp registies are aligining.

That property will likely be name.

However, we (perhaps temporarily) are introducing server_id as well: https://github.com/modelcontextprotocol/registry/pull/465

tadasant avatar Sep 18 '25 15:09 tadasant