docs: restore the missing docs/ targets and split the catalog-seeding wording - #1812
Conversation
Closes #1811 Four README links pointed at files that never came across when the v1.5 clients were merged into v2/main. v1.5/main is not an ancestor of v2/main, so the clients arrived still referencing a docs/ folder that stayed behind. - docs/mcp-server-configuration.md: written fresh for v2 rather than restored. The v1.5 file predates the --catalog / --config split, MCP_CATALOG_PATH, and the mutual-exclusivity rules, so restoring it would have documented a model that no longer exists. This is the page both the cli and tui READMEs delegate their whole server-options section to, so it was the most load-bearing of the four. - docs/launcher-config-consolidation-plan.md: restored from v1.5/main. Its substance still holds; corrected the launcher/ -> clients/launcher/ path drift and the per-client-binary reference, and appended a v2 note covering the non-workspace layout and the catalog/config split. - docs/images/tui-screenshot.png: regenerated against the current TUI rather than restoring the v1.5 image, which showed an older UI. The launcher README described a missing writable catalog as "created/seeded if missing" in both its --web and --cli/--tui tables, reading as one behavior when it is two: web seeds DEFAULT_SEED_CONFIG (filesystem + everything), while cli/tui seed an empty mcpServers object. Both tables now say which, with a pointer between them. That ambiguity had already produced a wrong claim in the modelcontextprotocol.io docs. Verified no broken relative links remain across README.md, AGENTS.md, clients/*/README.md, and docs/*.md.
|
@claude review |
|
Claude finished @cliffhall's task in 3m 57s —— View job Review
Good PR — the seeding split is the load-bearing fix and I verified it exactly against the source. One real correctness bug in the new config doc, plus two over-generalizations. Details below. 🔴 The
|
… defaults Review of #1812 caught a real inversion: the `--` separator section described web's semantics as if they were shared with the CLI, but the two are opposite. Web (and, via Commander's default end-of-options handling, the TUI) append everything *after* `--` to the target command; the CLI treats everything *before* `--` as the target and everything *after* as the Inspector's own options. The doc's copy-pasteable example therefore did the opposite of what its prose promised under `--cli`. Split into the two forms with a correct example for each, and note that the CLI has no way to pass a leading-dash argument to a stdio server on the command line. Also: - Scope the `MCP_CATALOG_PATH` ad-hoc guard to the CLI. Web and TUI read the env var unconditionally, so an ad-hoc invocation with it exported trips the catalog/ad-hoc conflict there. - Reword "all three clients reject the combination identically": they share the source-selection rules, but web uses its own inline matrix and is stricter, additionally rejecting `--header` with `--catalog`/`--config`. - Fill in the real defaults for `taskTtl` (60000) and `maxFetchRequests` (1000), which the surrounding text needs in order to explain omit-on-default writes. - Note that seeding is once per *file*, not per client: all three surfaces default to the same path, so whichever runs first decides the contents. - Correct the per-client `--` row, which claimed the TUI has no support. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Txmv2qqv3yeKgRzoqXytzD
|
Thanks — the 🔴 The
|
|
@claude review |
|
Claude finished @cliffhall's task in 4m 54s —— View job Review
All six prior findings land correctly — I re-verified each against source rather than taking the commit message for it, including installing 🟡 The two
|
…g repo-wide Second review pass on #1812. All markdown. - The two ad-hoc examples used `--cli` but omitted `--method`, so neither ran. Dropped `--cli` (the section demonstrates the ad-hoc grammar, not the CLI) and documented the CLI's two extra rules separately. Verified against the built launcher: `--method` is required, and the target must come *first* — `--cli --method tools/list node build/index.js` silently discards the target and falls back to the user's catalog rather than erroring, which is the more dangerous half and is now called out with a ✅/❌ pair. - `--server` was described as "Web and CLI only". It selects only under `--cli`: web warns and discards it in the catalog/config branches, and in the ad-hoc branch `serverName` is only read when a file source exists, so it is dropped there too. The TUI does not define the flag at all and rejects it as an unknown option. Both the flag table and the per-client table now say so. - Noted the web/TUI `--` asymmetry: they agree on where post-`--` tokens go, but web's `allowUnknownOption()` + `allowExcessArguments()` mean a separator is only needed for flags the Inspector defines, whereas the TUI has neither and needs `--` for any dash argument meant for the server. - Fixed the undifferentiated "seeded if missing" wording still left in the cli and tui READMEs — the exact phrasing this PR exists to remove, on the two surfaces that seed empty. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Txmv2qqv3yeKgRzoqXytzD
|
Took all four. Pushed in ae1e4c4. 🟡 The ad-hoc examples — right, and the CLI failure mode is worse than "requires
|
|
@claude review |
|
Claude finished @cliffhall's task in 4m 37s —— View job Review
All four prior findings land. I re-derived the argv claims rather than trusting the commit message — installed 🔵 A second conflict-matrix divergence, and on this axis web is looser
Net: 🔵 On web,
|
…r warning Third review pass on #1812. All markdown, all one-clause precision edits. - Added the second conflict-matrix divergence. The doc enumerated only the `--header` axis, where web is stricter; there is a second where web is looser: cli/tui count any `--transport` as an ad-hoc marker (`hasAdHocServerOptions`), while web exempts `--transport stdio`. So `--catalog c.json --transport stdio` errors on cli/tui and is silently accepted on web. Noted alongside the `--header` divergence and on the `--transport` row, whose "Ad-hoc targets only" read as universal. - Scoped the web `--server` warning. It fires only in the catalog and config branches; with an ad-hoc target the flag is dropped with no output at all, which is where a reader is most likely to have expected it to work. - Dropped the "both consequences of how it splits argv" framing: the target-first rule is, but `--method` is a plain validation unrelated to the split, and the claim invited the reader to look for a link that isn't there. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Txmv2qqv3yeKgRzoqXytzD
|
Took all three. Pushed in 2803866. 🔵 The
|
Closes #1811
Four README links pointed at files that don't exist on
v2/main, and the launcher README described catalog seeding as one behavior when it is two.Root cause
v1.5/mainis not an ancestor ofv2/main. The clients were merged across but the repo-rootdocs/folder was not, so the READMEs arrived still referencing it.docs/here held onlymcp-app-review.md, added later and independently.What's in the PR
docs/mcp-server-configuration.mddocs/launcher-config-consolidation-plan.mdv1.5/main, path drift correcteddocs/images/tui-screenshot.pngWhy the config doc is new rather than restored. The v1.5 file documents only
--config, predating the--catalog/--configsplit (writable-and-seeded vs. read-only-and-errors),MCP_CATALOG_PATH, and the mutual-exclusivity rules. Restoring it verbatim would have shipped a model that no longer exists. This was the most load-bearing of the four links: both the cli and tui READMEs delegate their entire "MCP server (which server to connect to)" section to it, so that flag surface had no in-repo documentation at all for two of the three clients.The plan doc kept its substance — single process, no
spawn(), shared processor incore/mcp/node/config.ts. Fixedlauncher/→clients/launcher/and the stale per-client-binary reference, and appended a v2 note on the non-workspace layout and the catalog/config split.The screenshot was regenerated rather than restored, since the v1.5 image shows an older UI. Captured from a real pty (Ink needs raw mode) replayed through a terminal emulator, so it keeps its colors, against a small three-server catalog rather than a wall of test servers.
The seeding fix
The launcher README said "created/seeded if missing" in both its
--weband--cli/--tuitables. It's two behaviors:DEFAULT_SEED_CONFIG(core/mcp/serverList.ts) —filesystem-server-default+everything-server-default.{ "mcpServers": {} }(seedEmptyCatalogincore/mcp/node/config.ts).Verified by running each surface against a throwaway
HOME. Both tables now state which, with a pointer between them.This wasn't hypothetical: the undifferentiated wording produced a wrong claim in the modelcontextprotocol.io Inspector docs (modelcontextprotocol/modelcontextprotocol#3143, tracked by #1803), caught in review. Corrected there too.
Verification
npm run validatepasses.README.md,AGENTS.md,clients/*/README.md, anddocs/*.md(checked by resolving every relative link target).docs/guides instead of just the App-review one.🤖 Generated with Claude Code
https://claude.ai/code/session_01JVu2ZxsKXHM7BL9vd1mzwK