Best MCP Servers for Claude Code in 2026

Published September 5, 2026

There are dozens of MCP servers now. Most are noise. These are the ones I keep enabled in my Claude Code config because they earn their disk space every week.

What MCP actually is (in 30 seconds)

Model Context Protocol lets Claude Code (or any MCP-compatible client) talk to external services through a standard interface. An MCP server exposes tools (“fetch a URL”, “query my database”, “search my Notion”) and Claude Code can call them mid-conversation like they were built in.

Add a server once, it’s available in every session. Removes the “copy-paste output back to the LLM” tax.

The shortlist (my daily-driver set)

  1. filesystem — read/write files outside your project root
  2. github — issues, PRs, code search across all your repos
  3. fetch — retrieve URLs, useful for reading docs mid-task
  4. puppeteer — browser automation, screenshot testing, scraping
  5. postgres — query your database directly from chat
  6. notion — pull specs from Notion into context
  7. sequential-thinking — forces stepwise reasoning on complex tasks

Everything below has a specific reason I use it. If you’re new to MCP, install these three first: filesystem, github, fetch. Come back for the rest when you hit a use case.

The daily drivers

filesystem

Lets Claude Code read/write files outside your current project. Useful for pulling reference code from another repo, or moving files between projects without cd-ing around.

claude mcp add filesystem npx @modelcontextprotocol/server-filesystem /home/kali/code /home/kali/notes

Scope directories you actually trust. Don’t give it your whole home dir.

github

Lets Claude Code list your repos, read issues, comment on PRs, search code across all your repos. Huge for “find the file where we handle Stripe webhooks” across multiple projects.

claude mcp add github --env GITHUB_TOKEN=ghp_... npx @modelcontextprotocol/server-github

Token needs repo scope. Never admin.

fetch

Retrieves URLs and returns text. When Claude needs to read docs it wasn’t trained on, or check a status page, this is the fallback.

claude mcp add fetch uvx mcp-server-fetch

Add -- --allowed-domains "docs.mycompany.com" if you want to restrict. I don’t.

puppeteer

Browser automation. I use it for two things: taking screenshots of my dev server to check if a change rendered right, and scraping pages that don’t have public APIs.

claude mcp add puppeteer npx @modelcontextprotocol/server-puppeteer

Downloads Chromium the first time. ~200MB.

postgres

Query your dev DB from chat. “How many users signed up last week and what’s their conversion rate to paid” becomes one prompt instead of writing SQL, running it, pasting results.

claude mcp add postgres --env POSTGRES_URL=postgres://localhost/mydb \
  npx @modelcontextprotocol/server-postgres

Point at a read-only replica for production. Don’t give a write DSN to your LLM.

The situational ones

notion

Pulls Notion pages into context. Great when your team keeps specs in Notion and you don’t want to copy-paste. Auth setup is the annoying part (OAuth token via Notion Developers).

claude mcp add notion --env NOTION_TOKEN=secret_... npx @modelcontextprotocol/server-notion

sequential-thinking

Doesn’t fetch anything. Forces Claude to think through problems in explicit steps before answering. Sounds like theater but genuinely improves quality on complex tasks (refactoring, debugging concurrency).

claude mcp add sequential-thinking npx @modelcontextprotocol/server-sequential-thinking

Toggle it per task. Slower but more reliable output.

slack

Read your Slack channels, post messages, DM people. Useful if you use Slack for team standups and want Claude to summarize what your team said today. Overkill for solo devs.

claude mcp add slack --env SLACK_BOT_TOKEN=xoxb-... npx @modelcontextprotocol/server-slack

memory

Persistent memory across sessions. Store facts about the project, decisions made, why things are the way they are. Claude Code retrieves relevant memories per session automatically.

claude mcp add memory npx @modelcontextprotocol/server-memory

If your CLAUDE.md is getting long, migrate context to memory server and keep CLAUDE.md short.

The ones I removed

everything, brave-search, google-drive: installed, tested, uninstalled. Either too noisy (returned too much irrelevant context per call) or duplicated what fetch already does.

time: returns current time. Claude Code has this baked in via bash. Dead weight.

gitlab: works fine but I mostly use GitHub. Only install if you actually use GitLab.

Configuration

~/.claude/config.json holds your MCP config. Back it up in dotfiles.

Restart Claude Code after adding a server. Some prompts need a fresh session to pick up new tools.

Cost note

MCP servers themselves are free (they run locally as subprocesses). The tool calls consume tokens in each Claude Code request. A puppeteer screenshot session might use 5-20k tokens. Not free, but usually worth it.

If you’re on Claude Pro and hit rate limits, disable heavy servers (puppeteer, memory) and re-enable per task.

FAQ

What is an MCP server?

An MCP server exposes tools to a Model Context Protocol client (like Claude Code). The server runs locally, the client calls its tools. Think of it as a plugin system with a standard protocol.

Do MCP servers work with Cursor too?

Yes, Cursor added MCP support in 2025. Configuration is similar (JSON file). Many servers work in both Claude Code and Cursor with identical setup.

How many MCP servers can I enable at once?

No hard limit. Each server adds to the context window used per request. Enabling 20 servers with big tool descriptions will eat your context budget. I stick to 5-8 in daily use.

Do MCP servers cost extra?

The servers themselves are free (subprocesses on your machine). Their tool calls consume LLM tokens on each use, which counts against your Claude Pro / API budget like normal chat does.

Which MCP server should I install first?

filesystem, github, and fetch. These three cover 80% of what you’ll use MCP for. Add specialized ones (postgres, notion, puppeteer) only when you hit a specific need.