Skip to content

Claude Code workflow (.github/workflows/claude.yml) and .mcp.json lost in the v2 tree swap — @claude no longer triggers #1850

Description

@cliffhall

Same regression class as #1843 (SECURITY.md): the v2 tree swap in #1817 replaced the default branch's tree, and .github/workflows/claude.yml did not exist in the v2 tree, so it was silently removed from main.

Two files are missing, not oneclaude.yml and the .mcp.json it depends on. See Scope below.

Impact

@claude mentions no longer trigger anything, repo-wide — on any PR or issue. issue_comment / pull_request_review_comment / issues events always run workflows from the default branch, so the loss on main disables the integration everywhere, including for PRs targeting v2/main.

Evidence

  • The workflow's API state is now deleted:
    gh api repos/modelcontextprotocol/inspector/actions/workflows/173749385 --jq "{name, path, state}"
    # => {"name":"Claude Code","path":".github/workflows/claude.yml","state":"deleted"}
  • Its last three runs (all issue_comment, latest 2026-07-28T03:10:05Z) are skipped.
  • The last commit carrying the file, ac3c1a12 ("Bump to version 1.0.0", Bump to version 1.0.0 #1720), is not an ancestor of current main.
  • .github/workflows/ on main today contains only main.yml.
  • Reproduced live: two @claude review comments on fix(core): mirror SEP-2243 x-mcp-header args to Mcp-Param-* on tools/call #1847 (19:08 and 19:10 UTC) produced no bot reply and no workflow run.

The last successful run was on #1825 (run 30315124707), which is where the file content can be recovered from:

gh api "repos/modelcontextprotocol/inspector/contents/.github/workflows/claude.yml?ref=ac3c1a12" --jq .content | base64 -d

Scope

Restoring the workflow alone is not enough. It runs with:

--mcp-config .mcp.json
--allowedTools "Bash,mcp__mcp-docs"

.mcp.json registers the mcp-docs HTTP server (https://modelcontextprotocol.io/mcp), and it went missing in the same swap — it survives only on v1/main and is absent from both main and v2/main:

git ls-tree --name-only origin/main .mcp.json     # (empty)
git ls-tree --name-only origin/v2/main .mcp.json  # (empty)
git ls-tree --name-only origin/v1/main .mcp.json  # .mcp.json

Without it the mcp__mcp-docs tools never resolve, so the workflow's MCP-documentation lookups — the thing --append-system-prompt explicitly instructs it to use for MCP-related reviews — silently do nothing. Both files must land together.

Fix

Restore both files byte-for-byte, to v2/main:

File Source sha256 Bytes
.github/workflows/claude.yml ac3c1a12 1c44f2d9… 3592
.mcp.json 47f92841 (v1/main) b0f0b8ea… 123

The @claude trigger is gated to OWNER / MEMBER / COLLABORATOR author associations, which remains the behavior we want under the issues-only contribution model (#1820).

Target branch: v2/main, not main. v2/main is the develop branch merged into main at milestone releases, so restoring to main alone would be undone by the next tree swap — exactly how these files were lost. The trade-off is that @claude stays non-functional until the next milestone merge reaches main, since issue_comment events only consult the default branch. If it's needed sooner, that wants a separate direct-to-main PR in addition to this one.

Related

SECURITY.md (#1843, and #1864 for the v2/main half), claude.yml, and .mcp.json are now three instances of one pattern, none caught by CI. A systematic sweep of what else the swap dropped is worth doing separately — since the two histories share no common ancestor, no git tooling will surface them on its own.

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