Originally published at heycc.cn. This is a mirrored copy — the canonical version is kept up to date at the source.
Best MCP Servers for Claude Code in 2026: A Curated, Job-by-Job Guide
There are now thousands of MCP servers. You do not need them. The right number for a working setup is closer to five than fifty, and the skill is matching a server to a job you actually do every day, not collecting tools because a listicle ranked them.
The organizing principle here is job, not popularity. Each entry names one server worth installing for that job, gives the exact claude mcp add command verified against official docs, and flags the gotchas. If you have not wired up your first server yet, read the mechanics in How to set up an MCP server in Claude Code first — this article assumes you know how claude mcp add works and focuses on which servers earn a slot.
One thing changed in 2026 that makes curation matter less than it used to: Claude Code now ships MCP tool search on by default. Only tool names and server instructions load at session start; full tool schemas are deferred until Claude needs them. So adding another server costs almost nothing in context, and there is no fixed per-server tool cap. That removes the old "too many tools blows my context window" excuse — but it does not remove the security cost of connecting servers you do not trust. Curate for trust and signal, not for context budget.
The landscape shifted: the reference repo got smaller
If you are working from a 2024-era list, throw it out. The official modelcontextprotocol/servers repo now maintains only seven reference servers:
- Everything — a test/demo server
- Fetch — fetch and convert web content
- Filesystem — read/write allow-listed directories
- Git — read, search, and manipulate a repo
- Memory — a persistent knowledge graph
- Sequential Thinking — structured multi-step reasoning
- Time — time and timezone conversion
Everything else you remember as "official" — GitHub, GitLab, PostgreSQL, Puppeteer, Slack, Google Drive/Maps, Brave Search, Redis, Sentry, SQLite — was moved to a separate servers-archived repo and is no longer maintained there. The important consequence: for several of these jobs, the real maintained server is now a first-party vendor server (GitHub's own, Microsoft's own, Brave's own), not an Anthropic reference. Installing the archived version is how you end up debugging a server nobody patches.
The three filters every pick had to clear
In order:
-
Official-source verification. Every command below is checked against
modelcontextprotocol.ioor the server's own repo/docs, not a blog's copy of a copy. - Transport correctness. stdio vs. HTTP vs. SSE is not interchangeable. The wrong transport is the single most common reason a server "won't connect."
- Real daily value. A server has to replace something you currently paste into chat by hand.
The decision table
Find your job, install one thing, move on.
| The job you have | Server to install | Who maintains it | Transport |
|---|---|---|---|
| Read/write project files | Filesystem | Anthropic reference | stdio (npx) |
| Inspect/commit a git repo | Git | Anthropic reference | stdio (uvx) |
| Remember facts across sessions | Memory | Anthropic reference | stdio (npx) |
| PRs, issues, CI, code scanning | github-mcp-server | GitHub (official) | HTTP (remote) |
| Drive a real browser / E2E test | Playwright MCP | Microsoft (official) | stdio (npx) |
| Natural-language DB queries | dbhub (@bytebase/dbhub) |
Bytebase | stdio (npx) |
| Live web search for the model | Tavily or Brave | Tavily / Brave (official) | HTTP / stdio |
| Up-to-date library docs | Context7 | Upstash | stdio or remote |
Job 1: Touch the local filesystem and git
These two are the closest thing to "always install." Filesystem is allow-listed by directory — you pass the folders Claude may read and write, and nothing else is reachable:
claude mcp add --transport stdio filesystem \
-- npx -y @modelcontextprotocol/server-filesystem ~/projects ~/notes
Note the --. For stdio servers, the double dash separates Claude's own flags (--transport, --env, --scope) from the command that runs the server. Everything after -- is passed to the server untouched. Forget it and Claude Code tries to parse the server's own flags as its own — the number-one stdio install failure.
Git ships as a Python server, run with uvx (or pip install mcp-server-git):
claude mcp add --transport stdio git -- uvx mcp-server-git
Memory, if you want a knowledge graph that survives across sessions:
claude mcp add --transport stdio memory \
-- npx -y @modelcontextprotocol/server-memory
Job 2: Work with GitHub (and stop pasting PR diffs)
This is where the "official" label moved. The maintained GitHub server is now GitHub's own github/github-mcp-server, not an Anthropic reference. The remote endpoint is https://api.githubcopilot.com/mcp/ over HTTP, and Claude Code's docs show adding it with a personal access token in the header:
claude mcp add --transport http github https://api.githubcopilot.com/mcp/ \
--header "Authorization: Bearer YOUR_GITHUB_PAT"
What you get is real: toolsets for repos, issues, pull_requests, actions (CI/CD workflows), and code_security (Code Scanning), among others. When you do not specify toolsets, the default activates context, repos, issues, pull_requests, and users — enough to review a PR, file an issue, and read repo context out of the box. Prefer to run it locally? A Docker image is published at ghcr.io/github/github-mcp-server.
Job 3: Drive a real browser
For end-to-end testing, screenshotting flows, or "click through the signup and tell me what breaks," the pick is Microsoft's official Playwright MCP (microsoft/playwright-mcp):
claude mcp add playwright npx @playwright/mcp@latest
The reason it is the default over older browser servers: it drives the page through Playwright's structured accessibility tree, not pixels, so no vision model is required and the model operates on deterministic, labeled elements. It needs Node.js 18 or newer. If you remember the archived puppeteer server, this is its maintained, vision-free successor.
Job 4: Query a database in plain English
Claude Code's own docs demonstrate database access through dbhub (@bytebase/dbhub) over stdio, pointed at a connection string:
claude mcp add --transport stdio db \
-- npx -y @bytebase/dbhub \
--dsn "postgresql://readonly:pass@prod.db.com:5432/analytics"
Then ask "show me the schema for the orders table" or "find customers with no purchase in 90 days" and get natural-language queries plus schema inspection. The detail that decides whether this is safe sits in the DSN: connect with a read-only role against anything you care about. Handing an LLM a writable production credential is the kind of mistake you only make once, MCP or not.
Job 5: Give the model live web access
Three good options, and they are not interchangeable. They split cleanly by what kind of retrieval you need:
| Pick | When it wins | Install |
|---|---|---|
| Tavily | Cleanest default for LLM-consumed retrieval — pre-formatted, citation-ready snippets | claude mcp add --transport http --scope user tavily https://mcp.tavily.com/mcp/?tavilyApiKey=<key> |
| Brave | You want an independent index and predictable high-volume pricing |
npx -y @brave/brave-search-mcp-server with BRAVE_API_KEY set |
| Exa | Semantic / "find similar pages" search rather than keyword | use Exa's MCP server |
Tavily's official remote server gives search, extract, map, and crawl tools and is the lowest-friction choice for "let the model research and cite." Brave's official @brave/brave-search-mcp-server defaults to STDIO (HTTP available via --transport http or BRAVE_MCP_TRANSPORT=http), authenticates with BRAVE_API_KEY, and exposes 8+ tools spanning web, local, news, image, video, and AI summarization. Reach for Exa specifically when you want semantic find-similar rather than keyword matching.
Bonus: Context7 for up-to-date library docs
If Claude keeps hallucinating an API that changed two versions ago, Context7 (upstash/context7) feeds current library documentation into the model. It exposes just two tools — resolve-library-id and the docs query tool — and installs locally as a user-scoped server:
claude mcp add --scope user context7 \
-- npx -y @upstash/context7-mcp --api-key YOUR_API_KEY
A free API key (from the Context7 dashboard) raises your rate limits; the server still works without one at lower limits.
Scope: where each server lives
Claude Code has three install scopes, and choosing wrong is how teammates end up with servers they did not ask for — or how your API keys leak into version control:
-
local (default) — current project only, stored in
~/.claude.json. Use for personal/experimental servers and anything with credentials. -
project — shared with the team via a checked-in
.mcp.json. Use for servers everyone on the repo should have. - user — available across all your projects. Use for personal utilities like a search or docs server.
Precedence, highest to lowest: local > project > user > plugin > claude.ai connector. When the same server name is defined in two places, the higher-precedence entry wins outright — fields are not merged.
Trust is the cost most lists leave out
Any server that fetches external content — web search, fetch, a docs server, a database that returns user-supplied text — can carry prompt-injection payloads into your session. Claude Code's docs are explicit: verify you trust each server before connecting it, and project-scoped servers from a checked-in .mcp.json require explicit approval before first use. That approval prompt is a feature. Do not reflexively click through it for a repo you just cloned. The same instinct that makes you read a Dockerfile before running it applies to a .mcp.json.
A starter set that covers most developers
If you want a copy-paste baseline rather than a buffet:
- Filesystem + Git — local file and repo work.
- github-mcp-server — PRs, issues, CI, code scanning.
- One web-search server — Tavily if you want it to "just work," Brave if you want an independent index.
- Add Playwright, dbhub, or Context7 only when you hit the specific job they solve.
That is five servers doing real work, each from a maintained source, each on the correct transport. Resist the urge to add the sixth until a task forces your hand.
How the picks were checked
Every install command and feature claim was read on 2026-06-28 against the sources below, each tied to a specific assertion. The seven maintained reference servers and the servers-archived move come from modelcontextprotocol.io and the MCP servers repo; the GitHub server's https://api.githubcopilot.com/mcp/ endpoint and its default toolset (context, repos, issues, pull_requests, users) from github/github-mcp-server; Playwright MCP's accessibility-tree approach and Node 18+ floor from microsoft/playwright-mcp; the dbhub stdio invocation and tool-search-on-by-default behavior from the Claude Code MCP docs; and the Brave defaults from brave/brave-search-mcp-server. Paid-tier pricing for Tavily, Brave, and Context7 is left out on purpose — it is the fastest-moving number in this space, and each vendor's pricing page is the only place worth trusting for it.
One thing this piece deliberately does not quantify: what fraction of real repos actually check in a .mcp.json, and which servers appear most often when they do. No MCP directory (PulseMCP, Smithery, Glama, the awesome-mcp-servers list) publishes that specific statistic — they report server counts and GitHub stars, not adoption-in-the-wild — and GitHub's own code search (github.com/search?q=filename:.mcp.json&type=code) requires a signed-in session to show a result count, so it's not something this article can responsibly cite a number for. If you want a live read, that search is public and free to run yourself.
Sources
- Claude Code — Connect to tools via MCP (official docs)
- Model Context Protocol — Example reference servers
- github/github-mcp-server (official GitHub MCP server)
- microsoft/playwright-mcp (official Playwright MCP server)
- brave/brave-search-mcp-server (official Brave Search MCP server)
- Tavily MCP documentation
- upstash/context7 (Context7 MCP server)
- Comparison: best web-search MCP servers 2026

Top comments (0)