[FEATURE] Support MCP server configuration in ~/.claude/settings.json (user-managed file)

Open 💬 8 comments Opened Mar 8, 2026 by clouatre

Preflight Checklist

  • [x] I have searched existing requests and this feature hasn't been requested yet
  • [x] This is a single feature request (not multiple features)

Problem Statement

User-scoped MCP servers are stored in ~/.claude.json, a runtime state file also holding session caches, OAuth tokens, and 40+ machine-managed keys. This makes MCP configuration:

  • Invisible to dotfiles/config managers — the file cannot be safely symlinked or version-controlled
  • Silently lost on Claude Code updates, reinstalls, or state resets

There is no stable, user-editable path for persistent user-scoped MCP configuration.

Proposed Solution

Support mcpServers in ~/.claude/settings.json, the existing user-managed config file. Same schema as .mcp.json, with env var interpolation already supported:

{
  "mcpServers": {
    "context7": {
      "type": "http",
      "url": "https://mcp.context7.com/mcp",
      "headers": {
        "CONTEXT7_API_KEY": "${CONTEXT7_API_KEY}"
      }
    },
    "brave_search": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@brave/brave-search-mcp-server", "--transport", "stdio"],
      "env": {
        "BRAVE_API_KEY": "${BRAVE_API_KEY}"
      }
    }
  }
}

~/.claude.json could retain backwards compatibility; settings.json takes precedence or merges.

Alternative Solutions

Current workaround: a shell wrapper that re-injects MCP config from a separate file into ~/.claude.json before every invocation — requires jq, breaks on schema changes.

Priority

High - Significant impact on productivity

Feature Category

MCP server integration

Use Case Example

  1. Engineer manages their environment via a dotfiles repo (symlinks, version control)
  2. They symlink ~/.claude/settings.json from the repo
  3. MCP servers defined there are immediately available across all machines and reinstalls
  4. No shell wrappers, no jq merging, no silent config loss

Additional Context

  • ~/.claude/settings.json already supports env var interpolation — the infrastructure is in place
  • Comparable tools use dedicated, stable config files: Goose (~/.config/goose/), Kiro (~/.kiro/agents/)
  • Related: #5024 (~/.claude.json bloat), #11085 (persistent MCP enable/disable)

View original on GitHub ↗

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