Problem
server.json's npm package schema has no field for selecting which bin to invoke when a package exposes multiple entries in its package.json bin field. Clients following identifier + runtimeHint: "npx" will resolve to whichever bin matches the package name -- there's no way to point at a different, non-default bin.
Concrete example
Package sumlyzer publishes two bins:
"bin": {
"sumlyzer": "bin/sumlyzer.mjs",
"sumlyzer-mcp-server": "bin/sumlyzer-mcp-server.mjs"
}
sumlyzer-mcp-server is the actual MCP server; sumlyzer is an unrelated CLI. A server.json entry like:
{
"registryType": "npm",
"identifier": "sumlyzer",
"version": "1.0.0",
"runtimeHint": "npx",
"transport": { "type": "stdio" }
}
resolves (via npx sumlyzer) to the wrong bin. The only working invocation is npx -p sumlyzer sumlyzer-mcp-server -- but that's an npx-level flag (-p), not something representable via packageArguments/runtimeArguments, since those only append arguments to the already-resolved command rather than influencing bin resolution itself.
I checked the Argument type (PositionalArgument / NamedArgument) in server.schema.json (2025-12-11) and neither has a field for this.
Question
Is this a known limitation? If so, would a dedicated field (e.g. bin on the npm package entry, or documented support for an -p-style runtime argument) be in scope, or is the intended workaround to always publish the MCP server as its own dedicated npm package (one bin per package)? Happy to open a PR if there's an agreed direction.
Problem
server.json's npm package schema has no field for selecting which bin to invoke when a package exposes multiple entries in itspackage.jsonbinfield. Clients followingidentifier+runtimeHint: "npx"will resolve to whichever bin matches the package name -- there's no way to point at a different, non-default bin.Concrete example
Package
sumlyzerpublishes two bins:sumlyzer-mcp-serveris the actual MCP server;sumlyzeris an unrelated CLI. Aserver.jsonentry like:{ "registryType": "npm", "identifier": "sumlyzer", "version": "1.0.0", "runtimeHint": "npx", "transport": { "type": "stdio" } }resolves (via
npx sumlyzer) to the wrong bin. The only working invocation isnpx -p sumlyzer sumlyzer-mcp-server-- but that's annpx-level flag (-p), not something representable viapackageArguments/runtimeArguments, since those only append arguments to the already-resolved command rather than influencing bin resolution itself.I checked the
Argumenttype (PositionalArgument/NamedArgument) inserver.schema.json(2025-12-11) and neither has a field for this.Question
Is this a known limitation? If so, would a dedicated field (e.g.
binon the npm package entry, or documented support for an-p-style runtime argument) be in scope, or is the intended workaround to always publish the MCP server as its own dedicated npm package (one bin per package)? Happy to open a PR if there's an agreed direction.