fix: populate root .mcp.json so plugin MCP servers register#125
Merged
Conversation
Claude Code reads plugin MCP server definitions from the plugin root
.mcp.json. The root file shipped empty ({"mcpServers":{}}) while the
real 5-server manifest lived only in .claude-plugin/mcp.json, which
Claude Code does not read for plugin MCP registration. Net effect: zero
deliberation MCP servers registered on install, so none of the
mcp__deliberation-* tools (codex/gemini/grok/openrouter/deliberation)
were available, and /reload-plugins could not fix it (it reloads
skills/commands, not MCP connections).
Copy the canonical manifest into root .mcp.json to match the convention
used by every working plugin (ecc, playwright, telegram all declare MCP
in root .mcp.json). Verified locally: all four node bridges complete the
initialize handshake and expose their tools, and a live Grok call returns
correctly end-to-end.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
TL;DR: the plugin registered zero MCP servers on install. Root
.mcp.jsonshipped empty; Claude Code reads MCP definitions from that file, not from.claude-plugin/mcp.json.Symptom
After install +
/reload-plugins, none of themcp__deliberation-*tools (codex / gemini / grok / openrouter / deliberation) are available./deliberation:ask-groketc. fail with no provider./plugin update+/reload-pluginsdoes not fix it.Root cause
Claude Code reads a plugins MCP server definitions from the plugin root
.mcp.json. This repo shipped:.mcp.json->{"mcpServers": {}}(empty).claude-plugin/mcp.json-> the real 5-server manifestClaude Code does not read
.claude-plugin/mcp.jsonfor plugin MCP registration, so it registered nothing./reload-pluginsreloads skills/commands/rules, not MCP connections, so it could never recover. Regression from00be051("register MCP servers via plugin manifest").Every plugin whose MCP loads correctly (ecc, playwright, telegram) declares its servers in the root
.mcp.json.Fix
Copy the canonical 5-server manifest into root
.mcp.json. No other changes.Verification (local)
.mcp.jsonparse as valid JSONcodexbinary on PATH;XAI_API_KEY/OPENROUTER_API_KEYpresentinitializehandshake and list tools:gemini, gemini-replygrok, grok-replyopenrouter, openrouter-reply, openrouter-listask-all, consensus, ask-grok, ...)9Follow-up (not in this PR)
.claude-plugin/mcp.jsonappears unread by Claude Code for plugin MCP. Worth reconciling to a single source of truth (keep root.mcp.json, drop or repurpose the.claude-plugincopy, and update CLAUDE.md/docs that call it "the SOLE runtime MCP registration").Note: MCP servers connect at Claude Code startup, so installed users must fully restart Claude Code (not just
/reload-plugins) to pick up the servers after this lands.