the problem it solves

Before a shared standard, every integration between an AI model and an external system (a database, a browser, an internal API) was custom, one-off glue code. MCP is an open protocol that standardizes that connection: an MCP server exposes a set of tools (and optionally data/resources) in a common format, and any MCP-compatible client — Claude included — can use them without custom integration work per server.

what this looks like in practice

Once an MCP server is connected, its tools show up alongside Claude's built-in ones — a browser-automation server adds tools like "navigate" and "click," a project-tracker server adds tools like "create ticket." Claude decides when to reach for one the same way it decides when to use any other tool: based on whether it fits the current request.

adding a server

claude mcp add --transport http notion https://mcp.notion.com/mcp | | connects an HTTP MCP server — the recommended transport for remote, cloud-hosted services |'mcpg_add1'
claude mcp add --transport stdio myserver -- npx some-mcp-server | | connects a local server that runs as a subprocess; everything after -- is the actual command |'mcpg_add2'
claude mcp list | | lists every connected server and its status |'mcpg_add3'
TransportWhen
HTTPthe default recommendation for remote servers — supports OAuth, works through firewalls
stdioa local process Claude Code starts and talks to over stdin/stdout — no network involved
SSEan older remote transport, deprecated in favor of HTTP where available
WebSocketfor a server that needs to push events to Claude unprompted, not just answer requests

scopes

The --scope flag controls where a server's configuration is stored, and therefore who else picks it up:
ScopeStored whereShared with
local (default)your personal configjust you, this project
project.mcp.json in the repoeveryone who clones the repo, once they approve it
useryour personal configyou, across every project
A project-scoped server committed via .mcp.json shows as pending approval for anyone new who opens the repo — Claude Code won't silently run a server someone else added to a repo you just cloned.

mcp vs a built-in tool

NeedReach for
Reading/writing local files, running shell commandsClaude Code's built-in tools — no MCP server needed
Talking to a specific external service (a browser, a ticketing system, an internal API)an MCP server for that service
A one-off API call your team doesn't have a standing integration forusually still faster to just have Claude write and run the request directly, rather than standing up a server

practical details worth knowing

MCP servers can be slow to initialize, and clients commonly defer loading a server's full tool list until it's actually needed rather than eagerly on every session start — if a tool you expect isn't immediately available, it may just not be loaded yet, not broken. If an HTTP or SSE server drops mid-session, Claude Code reconnects automatically with exponential backoff (up to five attempts); a stdio server, being a local process, is not reconnected automatically if it dies.

related topics

Agents & Subagents — MCP tools are available to subagents the same way they are to the main session.
Claude API for Developers — tool use in the API follows the same underlying pattern MCP builds on.

reference

modelcontextprotocol.io
code.claude.com — MCP