Skip to content

docs(mcp): list one tool for every CLI command - #17

Merged
HaoZeke merged 3 commits into
mainfrom
mcp-tool-per-command
Nov 3, 2026
Merged

HaoZeke merged 3 commits into
mainfrom
mcp-tool-per-command

Conversation

@HaoZeke

@HaoZeke HaoZeke commented Nov 3, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Every CLI command now has its Model Context Protocol (MCP) tool named in docs/orgmode/reference/mcp.org.
The page also names the recipe and easyblock tools that have no command.

The server already registered those tools.
The manual named the command groups and left the tool names to tools/list.
The CLI reference also omitted eb_stack_shadow, and the README omitted eb_package_latest and the stack report tools.
A test now fails when a subcommand's tool is absent from mcp.org.

Before

The Tools section said tools/list returns the workflows of package, recipe, stack, target, campaign, and repro, plus pr-overlap, rebuild-set, component-reach, and easyblock-reach.
It named eb_build_test and no other tool.

After

The page has a table from each CLI command to its tool (39 commands; mcp publishes the catalog and has no tool) and a table of the 12 tools that edit files or run EasyBuild.
That is the 51-tool catalog.
eb_build_test still runs only when EB_STACK_ALLOW_BUILD=1.
cli.org records eb_stack_shadow: it requires easyconfigs and base, takes json, and returns the same report as stack shadow.
A shadow, or a recipe that does not parse, is a tool error.

mcp_org_lists_a_tool_per_cli_command walks every --help leaf except mcp, derives eb_<path>, and requires that name in tools/list and in mcp.org.

Tests

  • cargo fmt --all --check exited 0.
  • cargo clippy --locked --all-targets -- -D warnings finished with no warnings.
  • cargo test --locked --all-targets: 93 suites, 1504 passed, 0 failed, 10 ignored.
    The new test passed.
  • cargo package --locked packaged 1532 files and the verify build finished.
  • uvx prek run -a passed.
  • pixi run -e docs docbld printed build succeeded.
    scripts/check-doc-links.sh docs/build exited 0.
    The built MCP page contains eb_package_inspect, eb_package_latest, eb_stack_shadow, and eb_build_test.
cargo test --locked --test mcp_v1 mcp_org_lists_a_tool_per_cli_command -- --nocapture
cargo test --locked --all-targets

Note

Medium Risk
Changes to build-order graph traversal can omit dependencies from generated orders if installed-module matching is wrong; otherwise this is mostly documentation and arch-probe classification logic.

Overview
stack order --installed trims the dependency walk at modules the site already has (module list or Lmod tree, same inventory as stack gap --installed). Listed modules and anything only reachable through them stay out of the order file; --filter-deps still runs first. Stdout adds installed=N before order=; eb_stack_order accepts the same installed list and returns the count in JSON.

The build-order engine gains build_order_against_installed / graph helpers that treat installed keys as leaves without walking their dependencies, plus tests for that behavior and GCC-family resolution.

stack arch --probe-sources with two --arch flags now compares only those families when classifying arch-missing vs unreachable (documented and covered by new tests).

The MCP manual (mcp.org, README, CLI reference) lists all 51 tools in command-to-tool tables (including eb_stack_shadow, eb_package_latest, and stack tools that were missing from the README). mcp_org_lists_a_tool_per_cli_command fails if any CLI subcommand or registered tool is absent from that page.

Reviewed by Cursor Bugbot for commit 9a0f013. Bugbot is set up for automated code reviews on this repo. Configure here.

mcp.org named the command groups and left each tool name to tools/list.
eb_stack_shadow was missing from the CLI reference.
The README left out the stack report tools and package latest.
The manual now names every CLI command's tool and the recipe and easyblock tools.
A test fails when a subcommand's tool is absent from that page.
`stack order` walked every dependency the roots pin, including modules already on the machine.
`--installed` now stops that walk at each listed module and leaves that module and its own dependencies out of the order.
`--filter-deps` still drops dependencies first, and the modules that remain follow the synthetic GCC-family hierarchy.
A single `--arch` was the only probe the suite locked.
Two flags were free to consult the third default family again: a wheel neither named family can fetch would come back `arch-missing` when that third family can fetch it, and `unreachable` only for one `--arch`.

The new test probes x86_64 with aarch64, and aarch64 with riscv64, on the Kaleido fixture.
The first pair reports the aarch64 wheel as `arch-missing` and does not mention riscv64.
The second reports both wheels as `unreachable`.
Flag order, a CPU target, and a family named twice stay on that same set.
`eb_stack_arch` returns the same lines.
The how-to quotes the pair.
Three texts now say that two names are compared only with each other: the command reference, the `--probe-sources` help, and the tool description.
@HaoZeke
HaoZeke merged commit 155d0ef into main Nov 3, 2026
19 checks passed
@HaoZeke
HaoZeke deleted the mcp-tool-per-command branch November 4, 2026 09:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant