Skip to content

zero mcp check reports success for a server that failed to start #822

Description

@Vasanthdev2004

zero mcp check is the command we point users at when an MCP server misbehaves, and it reports success for a server that never started.

runMCPCheck (internal/cli/mcp_config.go:301-327) calls registerMCPTools, checks only the returned error, and then unconditionally prints MCP server %s is reachable. %d tool(s) available. with status ok. It never consults Runtime.Skipped().

That error branch is effectively dead for the case that matters. RegisterTools (internal/mcp/registry.go:154-166) is deliberately best-effort: a server that fails to connect is recorded in runtime.skipped and registration returns nil, so one broken server cannot abort launch. Correct behaviour for startup, wrong thing to ignore in a diagnostic.

The result is that a server whose command does not exist reports "is reachable. 0 tool(s) available." The user's only clue is a tool count of zero, which looks like a server that genuinely exposes no tools.

We already have the data: SkippedServer{Name, Err, UnconfiguredDefault} at registry.go:31-42. runMCPCheck needs to read it and fail with the recorded error. Small, and it makes the other MCP issues easier to diagnose.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions