MCP servers in ~/.claude/mcp.json not reliably picked up on restart

Resolved 💬 2 comments Opened Feb 21, 2026 by jabba-jedi Closed Feb 21, 2026

Bug Description

MCP servers configured in ~/.claude/mcp.json are not reliably connected on Claude Code restart. Servers that start fine when tested manually are silently ignored when Claude Code launches. This is a recurring issue that happens repeatedly.

Steps to Reproduce

  1. Add an MCP server entry to ~/.claude/mcp.json
  2. Verify the server starts correctly manually with the same env vars — outputs "server running and connected via stdio"
  3. Restart Claude Code
  4. The new server does not appear in available tools — no error is shown

Expected Behavior

All servers in ~/.claude/mcp.json should connect on startup, or at minimum surface an error explaining why a server failed to connect.

Actual Behavior

  • Server is silently ignored. No error message.
  • Other servers in the same ~/.claude/mcp.json file connect fine.
  • claude mcp list shows "No MCP servers configured" even though ~/.claude/mcp.json has multiple working servers.
  • claude mcp add -s user ... writes to ~/.claude.json (a different file!), and only then the server connects after restart.

Root Cause Hypothesis

There's a disconnect between two config files:

  • ~/.claude/mcp.json — where users manually add server configs
  • ~/.claude.json — where claude mcp add actually writes

Some servers from ~/.claude/mcp.json DO connect while newly added ones don't, suggesting either a race condition, silent startup failure, or config file precedence issue.

Workaround

Use claude mcp add -s user <name> <command> [args] -e KEY=value CLI command instead of manually editing ~/.claude/mcp.json.

Environment

  • OS: macOS (Darwin 24.6.0)
  • Node.js: v25.3.0
  • Shell: zsh
  • Claude Code: latest (Feb 2026)

Impact

Significant DX issue. Users spend considerable time debugging server configs that are actually correct, restarting Claude Code multiple times, with zero feedback about what's wrong. The silent failure makes it very hard to diagnose.

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗