MCP servers with disabled: true still load on session start

Resolved 💬 3 comments Opened Jan 12, 2026 by hflier Closed Jan 16, 2026

Description

MCP servers configured with "disabled": true in .mcp.json are still being loaded and their tools made available when starting a new Claude Code session.

Steps to Reproduce

  1. Create/update .mcp.json with a server set to disabled:
{
  "mcpServers": {
    "XcodeBuildMCP": {
      "disabled": true,
      "command": "npx",
      "args": ["-y", "xcodebuildmcp@latest"]
    }
  }
}
  1. Start a new Claude Code session (or restart an existing one)
  1. Observe that the MCP server's tools are still available in the session

Expected Behavior

MCP servers with "disabled": true should not be loaded on session start. Their tools should not appear in the available tools list.

Actual Behavior

The MCP server loads anyway and all its tools are available, requiring manual /mcp toggle to disable.

Environment

  • Claude Code CLI
  • macOS (Darwin 25.2.0)
  • XcodeBuildMCP configured with disabled: true

Context

This is particularly problematic for MCP servers with many tools (XcodeBuildMCP has 60+) which can trigger the "Tool names must be unique" API error in subagents (related to #17743). The workaround of setting disabled: true doesn't prevent the issue because the flag is ignored.

Workaround

Use /mcp command to manually disable the server each session.

View original on GitHub ↗

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