How should the registry handle MCP servers embedded in apps/CLIs? #274
Replies: 2 comments 3 replies
-
Thanks for raising this @KalleBylin ! It's a very good callout.
I would say yes. At least for the purpose of discovery. We may want to consider "installation" of some of these variants as out of scope.
One escape hatch I think we could lean on is the concept of a website_url: #183 So for some of the cases you called out, it may make sense to have a fairly light entry that doesn't include much more than top level metadata + a For other cases, like your Snyk example, it seems close enough to the model for starting standalone servers, and fits the schema with CLI args, etc, that we can encourage that approach.
Absolutely should document this well somewhere. It's probably a server.json-level concern that extends beyond the Registry, worth documenting in here.
What do you mean by this exactly? We already have the ability to declare server-level versions and package-level versions, so that mapping exists in a given instance of
We do already have this notion of a reverse-DNS namespace that forms the foundation for this. However you're right that we should plan to introduce some notion of "author" that is separate from the top level server name's namespace (have discussed this with @domdomegg and @felixweinberger). Issue here: #29 |
Beta Was this translation helpful? Give feedback.
-
Thanks @tadasant for looking into this. This sounds like a good path forward. Concretely, for the two examples I mentioned:
On version mapping, I was probably getting ahead of myself. I was thinking about the case where there might be an embedded server and an independent server (similar to how some providers like Github have an open source version and a remote version). I was wondering if there needed to be some explicit mapping between these, but don’t think there would be much value. This can be solved by registering them as separate servers and/or providing more information in docs (providing something like
For vendor identity I was thinking more in line with the issue you linked, and I think this would be satisfied if we could do something like a reverse DNS lookup of the name. Examples can be updated once that is also closed. Next steps I can:
Would that help? |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Pre-submission Checklist
Question Category
Your Question
Context
The server.json schema in this registry is designed to describe MCP servers that are distributed through installable artifacts — packages on npm/PyPI/NuGet, container images, downloadable binaries, etc.
This works well when the MCP server has its own distribution channel.
But more MCP servers are now embedded inside other applications or CLI tools without a standalone MCP-specific package or repo. Examples:
Figma Desktop — ships with a built-in MCP server.
Snyk CLI — includes an MCP server in the CLI binary.
If you have the host app installed, you already have the MCP server — but there’s no separate MCP package to point to in the registry.
The Gap
The current schema/examples don’t explicitly show how to represent:
Discovery – How to reference an MCP server that’s part of a larger package.
Execution – How to specify the canonical command/args to start it.
Versioning – How to reflect host package version constraints.
Trust – How to indicate vendor identity when source isn’t public.
Especially if the registry is re-used for an internal enterprise setting, it seems like it would be desirable to be able to register and expose this type of servers as well.
Questions
Is it within the scope of the registry to include this type of MCP Servers?
If so, does it make sense to re-use the existing packages and remotes shapes for embedded MCP servers, or should there be more explicit semantics in the schema for this case?
I went through the current server.json schema/examples, and I searched existing discussions and issues, but was not able to find specific guidance on this. Sorry if it has been covered somewhere else.
Current Schema Re-use Approach
If the host app/CLI is installed via a known package registry (npm, PyPI, NuGet, etc.):
Use that registry in registry_name.
Use the official package name in name.
Use runtime_hint and package_arguments to specify how to start MCP mode.
If the embedded MCP server exposes a local HTTP/SSE endpoint (rather than stdio):
Use the existing remotes shape, as in the Remote Server example.
Examples
Example 1 – Snyk CLI installed via npm
Example 2 – Figma Dev Mode MCP exposed via SSE
Discussion Points
Is re-using packages and remotes the right way to model embedded servers, or should we add more explicit semantics?
Should the schema formally document this pattern so clients can support it consistently?
Is there a need for optional metadata such as version mapping between host package and MCP server, or vendor identity?
Goal
Agree on whether and how embedded MCP servers should be represented using the existing packages/remotes shapes, or whether the schema should add explicit semantics for this case.
Beta Was this translation helpful? Give feedback.
All reactions