User-scope MCP servers not loaded in v2.1.77
Bug Description
User-scope MCP servers configured via claude mcp add --scope user are written to the top-level mcpServers key in ~/.claude.json but are not loaded by the runtime. Both claude mcp list (external CLI) and /mcp list (in-session) report "No MCP servers configured."
Only local-scope (project-level) servers work — i.e., servers stored inside projects.<path>.mcpServers in ~/.claude.json.
Steps to Reproduce
- Add an MCP server at user scope:
``bash``
claude mcp add --scope user my-server -- npx -y @some/mcp-server
- Confirm it was written to
~/.claude.jsonunder the top-levelmcpServerskey (it is) - Run
claude mcp list— reports no servers configured - Start a new Claude Code session, run
/mcp list— same result
Expected Behavior
User-scope MCP servers should be loaded globally across all projects, as documented.
Actual Behavior
claude mcp add --scope userwrites correctly to~/.claude.jsontop-levelmcpServersclaude mcp remove --scope userreads and removes from the same locationclaude mcp add --scope userdetects duplicates ("already exists in user config")- But
claude mcp listand the runtime never load user-scope servers - Only
--scope local(project-level) servers are loaded
Additional Observations
- Adding a server without
--scope(defaults tolocal) writes toprojects.<cwd>.mcpServers— these DO load - The
addandremovesubcommands correctly read/write user-scope, butlistandgetdo not - Deleting the project-level
mcpServerskey or setting it to{}does not cause user-scope servers to fall through - Format of the server JSON is identical between user-scope and local-scope (verified programmatically)
Environment
- Claude Code version: 2.1.77
- OS: macOS (Darwin 25.1.0)
- Shell: zsh
Workaround
Add MCP servers at local scope per-project, or use a script to copy project-level mcpServers across all project entries in ~/.claude.json.
🤖 Generated with Claude Code
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗