Context: Claude Code desktop app on Windows 11. Built-in MCP servers (claude-in-chrome, computer-use, mcp-registry, scheduled-tasks) load their tool name lists and full server instruction blocks into every session's initial context, even when unused.
What I tried:
deniedMcpServers in .claude/settings.json — only filters configured servers (user/plugin/managed-mcp.json), not built-ins.
- Per-project
disabledMcpServers in ~/.claude.json — works only for that exact project path; sessions launched in auto-generated git worktrees (<repo>/.claude/worktrees/<name>) get a fresh project key that does not inherit the parent repo's setting.
- Top-level
disabledMcpServers in ~/.claude.json — no effect (verified by observing the initial context of a fresh worktree session).
Request (either would solve it):
- A user-scope (global) way to disable built-in MCP servers, e.g. honor a top-level
disabledMcpServers in ~/.claude.json or a settings.json field.
- Worktree sessions inheriting the parent project's
disabledMcpServers (worktrees already share permission approvals with the parent).
Context: Claude Code desktop app on Windows 11. Built-in MCP servers (claude-in-chrome, computer-use, mcp-registry, scheduled-tasks) load their tool name lists and full server instruction blocks into every session's initial context, even when unused.
What I tried:
deniedMcpServersin.claude/settings.json— only filters configured servers (user/plugin/managed-mcp.json), not built-ins.disabledMcpServersin~/.claude.json— works only for that exact project path; sessions launched in auto-generated git worktrees (<repo>/.claude/worktrees/<name>) get a fresh project key that does not inherit the parent repo's setting.disabledMcpServersin~/.claude.json— no effect (verified by observing the initial context of a fresh worktree session).Request (either would solve it):
disabledMcpServersin~/.claude.jsonor a settings.json field.disabledMcpServers(worktrees already share permission approvals with the parent).