Author: abavyka
So what kind of Pokémon is MCP
What it is
MCP (Model Context Protocol) is an open standard for hooking AI apps up to outside systems. Anthropic built it and shipped it in November 2024, and in December 2025 handed it over to the Agentic AI Foundation under the Linux Foundation (founders: Anthropic, Block and OpenAI). That’s why MCP is now supported not just by Claude, but by ChatGPT, VS Code, Cursor too.
Basically it’s a wrapper over an API in a format that’s handy for the model. The server describes each tool: a name, a plain-words description of what it does and when to grab it, and a JSON Schema for the params. The model reads the description, decides on its own when to call the tool, and Claude Code passes the call to the server and drops the result back into the conversation. Under the hood the server makes ordinary requests to an API, a database or files.
Here’s the setup:
- host — the app with the model, here that’s Claude Code
- client — a connection to one server, the host creates one per server
- server — the program that provides tools. Local (runs as a process on your machine) or remote (over HTTP, everyone knows what HTTP is, right?)
Besides tools, a server can provide resources (data you can pull into the context) and prompts (ready-made request templates), more on those below.
The docs give a simple signal: if you’re copying data into the chat from another tool (a ticket from the tracker, a graph from monitoring), it’s time to hook up a server. Then Claude reads and does stuff there itself, instead of working off whatever you pasted.
What a tool looks like
Take DeepWiki as an example — a free remote server with no auth that answers questions from the docs of public GitHub repos. Here’s one of its tools, the way the server returns it in tools/list (I stripped outputSchema and _meta):
{
"name": "read_wiki_structure",
"description": "Get a list of documentation topics for a GitHub repository.",
"inputSchema": {
"type": "object",
"properties": {
"repoName": {
"type": "string",
"description": "GitHub repository in owner/repo format (e.g. \"facebook/react\")."
}
},
"required": ["repoName"]
}
}Two more:
read_wiki_contents— “View documentation about a GitHub repository.”ask_wiki_question— “Ask any question about a GitHub repository’s codebase and get an AI-powered answer grounded in its DeepWiki.” Params:repoNameandquestion
That’s all the model knows about a tool: the name, the description and the params. You type “how is the reconciler set up in facebook/react?” — Claude picks ask_wiki_question on its own and plugs in repoName: "facebook/react".
And that’s everything Claude can do through this server. MCP doesn’t give you the full API of a service or everything you can click through by hand in the UI, only what the server’s author wrote tools for. No tool — Claude won’t do it, even if the service itself has it.
Mine
claude-in-chromeandchrome-devtools— browserphpstorm— IDEcode-review-graphexcalidraw— diagramsatlassian— Jira and Confluence at work- Claude Docs — a connector from claude.ai
(MCP isn’t only about code, there’s also Booking.com, Kiwi.com, Tripadvisor, garmin mcp etc)
Connectors you added in claude.ai show up in Claude Code on their own, if you’re logged in through your subscription.
How to hook one up
A remote server, the same DeepWiki (you can try it right away, no login needed):
claude mcp add --transport http deepwiki https://mcp.deepwiki.com/mcpA local one that runs as a process on your machine (everything after -- is the server’s command):
claude mcp add airtable -- npx -y airtable-mcp-serverhttp is the recommended transport, sse is deprecated.
Where to look for servers:
- Anthropic Directory — vetted connectors. You add them in claude.ai, or any remote one from there via
claude mcp add - plugins — can bring MCP servers along, they switch on together with the plugin
Then:
claude mcp list— a list with statuses: connected, needs login, failed to connect/mcp— OAuth login, switch a server off without deleting its config
Scope
local— the default: only you and only this project, lives in~/.claude.jsonproject—.mcp.jsonin the repo root, gets committed, the whole team gets the same serversuser— you, but across all your projects
We don’t write keys into .mcp.json as plain text, ${API_KEY} and ${VAR:-default} work there.
How much context it eats
At first I hooked up everything that looked cool, and then switched off what I wasn’t using: Uber, Uber Eats, Gmail, Google Calendar, Strava.
Tool search is on by default now: at startup only tool names and server instructions go into the context, and a tool’s full description gets loaded when Claude decides to use it (before, the descriptions of all tools from all servers got loaded into the context at startup and hung there the whole session, so every connected server took up space, even if you weren’t using it; since 2.1.7, January 2026, Claude Code started hiding them behind search once they took up more than 10% of the context). So a dozen servers barely eat any context up front.
What eats it is the result of every call. It lands in the context and then flies along with every request:
- from 10,000 tokens — a warning
- 25,000 — the default limit, changed via
MAX_MCP_OUTPUT_TOKENS - a bigger result (or over 50,000 characters) Claude Code saves to a file and drops the path to it into the conversation
How much each server ate, /usage shows. What’s in the context right now — /context.
MCP or CLI
For GitHub and AWS I use the gh and aws CLIs. The docs say it straight: a CLI is leaner, it adds no tool list to the context at all, Claude just runs the command. MCP — when there’s no CLI or it’s awkward: browser, IDE.
Permissions
Every MCP tool is named mcp__<server>__<tool>. To allow a whole server — mcp__deepwiki__* in allow.
An allow rule with * only works with a server name: mcp__* without one gets skipped with a warning and allows nothing.
Security
- Only hook up servers you trust. A server that pulls in outside content is a door for prompt injection
- For a database — a read-only user in the connection string, so Claude can’t change anything
- Claude Code won’t start
.mcp.jsonfrom a repo in an interactive session without your confirmation. But inclaude -pand cloud sessions it loads the servers from it without asking
Resources and prompts
Resources are server data you pull into the context yourself, like files. You type @, and the autocomplete shows resources from all connected servers right next to files. The format is @server:protocol://path, e.g. from the GitHub MCP @github:repo://abavyka/agentic-dev-wiki/refs/heads/main/contents — the repo contents from the main branch. Claude Code fetches the resource itself and attaches it to the message.
Prompts are ready-made request templates from the server that turn into commands. You type /, and they’re in the list as /servername:promptname (MCP). Args go space-separated, in the GitHub MCP that’s e.g. /mcp__github__issue_to_fix_workflow owner repo title description labels assignees. The prompt’s result goes straight into the conversation.
The difference from tools: Claude calls a tool on its own, while a resource or a prompt is something you kick off.
Read more
- MCP
- MCP in Claude Code
- MCP tool search
- Context and cache: why your session goes dumb and what it costs
- Hallucinations
- Tokens and limits
- What MCP is and how it’s built: What is MCP, Architecture overview
- The announcement from Anthropic: Introducing the Model Context Protocol
- The handover to the Linux Foundation: Donating MCP and establishing the Agentic AI Foundation
- DeepWiki MCP: DeepWiki MCP server
- When tool search became the default: Changelog, 2.1.7
- Connecting, scope, tool search, output limits: Connect Claude Code to tools via MCP
- Rules for MCP tools: Configure permissions
- MCP or CLI: Manage costs effectively