knosh mcp-info¶
Print one configured MCP server's list-mcp details, then connect to confirm it is reachable and list the tools it exposes.
Synopsis¶
Description¶
mcp-info starts by printing the same server block list-mcp would show for <name>, then actually connects: it spawns/connects, completes the MCP handshake, discovers the server's tools, and disconnects. It never executes a discovered tool — it connects, discovers, and disconnects.
Unlike a prompt, kdocs, or file-defined command run, a startup failure here is never swallowed as a stderr warning: every failure surface (a missing local binary, a failed handshake, an exceeded timeout, an unresolved {env:NAME} header variable, a tool-discovery error) is reported to the user and the command exits 1.
A server that is effectively disabled — per its global enabled value, or a per-agent mcp: override resolved via --agent — is refused by default, since a disabled server is disabled on purpose. Pass --force to probe it anyway.
Each discovered tool is shown under both name forms: the namespaced <serverHandle>_<toolName> form the agent sees, and the raw form the MCP server itself calls the tool — the same namespacing described under mcp.
Options¶
NAME- The MCP server handle to probe (required). An unmatched handle is reported along with every configured handle, and the command exits
1. --agent <id>- Resolve per-agent
mcp:overrides for this agent id, same aslist-mcp --agent. Defaults to the configureddefaultAgentId. --force- Probe the server even if it is effectively disabled.
--timeoutSeconds <n>/--timeout-seconds <n>- Overrides the server's own startup timeout budget, in seconds, for this probe only. Must be a positive integer. The server's configured
timeout(5-second default) applies when omitted — the same value a real run would use, which is a tighter budget than is often useful when deliberately diagnosing a slow server. --verbose- Also print each tool's required and optional parameters. By default only each tool's name forms and description are shown, so the reachability answer is not buried under a screenful of schema.
Output¶
On success, mcp-info prints the server block, then a ## Tools (<count>) section, one subsection per discovered tool:
## github
- command: gh mcp
- type: local
- environment: 1 variable(s)
- timeout: 30s
## Tools (1)
### github_search
- raw name: search
- description: Searches GitHub
With --verbose, each tool subsection also lists its required and optional parameters:
### github_search
- raw name: search
- description: Searches GitHub
- required parameters
- query (STRING): the search query
A server that legitimately exposes zero tools reports ## Tools (0) and exits 0 — that is a success, not a failure.
On any other outcome, mcp-info exits 1:
- Unreachable — the server block, then the failure message (e.g.
Server 'github' is unreachable: no such command). - Refused (effectively disabled, no
--force) — the server block, so you can see why it is off, then a message pointing at--force. - Unknown handle — no server block; just the requested name and the list of configured handles.
As with list-mcp, header names and values (remote servers) and environment-variable names and values (local servers) are never printed — only counts.
Examples¶
Probe a local server:
Probe a server that is effectively disabled for a specific agent:
Give a slow server more time to start, and see each tool's parameters:
Use mcp-info as a shell health check: