MCP servers for Claude Code
A Model Context Protocol config that earns its place, plus the traps that cost real time.
MCP turns Claude Code from a code generator into something that can read your repo, query a database, drive a browser and open a PR. MCP wiring is independent of the gateway — it changes what tools exist, not where model calls go.
A .mcp.json worth running
{
"mcpServers": {
"filesystem": {"command": "npx", "args": ["-y", "@modelcontextprotocol/server-filesystem", "."]},
"git": {"command": "uvx", "args": ["mcp-server-git", "--repository", "."]},
"github": {"command": "npx", "args": ["-y", "@modelcontextprotocol/server-github"],
"env": {"GITHUB_TOKEN": "..."}},
"fetch": {"command": "uvx", "args": ["mcp-server-fetch"]},
"playwright": {"command": "npx", "args": ["-y", "@playwright/mcp@latest"]}
}
}
Drop it in the repo root; Claude Code detects it and asks you to trust it once.
The traps
- The trust prompt is a feature. Claude Code refuses to load project MCP servers until you approve them, per project. That is the security boundary, not a bug.
- Give a database server a read-only role. An MCP server executes whatever SQL the model emits; a read-only role makes a hallucinated
DROPphysically impossible. - Scope tokens narrowly. For GitHub,
repoplusread:orgis enough. Do not hand it an all-scopes classic PAT. - MCP output is context. A 200-row result or a full page fetch is resent on every subsequent turn. Large tool outputs are the main reason agentic sessions get expensive.
Start with filesystem, git and github. Add browser and database servers only when a specific task needs them — every loaded server adds its schema to the token bill on every request.