Over the past month of daily agent work in Claude Code and Cursor, I wired about a dozen MCP servers into my configs. Most lasted a day. Six are still running in every session I open. Here's the shortlist — what each server actually gives your agent, what it costs in setup and context, and the ones I ripped back out.
Every install command below was checked against the publisher's own repo or package registry, not lifted from a listicle.
MCP in 60 seconds
The Model Context Protocol is an open standard Anthropic introduced in late 2024 that now works across Claude Desktop and Claude Code, Cursor, Windsurf, VS Code agent mode, Cline, OpenAI's Codex CLI, and more. One protocol, any model, any data source: local files, a Git repo, a database, a browser, the live web.
What you install is the server — a small program that exposes typed tools to the model. Ask "what changed on my branch?" and the model doesn't guess; it calls your Git server's git_status tool and reads real output. Local servers run over stdio (usually one npx or uvx line); remote ones over HTTP with OAuth. Declare them once in JSON and every compatible client loads them. There's an official registry at registry.modelcontextprotocol.io if you want to browse beyond this list.
How I tested
Each server went into real rotation in two clients — Claude Code for terminal and repo work, Cursor for editor work — and survived only if it passed three checks:
- It saved a step I was already doing by hand
- Setup took under ten minutes
- It didn't wreck my context window
That third check matters more than any feature list. Every server ships tool schemas that sit in the model's context for the whole session — a bloated stack makes every model dumber in practice. Two servers below earn their place with a single tool. The rest of the list exists so you don't install them all.
The shortlist
| Server | What it gives your agent | Install | Verdict |
|---|---|---|---|
| Filesystem (official) | Scoped read/write on local files | npx -y @modelcontextprotocol/server-filesystem ~/code |
Install — default for desktop agents |
| Git (official) | Read, search, diff, commit in a chosen repo | uvx mcp-server-git --repository ~/code/proj |
Install for repo-heavy chats |
| GitHub MCP Server | Issues, PRs, Actions runs, Dependabot alerts | Remote: api.githubcopilot.com/mcp/ (OAuth) |
Install if GitHub is where you work |
| Playwright MCP (Microsoft) | Drives a real browser via the accessibility tree | npx @playwright/mcp@latest |
Install for anything web-facing |
| Context7 (Upstash) | Current, version-accurate library docs in context | npx -y @upstash/context7-mcp |
Install for framework work |
| Fetch (official) | Any URL → clean, chunked markdown | uvx mcp-server-fetch |
Install for research-heavy sessions |
| Memory (official) | Knowledge-graph memory across chats | npx -y @modelcontextprotocol/server-memory |
Situational — off by default |
| Brave Search (Brave) | Live web + local search via Brave API |
npx -y @brave/brave-search-mcp-server (API key) |
Situational — needs a free key |
| Sequential Thinking (official) | Numbered "thinking" steps with revisions | npx -y @modelcontextprotocol/server-sequential-thinking |
Skip — I removed it |
The six that survived, in detail
Filesystem (official)
Claude Desktop shipped with no way to touch your disk; the official Filesystem server fixes that with read, write, search, and move inside directories you explicitly pass as arguments. The design detail I care about: scoping is built in. You point it at ~/code, not your home folder, and it cannot wander outside. "Rename these functions across the package and update the tests" stops being a fantasy request.
GitHub MCP Server
The old community GitHub servers are archived — GitHub now ships its own in two forms: a remote server at api.githubcopilot.com/mcp/ you connect with OAuth (no token juggling; works in VS Code, Claude Desktop, Cursor) and a local Go build for clients without remote support. Repository browsing, issue and PR automation, Actions run analysis, Dependabot alerts. "Triage my open issues and draft replies" or "why did the last workflow fail" — answered from live data, not the model's memory of your repo. This one most changes how I work a GitHub week.
Playwright MCP (Microsoft)
Screenshot-based automation is a blunt instrument; Playwright MCP feeds the model the page's accessibility tree — structured, deterministic, readable without a vision model. Click, type, navigate, read back. Best MCP server for anything web-facing: verify a fix on the running app, scrape a docs page, smoke-test a form.
One honest caveat from Microsoft's own README: for pure coding agents, CLI-plus-skills is more token-efficient — tool schemas and accessibility trees eat context. Keep Playwright MCP for sessions needing persistent browser state (long exploratory runs, self-healing test loops); use leaner commands for quick page checks.
Context7 (Upstash)
Frameworks move faster than model training cutoffs. Context7 resolves the library you name, pulls its current docs and code examples, and hands them to the model mid-conversation. The difference between "here's how React class components worked in 2023" and an answer built on the API you actually installed. If you regularly ask agents to write against a specific framework, this earns its slot immediately.
Fetch (official)
Converts web pages to markdown in chunks so an agent can read a long page until it finds what it needs. It also ships the most thoughtful security default of any server I tested: refuses private, loopback, and link-local addresses — including cloud metadata endpoints — re-checking every redirect hop, with a documented flag to relax that when you mean it.
Git (official)
One command (uvx mcp-server-git), one argument (your repo path), and the agent reads status, diffs, logs, history — and creates commits when you allow it. Beats pasting diffs into chat, and it's the safest write-capable server to start with because every action lands in Git's own safety net.
What I removed
Sequential Thinking is the most-recommended server on the internet, and I cut it after a week. It gives the model a tool to record numbered thoughts with revisions and branches. Modern reasoning models already think in passes; the tool's calls add tokens to every session while rarely changing the outcome. On a strong model it's a tax; on a weak model, a fig leaf.
Memory is genuinely clever — a knowledge-graph store the model reads and writes across conversations — but it wins only when you curate it. Left alone it accumulates trivia and injects stale "facts" into later sessions. Run one long-lived assistant project and actually prune the graph? Try it. Otherwise the honest default is off.
I also skipped the archived reference servers: the old Postgres, SQLite, Puppeteer, Google Drive, and Slack entries now live in a servers-archived repo, and the project itself calls them educational reference implementations, not production-ready. Check whether an "official" server is still in the current reference list or archived — the difference matters.
Security: the part most lists skip
An MCP server is a capability grant with real side effects — file writes, commits, opened PRs, a browser session. Four rules I follow:
- Scope before you install. Filesystem gets project directories, never your home folder. Git points at one repo. The argument list is your permission boundary.
- Assume prompt injection reaches your tools. An agent that fetches pages or reads issues can encounter text written to manipulate it. Keep write-capable servers off in sessions reading untrusted content; review before bulk actions.
-
Pin and vet packages.
npx -ypulls the latest on every launch. Prefer verified publishers (@modelcontextprotocol,@microsoft,@github,@upstash,@brave) and pin versions in configs you share. - Least-privilege tokens. OAuth remote servers are convenient because they're powerful — check which account and scopes you approved. My GitHub connection can open PRs; if yours only needs to read issues, tighten it.
Two-minute setup
In Claude Code: claude mcp add playwright npx @playwright/mcp@latest. In Cursor: Settings → MCP, same command config. Claude Desktop reads claude_desktop_config.json — every entry is a command, arguments, optional env vars. Windows quirk: wrap npx with cmd /c or the server silently fails. After editing config, restart the client and confirm the green "connected" state — a typo'd package name fails quietly in most clients.
Who this is NOT for
- You use chat assistants for writing and research, not code — you need a couple of research servers at most, not a developer stack
- You're on a locked-down work machine — every
npxline becomes a ticket - You're hoping MCP makes a weak model smart — it doesn't; tools multiply a capable model's reach and a weak model's mistakes
- You're brand new to AI coding agents — install exactly one server (Filesystem or Git), learn the loop, then grow the stack. A dozen half-understood tools is how people conclude "MCP doesn't work"
The verdict
Five servers survived rotation: Filesystem, GitHub, Playwright, Context7, Fetch — with Git as the sixth for repository-heavy days. They cover the real loop of developer work: files, repos, issues, a browser, current docs, the open web. Everything else is situational (Memory, Brave Search), redundant on a modern model (Sequential Thinking), or an archived reference you shouldn't run in production.
Install the five, give each a narrow scope, and judge every future server by one question: did it remove a step I was already doing by hand? If not, uninstall it — the context it costs is real.
I test AI tools hands-on on my blog, where I publish the full write-up with install notes: Best MCP Servers for Developers (2026). Got an MCP server I should put through a week of real agent work? I'm easy to find.
Top comments (1)
Small tension between the pinning rule and the two-minute setup:
npx @playwright/mcp@latestis exactly the "pulls the latest on every launch" case. For a config you share, pin it to the versionnpm view @playwright/mcp versiongives you today. Still one line, and an upgrade becomes a deliberate diff instead of something that happens on a random Tuesday.On your third check: in Claude Code,
/contextshows how many tokens the MCP tool schemas take before you type anything. Running it once with everything installed and once with your six puts a number on "bloated stack", which makes the case for cutting servers much easier to argue with a team.