If you run more than a couple of MCP servers in Claude Code, you've probably hit
the loaded-tools warning (~40 tools). The usual fix is manually enabling/disabling
servers by hand every time your task changes, and remembering which tools depend
on which.
mcp-profile is a small, dependency-free CLI (+ a Claude Code skill) that lets
you define named profiles — e.g. "research", "coding", "deploy" — each listing
the MCP servers that task actually needs, then switch between them with one
command:
mcp-profile use research
It edits the same enabledMcpjsonServers / disabledMcpjsonServers fields
Claude Code already reads — no new config format, no daemon, no account, no
network calls. MIT licensed.
Repo: https://github.com/pozga/mcp-profile
Feedback wanted: does this match how you're actually hitting the tool-count
problem? What would make this worth paying for (team-shared profiles? a
dashboard?) vs. just a free utility?
Update: Thanks @alexshev for the comment below —
shipped exactly what you asked for. The default profile example now ships five
task-type profiles out of the box: coding, research, deploy, docs, data.
See the v0.2 commit.
Top comments (3)
Tool overload is an underrated agent-quality problem. Too many tools do not just add latency; they blur the decision surface and make the model spend more effort deciding what world it is in.
A small CLI for pruning or switching toolsets makes sense. I would want profiles by task type: coding, browser research, deployment, docs, data, etc. The best MCP setup is probably contextual, not maximal.
Thanks @alexshev for your input.
Added more default profiles + better way of handling own in latest version: github.com/pozga/mcp-profile
Nice. Profiles are the right abstraction for this because tool overload is usually contextual, not global. A coding session, a docs pass, and a deployment run should not expose the same menu of tools.
The better handling around inactive servers matters too. If the agent sees stale tools as available, it spends reasoning budget on paths that cannot actually execute.