[FEATURE] Per-server startDisabled for MCP servers (disabledMcpServers is per-folder only; every session spawns every server)
Preflight Checklist
- [x] I have searched existing requests and this feature hasn't been requested yet (earlier requests were closed without shipping it, see below)
- [x] This is a single feature request (not multiple features)
Problem Statement
There is no way to configure an MCP server that is defined once but does not start by default, so every session in every folder spawns it.
- The
/mcptoggle writesprojects.<cwd>.disabledMcpServersin~/.claude.json, which covers one folder only. Any folder or worktree opened later starts the server again. - A top-level
disabledMcpServersin~/.claude/settings.jsonis ignored. Tested on 2.1.285:claude -p --settings '{"disabledMcpServers":["anki","timing-db"]}' …still exposed both servers' tools. - There is no per-server
enabled: false/autoStart: falsefield.
Tool search (#17668) fixed the context cost, but not the process cost. Each stdio server is a live process tree per session, including pre-warmed background spare sessions. On my machine, with 17 sessions open, one rarely used server (chrome-devtools-mcp, which I need only for Lighthouse and performance traces) had 17 copies using about 830 MB of RAM. The only way to keep it off everywhere is to write the server name into the disabled list of all ~120 project entries in ~/.claude.json by script, and then repeat that for every new folder.
Proposed Solution
A per-server flag, honored in every scope:
{
"mcpServers": {
"chrome-devtools-real": {
"command": "npx",
"args": ["chrome-devtools-mcp@latest", "--browserUrl", "http://127.0.0.1:9410"],
"startDisabled": true
}
}
}
- The server is not spawned at session start.
/mcplists it as disabled and can enable it for the current session (optionally persisting that per project, as the toggle does today).
An equivalent alternative is a user-level disabledMcpServers in settings.json that acts as the default for every project, with per-project enabledMcpServers able to override it.
Alternative Solutions
- Remove the server and re-add it with
claude mcp addwhenever it is needed. - Start sessions with
--mcp-config <file>when the server is needed. - Script the per-project
disabledMcpServerslist across all project entries, which misses every new folder. - Agent-scoped
mcpServersin a subagent definition (#17668). This helps only when the server is used exclusively inside that subagent.
Priority
Medium - Would be very helpful
Feature Category
MCP server integration
Use Case Example
- I have one heavyweight browser-automation MCP server that I need a few times a month.
- I set
startDisabled: trueon it once, at user scope. - Day to day, none of my ~15–30 concurrent sessions spawns it.
- When a session needs it,
/mcp→ enable, and the server starts in that session only.
Additional Context
Earlier requests for the same thing, all closed without the feature:
- #23411 "Support per-MCP-server startDisabled option": closed as a duplicate of #17668
- #17921 "disabled option for MCP servers in .mcp.json": closed as inactive
- #16254 and #18497, lazy/on-demand MCP loading: closed as inactive
- #20467 and #23410: closed as duplicates
#17668 was closed as completed on the strength of tool search and agent-scoped servers. Neither of those stops the server process from being spawned in every session.
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗