Which MCP Servers Are Actually Essential for Claude Code?
Problem
I started with 15 MCP servers configured in Claude Code. It felt like the right approach - more tools meant more capabilities, right?
After three months, I realized something was wrong. Claude was slower, context was burning faster, and half my servers never got used. When I checked my actual usage patterns, I found I was only actively using 6 servers. The other 9 were just noise.
The problem: every MCP server you add increases the system prompt size. Claude has to process all those tool definitions before it can even start working. I was paying for tokens I never used.
What I Tried
I went through a systematic cleanup process. Here’s what my configuration looked like before:
{ "mcpServers": { "filesystem": { "command": "npx", "args": ["-y", "@anthropic-ai/mcp-server-filesystem", "/Users/me/projects"] }, "git": { "command": "uvx", "args": ["mcp-server-git"] }, "github": { "command": "npx", "args": ["-y", "@anthropic-ai/mcp-server-github"] }, "postgres": { "command": "npx", "args": ["-y", "@anthropic-ai/mcp-server-postgres"] }, "puppeteer": { "command": "npx", "args": ["-y", "@anthropic-ai/mcp-server-puppeteer"] }, "memory": { "command": "npx", "args": ["-y", "@anthropic-ai/mcp-server-memory"] }, "sequential-thinking": { "command": "npx", "args": ["-y", "@anthropic-ai/mcp-server-sequential-thinking"] }, "fetch": { "command": "uvx", "args": ["mcp-server-fetch"] }, "brave-search": { "command": "npx", "args": ["-y", "@anthropic-ai/mcp-server-brave-search"] }, "slack": { "command": "npx", "args": ["-y", "@anthropic-ai/mcp-server-slack"] }, "google-calendar": { "command": "npx", "args": ["-y", "@anthropic-ai/mcp-server-google-calendar"] }, "google-maps": { "command": "npx", "args": ["-y", "@anthropic-ai/mcp-server-google-maps"] }, "youtube": { "command": "npx", "args": ["-y", "@anthropic-ai/mcp-server-youtube"] }, "weather": { "command": "npx", "args": ["-y", "@anthropic-ai/mcp-server-weather"] }, "spotify": { "command": "npx", "args": ["-y", "@anthropic-ai/mcp-server-spotify"] } }}That’s 15 servers. Each one adds tool definitions to the system prompt. Each one adds complexity to tool selection.
What Actually Matters
I tracked my usage for two weeks. Here’s what I found:
Server Times Used Notes─────────────────────────────────────────────filesystem 847 Built-in, essentialgit 412 Built-in, essentialgithub 156 PRs, issues, reviewspostgres 89 Database queriesmemory 34 Context across sessionspuppeteer 12 Web scraping (rare)sequential-thinking 8 Could use bash insteadfetch 5 Could use bash curlbrave-search 3 Could use gh CLIslack 0 Never usedgoogle-calendar 0 Never usedgoogle-maps 0 Never usedyoutube 0 Never usedweather 0 Never usedspotify 0 Never usedThe data was clear. I used 6 servers regularly. The other 9 were dead weight.
My Essential Stack
After cutting the noise, here’s my current configuration:
{ "mcpServers": { "filesystem": { "command": "npx", "args": ["-y", "@anthropic-ai/mcp-server-filesystem", "/Users/me/projects"] }, "git": { "command": "uvx", "args": ["mcp-server-git"] }, "github": { "command": "npx", "args": ["-y", "@anthropic-ai/mcp-server-github"], "env": { "GITHUB_TOKEN": "${GITHUB_TOKEN}" } }, "postgres": { "command": "npx", "args": ["-y", "@anthropic-ai/mcp-server-postgres"], "env": { "DATABASE_URL": "${DATABASE_URL}" } }, "memory": { "command": "npx", "args": ["-y", "@anthropic-ai/mcp-server-memory"] } }}5 servers total. Down from 15.
Why These 5?
Filesystem and Git - These are built into Claude Code. They handle 80% of my daily work: reading files, writing code, managing branches, viewing diffs. No need for external tools here.
GitHub - I work with pull requests, issues, and code reviews daily. The GitHub MCP server handles these efficiently:
- create_pull_request- list_issues- get_pull_request- create_issue_comment- merge_pull_requestPostgres - My projects use PostgreSQL databases. The MCP server lets Claude query schemas and data directly without me copying and pasting query results.
Memory - I use this for context that persists across sessions. It stores project-specific knowledge, coding preferences, and workflow patterns.
What I Replaced with Bash
Some MCP servers duplicate what bash commands already do well. I removed them and use bash instead:
| MCP Server | Bash Replacement |
|---|---|
| fetch | curl or wget |
| brave-search | gh CLI for GitHub search |
| sequential-thinking | Built-in Claude reasoning |
Here’s an example. Instead of using the fetch MCP server:
# Claude can run this directlycurl -s "https://api.example.com/data" | jq '.results'The gh CLI is often better than GitHub MCP for simple operations:
# gh CLI (faster for simple tasks)gh pr list --state open --author @megh issue create --title "Bug" --body "Description"
# GitHub MCP (better for complex operations)# Use when you need PR reviews, comments, multi-step operationsThe Decision Framework
I developed a simple framework for evaluating MCP servers:
┌─────────────────────────────────────────────────────────┐│ Should I add this MCP? │├─────────────────────────────────────────────────────────┤│ ││ Do I use this capability DAILY? ││ │ ││ ├── NO ──► Don't add. Use bash/script instead. ││ │ ││ └── YES ──► Does bash handle it well enough? ││ │ ││ ├── YES ──► Use bash. ││ │ ││ └── NO ──► Add MCP server. ││ │└─────────────────────────────────────────────────────────┘Daily use is the key criterion. If I only use something weekly or monthly, it doesn’t belong in my MCP config. I can invoke it manually when needed.
Community Insights
I’m not alone in this approach. In discussions with other Claude Code users, the consensus is clear:
“Less is more. Every MCP you add is more tools the agent has to choose from, which can actually slow down decision-making.”
The pattern I see across experienced users:
- Start with built-in tools (filesystem, git)
- Add 1-2 servers for daily workflow (GitHub, database)
- Add memory for cross-session context
- Everything else is situational
One user put it well: “I’d rather have 5 tools I use every day than 50 tools I have to think about.”
Common Mistakes
I made these mistakes when I started. Maybe you’re making them too:
Mistake 1: Adding servers “just in case”
// DON'T: Add servers you might need someday"youtube": { "command": "..." }, // I don't work with YouTube"spotify": { "command": "..." }, // I don't need music control"weather": { "command": "..." } // I can check weather in browserMistake 2: Duplicating built-in capabilities
// DON'T: Use external tools for built-in functionality"web-search": { "command": "..." } // Claude has WebSearch tool"bash-runner": { "command": "..." } // Claude has Bash toolMistake 3: Ignoring context costs
Every MCP server adds tools to Claude’s system prompt. When I loaded 15 servers, Claude had to process dozens of tool definitions before starting work. This burns context tokens and can slow down responses.
Mistake 4: Not measuring actual usage
I assumed I used all my servers. When I actually measured, 60% were never touched. Measurement revealed the truth.
How to Audit Your Setup
Run this process to find your dead weight:
Step 1: Enable logging
# macOSexport CLAUDE_DEBUG=1claude
# Watch for MCP tool invocations in logstail -f ~/Library/Logs/Claude/claude.log | grep "mcp_tool"Step 2: Track for 1-2 weeks
Note which MCP tools Claude actually invokes. I kept a simple text file:
2026-03-10: filesystem(12), git(8), github(3)2026-03-11: filesystem(15), git(4), postgres(2)2026-03-12: filesystem(9), git(11), memory(2)...Step 3: Calculate usage rates
filesystem: 847 uses (essential)git: 412 uses (essential)github: 156 uses (keep)postgres: 89 uses (keep)memory: 34 uses (keep)spotify: 0 uses (remove)youtube: 0 uses (remove)Step 4: Remove unused servers
Edit your config, remove the zeros, restart Claude.
The Result
My configuration is now lean and focused:
Before After Improvement───────────────────────────────────────────────────Servers: 15 5 -67%Tool definitions: ~120 ~40 -67%Context overhead: High Low SignificantDecision speed: Slower Faster NoticeableThe biggest improvement isn’t token savings - it’s decision clarity. With fewer tools, Claude makes faster, more confident choices about which tool to use.
Summary
In this post, I showed how I reduced my MCP server configuration from 15 to 5 based on actual usage data. The key insight: most users only need 2-4 servers for their daily workflow. Built-in filesystem and git servers handle 80% of work. Add 1-2 specialized servers for your domain (GitHub, database, memory) and stop there.
Every MCP server costs context tokens and adds cognitive overhead. Use the daily-use test: if you don’t use a capability daily, don’t add it to your config. Bash scripts and one-off tools handle occasional needs without cluttering your workflow.
Final Words + More Resources
My intention with this article was to help others share my knowledge and experience. If you want to contact me, you can contact by email: Email me
Here are also the most important links from this article along with some further resources that will help you in this scope:
Oh, and if you found these resources useful, don’t forget to support me by starring the repo on GitHub!
Comments