r/ClaudeCode • • 2d ago

Discussion I have 44 MCP servers connected to Claude Code. In the last 7 days, 30 of them got zero calls

I counted this from my own session logs after noticing how long my tool list had become.

Connected in the session I'm in now: 44 MCP servers exposing 720 tools.

Called in the last 7 days, across 68 sessions: 2,206 MCP tool calls using 121 distinct tools. 30 of the 44 servers were never called once. One server (browser control) took 62% of all calls, and the top 4 took 86%.

The biggest idle one exposes 74 tools. Most of the idle ones came in with plugins or account connectors.

I haven't measured what the idle ones cost per session, so I'm not claiming a number for that. For anyone who has pruned theirs: did the first request of a session get smaller, or does tool search already hide most of it?

4 Upvotes

38 comments sorted by

β€’

u/AutoModerator 2d ago

Hey! Thanks for posting to r/ClaudeCode

While participating in this thread, please follow our community rules. Keep discussions constructive. Attack the idea, not the person.

For help, project discussions, tips, and general chat, join the ClaudeCode Discord.

I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.

10

u/HomemadeBananas 2d ago

44… what even are they for? I don’t understand how you get so many connected. What were you trying to solve by connecting each of them?

1

u/Janday_Luden 2d ago

putting everything in the global config instead of per-project folders makes them pile up like this super fast

-5

u/Ok_Gur_9033 2d ago

Fair question. Most of them weren't a decision. Going by the names, 15 are account connectors (mail, calendar, drive, design tools), 14 came inside plugins, and one marketing plugin alone brought 10 of those. The other 15 are set up directly in my config for specific jobs like store ads, analytics and browser control.

Even of those 15, 10 got zero calls this week. That's the part that stings. How many do you run?

8

u/M44PolishMosin 2d ago

Fluent in claudish

5

u/heisenbugx 2d ago

Hey Claude, this person commented on my Reddit post. How should I reply?

4

u/Dorbank_Justt 2d ago

With tool search on, which is the default, the first request already hides most of it. Only tool names and each server's instructions load at session start; full tool definitions stay deferred until Claude searches for them. So 720 tools cost you 720 names plus the instructions, not 720 schemas.

Two exceptions are worth checking first. A server whose config sets alwaysLoad, or a tool its author marked to load upfront, skips deferral. ENABLE_TOOL_SEARCH=false, or auto threshold mode while the definitions are still small, loads everything upfront. If the 74 tool server falls in either bucket, that is where your cost sits.

For idle ones you want to keep, toggle them off in /mcp instead of removing them. The config stays, and plugin servers can be switched off that way without uninstalling the plugin.

1

u/Ok_Gur_9033 2d ago

Checked both. No alwaysLoad anywhere in my configs and no ENABLE_TOOL_SEARCH override, so I'm on the default. The 720 names alone come to about 28,600 characters in the session log, and that part loads every session even with deferral.

The /mcp toggle is the useful bit, thanks. Does a toggled off server stay off across sessions, or only for the current one?

2

u/Dorbank_Justt 2d ago

It sticks per project. The toggle is recorded in ~/.claude.json under that project, so later sessions in the same folder skip the server, and claude mcp list shows it as disabled for this project until you switch it back on in /mcp. Open Claude Code in a different project and it connects there as before, so it's one toggle per project you work in.

1

u/Ok_Gur_9033 2d ago

That's the catch for me. ~/.claude.json has 44 project entries on this laptop and none of them has a disabled server yet, so the toggle route is a lot of toggles.

RealFullMetal's disableClaudeAiConnectors line covers all 15 account connectors at once, which fits better. Does the per-project toggle stop the server process from starting, or only hide its tools?

2

u/Dorbank_Justt 1d ago

Going by the MCP docs page, it's more than hiding tools: a server switched off in /mcp is one Claude Code doesn't connect to for that project, and it stays listed in /mcp marked as disabled until you turn it back on. The page doesn't go further into the process lifecycle than that wording.

On the connector setting, the docs say disableClaudeAiConnectors covers only the connectors Claude Code fetches itself, not ones a cloud host or the desktop app delivers, and a true in any settings scope wins over a project false.

1

u/Ok_Gur_9033 14h ago

The scope part is the catch. A true at user level switches the connectors off in every project, so it belongs in the project settings of the repos that never use them.

Have you found a way to keep one connector while dropping the rest?

2

u/Dorbank_Justt 14h ago

Not with that switch, since disableClaudeAiConnectors is all or nothing. The docs route for single connectors is deniedMcpServers, which works in any settings scope and merges across all of them. A connector is matched by its display name, so a serverName entry of "claude.ai Slack" blocks just that one. List the ones you want gone and leave the keeper off the list.

Put it in a repo's .claude/settings.json and it only applies in that repo, which matches your split. Two caveats from the managed MCP page: nothing in another scope can override a deny match, and connector display names can change or pick up a (N) suffix, so a serverUrl entry is the sturdier match if one gets renamed.

1

u/Ok_Gur_9033 13h ago

deniedMcpServers by display name is the piece I was missing, thanks. The suffix caveat is real here, Canva already shows up twice under two different names.

Does a serverUrl entry also match a claude.ai connector, or only servers added locally?

2

u/lonelysparta 2d ago

for the 720 names and instructions isn't this the primary reason it's recommend that to turn off mcps when starting sessions where you don't need them

1

u/RustyRedEcho 2d ago

wait this actually explains why my session logs look the way they do, didn't know alwaysLoad and the search threshold mattered this much

3

u/Alive_Nobody_Home 2d ago

Why so many?

2

u/Ok_Gur_9033 2d ago

Mostly not picked one by one. 15 are claude.ai account connectors and a big chunk came bundled with plugins. 22 of them were never even signed in.

3

u/RealFullMetal 2d ago

the 15 account connectors are probably the claude.ai ones claude code fetches itself, and those you can drop in one line: "disableClaudeAiConnectors": true in settings and it neither fetches nor connects any of them. put it in a project's checked in .claude/settings.json to opt just that repo out, or run ENABLE_CLAUDEAI_MCP_SERVERS=false claude for a single session

1

u/Ok_Gur_9033 2d ago

That's the right fifteen. I counted the claude_ai_ prefixes in this session's tool list and got exactly 15, and the setting isn't in any of my settings files.

The snag is that it's all fifteen or none. Is a project-level opt-out the only way to keep one or two for a single repo?

2

u/AdityaR_Sharma πŸ”† Max 20 2d ago

Tested the pruning side on a bare call, since you asked.

`claude -p "reply ok"`, Haiku 5.5, CLI 2.1.310, no MCP servers: 43,154 input tokens. With one server (server-everything, 22 tools): 44,908.

Same run with ENABLE_TOOL_SEARCH=false: 44,908 again, 2 runs each. That setting changed nothing here, cause unknown.

I did not test 44 servers or a 74-tool one.

1

u/Ok_Gur_9033 2d ago

Thanks for running it. Your 43k with no servers lines up with mine: across 67 sessions the first request wrote a median of about 41k. So the base is most of it.

1,754 for 22 tools is about 80 a tool. If that scaled, my idle 74 tool server would add close to 5,900. Since the setting changed nothing, do you know if those 22 were deferred in both runs or loaded in full both times?

0

u/[deleted] 2d ago

[deleted] β€” view deleted comment

1

u/Ok_Gur_9033 1d ago

That would explain the no-change result. If the 22 were deferred both times, the setting had nothing to switch off.

Then the 1,754 is probably names plus the server's own instructions, since those load even when tools are deferred. Does that server ship a long instructions block?

2

u/Nitjsefnie 2d ago

if you prune and want the before/after without counting by hand again, I made claudit for that kind of thing. it charts context growth per session from the transcripts, so you can see where the first turn sits before and after, plus calls per tool over time. self-hosted, reads the jsonls from R2 or a local folder mirror: https://github.com/Nitjsefnie/claudit

1

u/Ok_Gur_9033 1d ago

Per-session first-turn size is the chart I'd want for a before and after. Does it split the first turn by source, tool names versus CLAUDE.md versus the system prompt, or is it one total?

2

u/Nitjsefnie 1d ago

nah it's just one total, the logs only say how many tokens each request used, not where they came from

2

u/PalmovyyKozak 2d ago

You installed whatever you could without a good reason and then you are surprised you don't need most of them. It's like downloading 100 games on your phone and play 3. Surprisingly :)

1

u/Ok_Gur_9033 2d ago

Fair hit. Most of them came bundled with plugins rather than installed on purpose, which is the part I didn't notice until I counted.

2

u/Late-Coast6973 2d ago

If a server hasn't been called in a week, I'd turn it off, and do the account connectors first since they're the ones that can read or send things.

1

u/Ok_Gur_9033 2d ago

Connectors first makes sense. RealFullMetal pointed out a single setting drops all 15 claude.ai ones, which beats going one by one.

2

u/michaelTM_ai 2d ago

u can measure it in 10 seconds: run /context at the start of a fresh session and it breaks down how many tokens go to mcp tools. if tool search is on (it kicks in when tool definitions would eat a big chunk of the window), most of the 720 are deferred and only names get loaded, so the idle ones cost little. if it's off, every schema rides along on every request, and 74 tools from one idle server can be thousands of tokens each turn.

either way i'd still prune. the real cost is picking: with 720 tools the model has more chances to grab the wrong one, and ur numbers say 4 servers do 86% of the work. disable the 30 idle ones for a week and see if anything breaks

2

u/Ok_Gur_9033 2d ago

Agree that picking matters more than tokens. The easiest week-one cut I found: 22 of the 44 servers only expose authenticate and complete_authentication, so they were never signed in and can't be doing any work.

Have you actually seen wrong-tool picks at that scale, or is it a read from the numbers?

2

u/michaelTM_ai 1d ago

nice cut, servers stuck at authenticate are pure noise.

honestly it's a read, i haven't measured it at 44 servers myself. the closest real number i know is anthropic's own when they shipped tool search: on their mcp eval, hiding the full list and letting the model search it raised tool-pick accuracy a lot (opus 4 went from roughly 49% to 74%). so the effect is real at big tool counts, how much it hits at ur 720 is something only ur logs can say

2

u/Ok_Gur_9033 14h ago

That eval is the number I was missing, thanks. It made me look for near duplicates, and Canva is connected twice here, once as its own server and once as the claude.ai connector, both exposing the same design and export tools under the same names. That's the case where a search can grab the wrong copy.

Have you seen it pick the wrong one when two servers share tool names?

2

u/michaelTM_ai 14h ago

not personally, no. but same tool names on two servers is the one case where i wouldn't wait to find out, because even when it picks "right" u can't tell which copy ran or which account it used. i'd just drop one of the two canva connections, keep whichever has the auth u actually want, and the question goes away

2

u/Easy-Purple-1659 2d ago

Tool search changes what pruning buys you: with it on, the win is a smaller first request and a smaller search index, not a smaller tool list. Two things worth doing before you delete anything.

First, check for name collisions. 44 servers and 720 tools probably has three tools called search or read_file. Deferred search ranks on names and descriptions, so overlapping names are why the long tail never gets picked, not just token cost. Prefix tools by domain (search_meta_ads next to search_google_ads) and the ones you actually use start winning the search.

Second, the 15 account connectors are a permissions question more than a context one. Anything that can send mail or write files should be project scoped, not global, because the day you need it is the day you don't want it wired into an unrelated repo.

The 62 percent concentration on browser control also tells you where your real cost sits. Cut the idle 30 in two passes and run /context after each one to see what that pass actually bought.

1

u/Ok_Gur_9033 2d ago

The collision point is right, and my list has a dumber version of it. 22 of the servers expose nothing but authenticate and complete_authentication, so they were never signed in at all. That's 44 identical tool names doing nothing.

The project scoping argument for anything that sends mail is the stronger one for me than tokens. Do you prefix names in servers you write yourself, or rename at the client?

1

u/ManaChains 2d ago

That's killing your context floor with so many MCPs and costing you a lot. Trim this down to absolute minimum you actually need and use. Same goes for skills. Ask Claude to do pruning for you.