Feature request: list configured MCP servers without health-checking them (--no-health / --json)
Problem
claude mcp list health-checks every approved server, and there's no way to opt out. For any script that only needs to know which servers are configured, the connection round-trips are the entire cost and the answer is discarded.
Measured on 2.1.237, macOS, 8 user-scope servers:
| command | time |
| --- | --- |
| claude mcp list | 10.64s |
| claude plugin list | 0.55s |
| claude --version (CLI startup baseline) | 0.43s |
So ~10.2s of that is health checks alone.
The concrete case: my machine-config tool runs claude mcp list once per account to test whether each declared server is already present (grep "^name:"), then adds the missing ones. Two accounts meant ~21s of a 49s run spent connecting to servers whose status was never read.
Current workarounds, and why they aren't good
- Read
.mcpServersfrom~/.claude.jsondirectly. This is what I ended up doing (49s down to 10.6s), but it depends on an undocumented internal file shape, and it only covers user scope, so project-scope servers from.mcp.jsondon't appear. - Parse the human-readable output. Still pays the full 10s, and means regexing glyphs.
claude mcp list --help shows only -h, --help; I also tried --json, --no-health, --quiet and --names-only, all rejected as unknown options.
Request
A way to list configured MCP servers without connecting to them. Either would work:
claude mcp list --no-health: same output, status column omitted or shown as unknown.claude mcp list --json: machine-readable, with health checks off by default (or gated behind an explicit flag), so scripts stop regexing terminal glyphs.
Right now "what is configured" and "what is reachable" cost the same to ask, and only one of them is expensive to answer.
Related
#68579 (closed as not planned) asked for machine-readable live connection status for wrapper/IDE integrations. This is the complement: no status at all, just the configured set, fast.