Summary
@stripe/link-cli@0.8.2 cannot start as an MCP stdio server. link-cli mcp doctor fails immediately:
ok: false
toolCount: 0
tools: []
warnings: []
errors[1]{code,message}:
MCP_SERVER_FAILED,StdioServerTransport is not a constructor
This blocks any MCP-based integration of link-cli, including the recommended setup path:
link-cli mcp add --agent claude-code
The MCP server registers in the agent's config but fails to start at session boot.
Reproduction
npx --yes @stripe/link-cli mcp doctor
Expected
ok: true with the tools enumerated (auth/login, spend-request/*, mpp/pay, etc.).
Likely cause
StdioServerTransport is not a constructor typically means the import is hitting an object-shaped re-export rather than the class constructor. Most commonly this happens after an @modelcontextprotocol/sdk major-version bump that changes between default and named exports — the published dist/ may have been built against an older SDK shape.
A quick check of dist/ for how StdioServerTransport is imported (and a rebuild against the current @modelcontextprotocol/sdk) should resolve it.
Environment
- @stripe/link-cli 0.8.2
- node v22.22.0
- macOS arm64
Scope
Isolated to the MCP transport. All other CLI subcommands work fine in this same install:
auth login / auth status — succeeds
spend-request create / request-approval / retrieve — succeeds
mpp pay (with an approved spend request) — succeeds end-to-end against a real merchant
Only the mcp doctor / mcp add path is broken.
Summary
@stripe/link-cli@0.8.2cannot start as an MCP stdio server.link-cli mcp doctorfails immediately:This blocks any MCP-based integration of
link-cli, including the recommended setup path:The MCP server registers in the agent's config but fails to start at session boot.
Reproduction
Expected
ok: truewith the tools enumerated (auth/login, spend-request/*, mpp/pay, etc.).Likely cause
StdioServerTransport is not a constructortypically means the import is hitting an object-shaped re-export rather than the class constructor. Most commonly this happens after an@modelcontextprotocol/sdkmajor-version bump that changes between default and named exports — the publisheddist/may have been built against an older SDK shape.A quick check of
dist/for howStdioServerTransportis imported (and a rebuild against the current@modelcontextprotocol/sdk) should resolve it.Environment
Scope
Isolated to the MCP transport. All other CLI subcommands work fine in this same install:
auth login/auth status— succeedsspend-request create/request-approval/retrieve— succeedsmpp pay(with an approved spend request) — succeeds end-to-end against a real merchantOnly the
mcp doctor/mcp addpath is broken.