MCP: tools you did not write
The built-in tools cover your files and your shell. MCP is how everything else gets in: a database, a ticket tracker, a browser, an internal service.
An MCP server is a separate program that exposes tools. Claude Code starts it, asks what it offers, and those tools join the list the model can choose from. You are adding capability, not writing an integration.
Adding one
claude mcp add --scope project sqlite \
-- npx -y @modelcontextprotocol/server-sqlite --db-path ./links.dbAdded stdio MCP server sqlite with command: npx -y @modelcontextprotocol/server-sqlite --db-path ./links.db to project config File modified: /tmp/linkshort/.mcp.json
Everything after the double dash is the command that starts the server. The scope decides who gets it, and project writes a file that is committed with the code.
{
"mcpServers": {
"sqlite": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-sqlite", "--db-path", "./links.db"],
"env": {}
}
}
}That is the whole configuration, and it is the real file the command above wrote. Anyone who clones the repository gets the same tools, and claude mcp list shows what is connected and whether it is healthy.
What it costs you
Tools have to be described to the model, and descriptions live in the context window. A server with sixty tools would be expensive if all of it loaded at startup, so MCP tool definitions are deferred by default: only names and server instructions load, and the full definition arrives when a tool is actually used.
- Add servers for things you actually reach for. Every one is startup time and context.
- Prefer project scope for team tools, user scope for personal ones.
- Treat a server like a dependency. It runs on your machine with your permissions.
- Add a server for something you use daily and ask Claude to do one small job with it.
- Run
claude mcp listand check what is already connected.
Every expert started right here.