- 
                Notifications
    You must be signed in to change notification settings 
- Fork 453
Description
Is your feature request related to a problem? Please describe.
Currently, npm and Python-based MCP servers can be marked as such but there is no indication of the runtime version.  In an npm package, the package.json can declare an engines node and define what npm and node versions are needed to run the thing. Similarly there is a Requires-Python node in a Python wheel's metadata.
This is not surfaced in the MCP registry metadata, which means that runtime incompatibilities are not handled gracefully.
AFAIK, the best a MCP registry client can do is detect the package type is, say, npm and the user has no npm installed so it can prompt the user to do so. VS Code does this:

(tested without MCP server context, just with the manual npm install flow)
Describe the solution you'd like
Runtime information could be optionally expressed in the server node of the OpenAPI definition:
https://github.com/modelcontextprotocol/registry/blob/6b22cf09b376ed94c772c69951a2d125e495b26b/docs/openapi.yaml#L165C5-L200
Making it an arbitrary KVP like engines seems like a good start, or we could be more prescriptive on the format per ecosystem.
The client could then enrich the error experience by noticing that the installed npm version is not compatible with the MCP server and, say, select an older version of the MCP server (and be clear about that) or prompt the user to install a newer npm version.
Tooling could be created to init the server.json from a package.json, filling out the mapped engine properties as needed.
The same concept applies to Python and .NET (the area I am looking at specifically).
Describe alternatives you've considered
This could be deferred entirely to the generated single-shot command. So, if npm is not installed, VS Code could prompt to install the latest LTS version (nodejs.org/en/download does this). Then, when npm determines the engines incompatibility after downloading the package, it could provide its own error message.
But this is at least 2 operations ("install MCP server" then "install npm") into the flow and could be confusing to users that are not expert in the node.js/npm ecosystem but want to use that cool MCP server written in JS. If the MCP client has this context, it could provide a more guided experience.