Problem
npx @modelcontextprotocol/inspector — the documented way to run the Inspector — fails on 2.10.0:
$ npx -y @modelcontextprotocol/inspector@latest
npm error could not determine executable to run
Cause
2.10.0 added a second bin, mcpdo, next to mcp-inspector. npm's npx/npm exec picks the bin to run with libnpmexec's getBinFromManifest:
- if every bin points at the same file, run it (true through 2.9.0: only
mcp-inspector);
- else run the bin named after the package's unscoped name —
inspector — which doesn't exist;
- else fail with "could not determine executable to run".
pack:verify and the smokes invoke the installed bin by name (node_modules/.bin/mcp-inspector), so none of them exercises npm's default-bin resolution and the regression shipped green.
Workaround
npx -y -p @modelcontextprotocol/inspector@2.10.0 mcp-inspector
Fix
- Add an
inspector bin alias to the root package.json, pointing at the launcher, so rule 2 resolves to it. mcpdo stays reachable via npx -p @modelcontextprotocol/inspector mcpdo.
- Guard it: an offline
test:scripts check (runs in validate:guards, so CI) that the root manifest's default bin, resolved by npm's rule, is the launcher; and a pack:verify step that runs the installed tarball via npm exec @modelcontextprotocol/inspector rather than by bin name.
- Release 2.10.1. Meanwhile
latest is moved back to 2.9.0 and 2.10.0 deprecated.
Problem
npx @modelcontextprotocol/inspector— the documented way to run the Inspector — fails on 2.10.0:Cause
2.10.0 added a second
bin,mcpdo, next tomcp-inspector. npm'snpx/npm execpicks the bin to run withlibnpmexec'sgetBinFromManifest:mcp-inspector);inspector— which doesn't exist;pack:verifyand the smokes invoke the installed bin by name (node_modules/.bin/mcp-inspector), so none of them exercises npm's default-bin resolution and the regression shipped green.Workaround
Fix
inspectorbin alias to the rootpackage.json, pointing at the launcher, so rule 2 resolves to it.mcpdostays reachable vianpx -p @modelcontextprotocol/inspector mcpdo.test:scriptscheck (runs invalidate:guards, so CI) that the root manifest's default bin, resolved by npm's rule, is the launcher; and apack:verifystep that runs the installed tarball vianpm exec @modelcontextprotocol/inspectorrather than by bin name.latestis moved back to 2.9.0 and 2.10.0 deprecated.