Skip to content

docs: new modelcontextprotocol.io Inspector documentation for v2 (legacy vs. modern era, more screenshots) #1803

Description

@cliffhall

Summary

Write new, substantially expanded documentation for the MCP Inspector to replace the current page at https://modelcontextprotocol.io/docs/tools/inspector.

That page lives in a different repo (the modelcontextprotocol/docs site, not this one), but the work is tracked here on the v2 board because the content is entirely about the new (v2) Inspector and needs to be written by whoever knows it.

Why

The existing docs page predates v2 entirely. It documents the legacy single-surface web Inspector, has few screenshots, and says nothing about the things that most need explaining now: the three clients (Web / CLI / TUI) behind one mcp-inspector bin, and the fact that a connection is era-aware — the UI and the wire traffic differ meaningfully between a legacy-era server and a modern (2026-07-28) server.

Scope

New docs, based on the v2 Inspector, more detailed than today's page, with far more screenshots.

  • Getting startednpx @modelcontextprotocol/inspector, the three surfaces (--web default, --cli, --tui), auth token, config/catalog files.
  • Legacy vs. modern era operation — the core new theme. What Protocol Era (auto / legacy / modern) means, how negotiation works, and how each tab changes across the fork:
    • Logging: session-scoped logging/setLevel vs. per-request _meta log-level opt-in
    • Resource subscriptions: resources/subscribe vs. subscriptions/listen + stream-status badge
    • Tasks: capabilities.tasks + tasks/list/tasks/result vs. the io.modelcontextprotocol/tasks extension (SEP-2663), inlined results, tasks/update
    • Tools: SEP-2243 x-mcp-header mirrored params and excluded tools; the new -32602 error panels
    • Network/Protocol: standardized Mcp-* headers and the new error taxonomy (SEP-2243 / SEP-2575)
    • MRTR (input_required round-trips) and the pending-request modal
  • Screenshots throughout — every tab, in both eras where they differ.
  • Launcher flags, and the launcher/client split — the shared mcp-inspector launcher owns a deliberately tiny surface, and the docs should make that boundary explicit, because it's the thing --help explains least well. Verified against clients/launcher/src/:
    • Launcher-level flags — only these two:
      • --web (default) / --cli / --tui. At most one; specifying two errors (Specify at most one of --web, --cli, or --tui.). They are read only from a contiguous prefix of the user args — the first non-mode token ends parsing and everything after it is forwarded to the client unchanged, which is what lets a literal --cli appear later as a server's own argument.
      • -h / --help. Bare (no mode flag) prints the launcher's own help and exits; with a mode flag it is forwarded, so mcp-inspector --cli --help prints the CLI's help. Worth documenting explicitly — it's a real behavioral fork.
    • Everything else belongs to a client, and the docs should present the flag reference that way rather than as one flat list:
      • --dev (Vite dev mode) is web-only (clients/web/server/run-web.ts).
      • --catalog / --config / --server / --transport / --server-url / --cwd / -e / --header are defined separately by each of web, cli, and tui, so note where they diverge (e.g. cli/tui also take a positional [target...] for an ad-hoc server; web does not take OAuth client flags).
      • The OAuth flags — --client-id, --client-secret, --client-metadata-url, --client-config, --callback-url (must be loopback) — are cli + tui.
      • The large scripting surface — --method, --tool-name, --tool-arg / --tool-args-json, --uri, --prompt-name / --prompt-args, --log-level, --metadata / --tool-metadata, --app-info, --connect-timeout, --format, --use-stored-auth, --stored-auth-only, --relogin, --wait-for-auth, --list-stored-auth, --print-handoff — is cli-only.
    • --catalog vs. --config deserves its own explainer: --catalog is the writable catalog (created/seeded if missing; default ~/.mcp-inspector/mcp.json), --config is a read-only session file (served as-is, never written, errors if absent), and the two are mutually exclusive — enforced centrally in core/mcp/node/config.ts, so all three clients reject the combination identically.
    • The -- separator. web and cli split argv at a bare -- and pass the remainder through as the target command's own args. Document it — it's how you pass flags that would otherwise be eaten by the Inspector.
    • Environment variables, attributed to the right layer (none of these are launcher flags): MCP_DEBUG / DEBUG are read by the launcher (and duplicated in the TUI bin) to append a stack trace on a top-level failure — and only when meaningfully set, so DEBUG=0 / false / empty read as off. MCP_CATALOG_PATH, MCP_CLIENT_CONFIG_PATH, and MCP_OAUTH_CALLBACK_URL are the env fallbacks for the corresponding cli/tui flags. MCP_INSPECTOR_API_TOKEN, DANGEROUSLY_OMIT_AUTH, HOST / CLIENT_PORT, DANGEROUSLY_BIND_ALL_INTERFACES, and ALLOWED_ORIGINS are web-backend config, not launcher config.
  • Per-surface guides — Web tabs walkthrough; CLI command/flag reference and scripting/CI recipes; TUI navigation.
  • OAuth — the auth flow end to end, mid-session re-authorization, and the CLI/TUI loopback callback flow.
  • Practical guides — connecting stdio vs. HTTP servers, importing existing client configs, MCP Apps review, Docker, host binding / origin allow-list.

The repo already has good raw material to draw on and link from: the root README.md, the per-client READMEs, docs/mcp-app-review.md, and the test-servers/configs/*.json showcase configs (each is a ready-made reproduction recipe for the era-fork behavior above).

Deliverable

A PR against the docs-site repo replacing/expanding docs/tools/inspector. This issue tracks the writing and review; link the docs-site PR here when it opens.

Metadata

Metadata

Assignees

Labels

v2Issues and PRs for v2

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions