From 184b4a91b7cf16067c3c413027a62aaa6a32b7e3 Mon Sep 17 00:00:00 2001 From: Rafael Richards Date: Mon, 11 May 2026 08:09:07 -0400 Subject: [PATCH] phase4-D: onboard tool:m-dev-tools-mcp + first GitHub Release wheel MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Track D §5 D3 + D4. Onboards the new tier-3 repo m-dev-tools-mcp into the org catalog and adds an agent_integration intent so "point my MCP-capable agent at the m-dev-tools catalog" routes to tool:m-dev-tools-mcp. Source-of-truth lives in m-dev-tools-mcp's dist/repo.meta.json (its phase4-D PR #5 renamed exposes.tools → exposes.mcp_tools and added exposes.release_wheel pointing at the v0.1.0 release asset). The new TIER_3 entry here is the org-side pickup: build-catalog.py fetches that repo.meta.json and translates each exposes. into _url, so the generated entry naturally carries: * repo_meta_url — the TIER_3 URL itself * mcp_tools_url — points at dist/mcp-tools.json (the 3-tool manifest) * release_wheel_url — absolute URL of v0.1.0 wheel asset * consumes / consumed_by — m-dev-tools-mcp consumes m-cli + m-stdlib + m-standard; inverse edges land on those entries No hand-edits to tools.json — `make catalog` byte-idempotent (regen-twice diff is empty). Preserves the "facts in repos, routing in meta-repo" architectural inversion. * profile/build/build-catalog.py: TIER_3 gains the m-dev-tools-mcp URL; comment bumped "nine onboarded repos" → "ten". * profile/task_index.json: new infra.agent_integration intent with doc URL pointing at the MCP server's examples/claude-code/README.md. Schema accepts the addition without bump (additive change, per schema-changelog discipline). * profile/llms.txt: new "Agent integration" section pointing at the m-dev-tools-mcp AGENTS.md. 26 → 30 lines (under the 40-line cap per parent plan §4.6). * profile/tools.json: regenerated. New tools.m-dev-tools-mcp entry with the URL-pointer fields; consumed_by inverse edges added to tools.m-cli / tools.m-stdlib / tools.m-standard. Verified locally: * make catalog → byte-identical on regen * make validate-catalog → OK * make phase0-smoke → PASS (no new tier-1 entries) * make recipes-check → 4/4 clean * make handshake → 8/8 steps green The v0.1.0 GitHub Release (https://github.com/m-dev-tools/m-dev-tools-mcp/releases/tag/v0.1.0) was cut from m-dev-tools-mcp main at 1ae96c4 before this PR; the wheel asset is the one release_wheel_url points at. --- profile/build/build-catalog.py | 3 ++- profile/llms.txt | 4 ++++ profile/task_index.json | 6 ++++++ profile/tools.json | 21 +++++++++++++++++++++ 4 files changed, 33 insertions(+), 1 deletion(-) diff --git a/profile/build/build-catalog.py b/profile/build/build-catalog.py index 7afdc07..4f34666 100755 --- a/profile/build/build-catalog.py +++ b/profile/build/build-catalog.py @@ -61,7 +61,7 @@ _spec.loader.exec_module(_validate_repo_meta) -# ----- the canonical TIER_1 + TIER_2 + TIER_3 list (nine onboarded repos) --- +# ----- the canonical TIER_1 + TIER_2 + TIER_3 list (ten onboarded repos) --- TIER_1 = [ "https://raw.githubusercontent.com/m-dev-tools/m-cli/main/dist/repo.meta.json", @@ -79,6 +79,7 @@ "https://raw.githubusercontent.com/m-dev-tools/tree-sitter-m-vscode/main/dist/repo.meta.json", "https://raw.githubusercontent.com/m-dev-tools/m-stdlib-vscode/main/dist/repo.meta.json", "https://raw.githubusercontent.com/m-dev-tools/m-cli-extras/main/dist/repo.meta.json", + "https://raw.githubusercontent.com/m-dev-tools/m-dev-tools-mcp/main/dist/repo.meta.json", ] # Top-level keys we copy from the prior tools.json verbatim. These hold diff --git a/profile/llms.txt b/profile/llms.txt index 157c65b..dc99e36 100644 --- a/profile/llms.txt +++ b/profile/llms.txt @@ -18,6 +18,10 @@ - [m-standard](https://github.com/m-dev-tools/m-standard/blob/main/AGENTS.md): language reference data (grammar, tokens) - [tree-sitter-m](https://github.com/m-dev-tools/tree-sitter-m/blob/main/AGENTS.md): parser / AST +## Agent integration + +- [m-dev-tools-mcp](https://github.com/m-dev-tools/m-dev-tools-mcp/blob/main/AGENTS.md): MCP server wrapping this catalog — `route_intent` / `describe` / `verify` + ## Guardrails - Do not invent STD* APIs or `m` subcommands; route the gap to the owning repo. diff --git a/profile/task_index.json b/profile/task_index.json index edf3860..10e26c6 100644 --- a/profile/task_index.json +++ b/profile/task_index.json @@ -272,6 +272,12 @@ "intent": "Validate against VistA's 39,330-routine corpus", "primary": "tool:tree-sitter-m", "see_also": ["cmd:m-cli#lint"] + }, + "agent_integration": { + "intent": "Point my MCP-capable agent at the m-dev-tools catalog", + "primary": "tool:m-dev-tools-mcp", + "see_also": ["cmd:m-cli#doctor", "doc:m-dev-tools#ai-discoverability-plan"], + "doc": "https://github.com/m-dev-tools/m-dev-tools-mcp/blob/main/examples/claude-code/README.md" } }, diff --git a/profile/tools.json b/profile/tools.json index 1ce46c0..f24dad9 100644 --- a/profile/tools.json +++ b/profile/tools.json @@ -42,6 +42,7 @@ "commands_url": "https://raw.githubusercontent.com/m-dev-tools/m-cli/main/dist/commands.json", "consumed_by": [ "tool:m-cli-extras", + "tool:m-dev-tools-mcp", "tool:tree-sitter-m-vscode" ], "consumes": [ @@ -76,6 +77,24 @@ "status": "active", "verified_on": "2026-05-10" }, + "m-dev-tools-mcp": { + "agent_instructions": "https://github.com/m-dev-tools/m-dev-tools-mcp/blob/main/AGENTS.md", + "consumes": [ + "tool:m-cli", + "tool:m-stdlib", + "tool:m-standard" + ], + "id": "tool:m-dev-tools-mcp", + "language": "python", + "license": "AGPL-3.0", + "mcp_tools_url": "https://raw.githubusercontent.com/m-dev-tools/m-dev-tools-mcp/main/dist/mcp-tools.json", + "release_wheel_url": "https://github.com/m-dev-tools/m-dev-tools-mcp/releases/download/v0.1.0/m_dev_tools_mcp-0.1.0-py3-none-any.whl", + "repo": "https://github.com/m-dev-tools/m-dev-tools-mcp", + "repo_meta_url": "https://raw.githubusercontent.com/m-dev-tools/m-dev-tools-mcp/main/dist/repo.meta.json", + "role": "MCP server wrapping the m-dev-tools org catalog as route_intent / describe / verify tools", + "status": "active", + "verified_on": "2026-05-11" + }, "m-modern-corpus": { "agent_instructions": "https://github.com/m-dev-tools/m-modern-corpus/blob/main/AGENTS.md", "id": "tool:m-modern-corpus", @@ -95,6 +114,7 @@ "commands_url": "https://raw.githubusercontent.com/m-dev-tools/m-standard/main/integrated/commands.tsv", "consumed_by": [ "tool:m-cli", + "tool:m-dev-tools-mcp", "tool:tree-sitter-m" ], "errors_url": "https://raw.githubusercontent.com/m-dev-tools/m-standard/main/integrated/errors.tsv", @@ -117,6 +137,7 @@ "m-stdlib": { "agent_instructions": "https://github.com/m-dev-tools/m-stdlib/blob/main/AGENTS.md", "consumed_by": [ + "tool:m-dev-tools-mcp", "tool:m-stdlib-vscode" ], "consumes": [