MCP servers I use every single day. What's in your stack?
TL;DR Highlight
A dev installed 15 MCP servers for Claude Code, then trimmed down to 6 after 3 months of real use. A practical guide to which MCPs actually deliver value and which are just noise.
Who Should Read
Developers adopting Claude Code into their workflow, or those already using it but unsure how to configure their MCP stack.
Core Mechanics
- For Filesystem + Git MCP, stick with the built-in versions rather than third-party ones. This conclusion came from direct experience — they tried third-party, then switched back.
- Connecting GitHub MCP lets Claude handle issue creation, PR reviews, and code search, practically eliminating the need to open GitHub in a browser. Install command: `claude mcp add --transport http github https://api.githubcopilot.com/mcp/`.
- AgentMail MCP gives the agent its own email inbox. It's been genuinely useful for automating tasks like summarizing competitor newsletters and triaging deployment failure alerts.
- Postgres/Supabase MCP provides direct DB access, so requests like 'check if this user exists' can be handled without writing queries or opening TablePlus. Use caution with production DBs though.
- Playwright MCP handles browser automation (screenshots, form filling, scraping) — not frequently used but irreplaceable when needed.
- The more MCPs you add, the more tools the agent has to choose from, which can actually degrade performance. This is exactly why they went from 15 to 6 — 'less is more' is the practical takeaway.
Evidence
- After 3 months, Slack MCP was removed because the agent kept trying to post updates creating too much noise. Notion MCP was cut because they didn't use Notion enough. Calendar MCP seemed useful but never got used once.
- AgentMail seemed unnecessary at first, but became one of the most valuable MCPs — the agent summarizes competitor newsletters weekly and triages deployment failure alerts before bedtime.
- After adding GitHub MCP, opening GitHub in a browser became rare outside of visual diff review. Issue creation, PR reviews, and code search all happen within Claude.
- Memory/knowledge graph MCP is currently using the default memory MCP for cross-session project context, though they mentioned experimenting with better options.
How to Apply
- If you have 5+ MCPs installed in Claude Code, check which ones actually triggered in the past 2 weeks and remove the unused ones. Fewer tools means better agent selection accuracy.
- If you haven't connected GitHub, run `claude mcp add --transport http github https://api.githubcopilot.com/mcp/` right now. You'll be able to handle PR reviews and issue creation directly within Claude.
- If you're manually checking deployment failures or error alerts, connect AgentMail MCP (`npx -y @agentmail/mcp`) and create a workflow where the agent triages alerts for you.
Code Example
snippet
// Claude Code MCP configuration example (claude_desktop_config.json or .claude/config)
{
"mcpServers": {
"filesystem": { /* built-in default */ },
"github": {
// claude mcp add --transport http github https://api.githubcopilot.com/mcp/
},
"postgres": {
// claude mcp add --transport stdio db -- npx -y @bytebase/dbhub
},
"agentmail": {
// claude mcp add agentmail -e AGENTMAIL_API_KEY=your_key -- npx -y @agentmail/mcp
},
"playwright": {
// claude mcp add --transport stdio playwright -- npx -y @playwright/mcp@latest
},
"memory": { /* basic memory mcp */ }
}
}Terminology
MCP (Model Context Protocol)A protocol that lets AI agents like Claude integrate with external tools and services (filesystem, DB, browser, etc.) in a standardized way. Think of it as plugins that extend capabilities.
TriageBorrowed from medicine — here it means classifying alerts or issues by priority and handling only what's necessary.
knowledge graphA data representation storing entities (people, concepts, events) and their relationships as node-edge structures. Used in Memory MCP to retain project context across sessions.
stdio (Standard I/O) transportOne of the communication methods between MCP servers and clients. Communicates via standard input/output streams with local processes — unlike HTTP transport, runs locally without a separate server.