Motivations for an industry standard registry API... #43
Replies: 1 comment 1 reply
-
Thank you @markweitzel for raising this! First at a high level: I am interested in hearing from folks who think there is an existing registry/discovery standard we should be considering with the official MCP registry development. Besides xRegistry as proposed in this thread, one that has been brought up in the past is World of Things here (that particular pitch was to rebase the entirety of MCP on WoT, which is a tougher sell; in our case here, a REST API to expose structured service metadata feels like something where meaningful prior art and tooling is more likely to exist). A potentially obvious one I think is worth a look is the OCI Distribution Spec. Reasons these explorations interest me:
Examples where point 1 might be helpful:
Examples for point 2 are self-evident (we are soon going to be building out a CLI for publishing server metadata ... there may soon be third party registries trying to reimplement our API shapes with net new solutions in a variety of different languages and tech stacks). Of course, we are capable of just powering through these needs as they come up. The thinking here is that maybe we can save a few thousand hours of time and adopt something that will just work for us out of the box (and perhaps has resourcing available elsewhere where it can continue to evolve and improve). If we do decide something is worth adopting, I do want to allow for the possibility that we may not bake it into an initial launch here (instead doing our best to align well-enough that a future migration or major version shift is not too painful). MCP is still very immature as an ecosystem, and I think there is value in keeping things moving forward so we can support the ecosystem in fleshing out use cases and value creation (as opposed to potentially killing its momentum and then it never makes it to be a sustainable piece of the tech ecosystem). All that said, some initial thoughts on xRegistry as I start to look through the spec -- This document is a helpful starting point for anyone looking for a place to get started.
The abstract checks out... sounds like what we are building. Resources =
We're not doing a whole lot of "grouping" in our from-scratch registry to date. I think you @markweitzel are right to say that, if anything, the Group is the "provider". That would probably equate to how we have been thinking at the reverse-DNS part of an MCP server Indeed, a core value of the Registry here is that MCP servers should be versioned, so it's nice that a core value prop of xRegistry is the version the Resources.
I like this principle -- makes it sound like it could be a fit for our simplified, barebones centralized official Registry, and allow third parties/private implementations to dig into the more complex and opinionated pieces. I'm not sure I will have more time to dig in this week, but so far the top open questions on my mind are:
(I know you have started to address some of these in your initial comment, just flagging as summary points for others invested in the MCP ecosystem to consider and provide their opinions on) |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Pre-submission Checklist
Your Idea
Hi Everyone,
By way of intros, I'm one of the product architects/managers at Microsoft & am currently responsible for a few things--our tooling for M365 Agents, Azure API Center, and I also run a cross org team that focuses on Platform Engineering. It's super exciting to finally see the hard work of this team become "alive and kicking!!". Now that we've got the first version out the door, I'd thought it would be good to start a conversation about motivations for leveraging an industry standard registry api and also share some of the experimentation we've been doing. So here goes...
Motivations
There are several compelling use cases for us that make having an industry standard registry API that can be used for different "types" of registries. One of the assumptions that my teams are working under is that we'll have a community of MCP servers--some of those will be public, some private to an organization, and maybe some "semi-private", e.g. an industry org. Similarly, we will also have the same scenarios for agents and models as well. And of course, we've got this same challenge today with registries of OpenAPI. And there are lots of orgs that have built custom registries that they want to adapt to play in this new AI ecosystem.
One of the core capabilities of API Center--and similar products--is enabling centralized governance for organizations, often via platform engineering teams. So a user will "register" an API (or MCP server) in APIC and then assign access, manage auth, add metadata, etc. An industry standard registry API will accelerate the development of an ecosystem by enabling vendors to quickly add registries that contain new types, e.g. agents (or adapt to a registry by adding a new type). But a standard API ALSO enables developers to have a single, consistent way to contribute to multiple registries. And from a tooling perspective, devs building tools, e.g. CLIs, VS Code plugins, can code to a consistent interface--regardless of the type of registry and who provides it.
Another use case is references within enties in a registry as well as between entities in different registries. From a governance perspective, admins might want to know ahead of time, what MCP servers (and/or OpenAPIs) an agent uses (or is allowed to use). If agent registry(s) and an MCP registry(s) all use a standard way to cross reference each other, then LLMs, tooling, etc. all become more powerful.
Some initial experimentation
One potential industry standard that a few of us have been exploring is the xRegistry project at CNCF. This is interesting for a few reasons, not the least of which is that, being a CNCF project, it's vendor neutral. And, like what we are trying to accomplish here, xRegistry is a meta registry that is driven by schemas. It's intention is to be just a registry API and allow implementors to define the schemas that its implementations will contain.
And although it just started the incubation process, xRegistry has been under development for a few years--so there's lots of prior art that went into its development. In fact, the event stream pipeline features in Azure Fabric ("Real-Time Intelligence") have taken a hard dependency on xRegistry already, and the Azure Messaging team is basing these on a yet-unannounced Azure service, the "messaging catalog", that will be deeply integrated with Event Grid, Event Hubs, and Service Bus.
So in the spirit of learning by doing, the xreg team has stood up an experimental MCP based xRegistry. You can also use curl or http client to get the raw json:
GET
https://mcpxreg.org/registry/mcpproviders/CodeLogicIncEngineering
Note: The data that's in the xreg-mcp experiment was pulled from the repo, so it doesn't exactly match the seed data that you get when you spin up the docker/mongo one we have now. This is why {id} for the xreg is based on name & our seed has an {id} that is a GUID. The web page is a simple web page on top of the a static website that uses the xregistry api. The way it's implemented it is that it's based on files in the git repo https://github.com/clemensv/xregistry-mcp/tree/master/registry/mcpproviders. Whenever a new pull request is merged into main, a github action fires and rebuilds and republishes the web site. Obviously, commercial offerings would have more robust governance etc. but we thought this might be a very easy way for folks to get started with an MCP registry of their own using git and files.
(The experimental agents xRegistry is here
GET
https://clemensv.github.io/xregistry-a2a/registry
. We've not built out much here yet, but it's built the same as the mcp reg, e.g. using the xRegistry project tooling, has the same github action publish flow etc.)I know this was a bit of a long post, so thanks for taking the time to read it. And thanks for taking the time to consider these ideas. I'm looking forward to the discussion and your feedback!
Scope
Beta Was this translation helpful? Give feedback.
All reactions