Updated June 2026 18 min read Developers and advanced users

MCP — the protocol that connects
AI to every tool in the world

The Model Context Protocol (MCP) is an open standard developed by Anthropic — a sort of "USB-C for the AI world". Instead of writing a special integration for each tool, MCP gives Claude (and other models) access to tools, files, databases and APIs in a uniform, universal way.

2024
Launch year
1,000+
MCP servers
Open
Source & Standard
JSON-RPC
Communication protocol

What is MCP and why does it matter?

Before MCP, anyone who wanted to connect AI to an external tool — Slack, GitHub, a database, files — had to write an integration from scratch, custom for each model and each service. Endless duplicate work, hard maintenance, and incompatibility.

MCP solves this elegantly: a uniform communication protocol (JSON-RPC over stdio or SSE) that defines how AI Clients (like Claude Desktop, Cursor, Windsurf) talk to MCP Servers that expose tools, resources and prompts.

MCP architecture
MCP Client
Claude Desktop
Cursor, Windsurf
MCP Protocol
JSON-RPC
stdio / SSE
MCP Server
GitHub, Slack
DB, Files, API

MCP vs Function Calling

Function Calling (found in OpenAI and Anthropic) lets AI invoke functions — but those functions are defined in the prompt and run on the client side. MCP is a layer above that: the tools live in a separate server, are managed separately, and can be connected to any AI client that supports the protocol.

How MCP works — under the hood

The three primitives of MCP

construction
Tools
Functions the AI can call: searching a DB, sending an email, reading a file. Each tool comes with a JSON schema of its parameters.
database
Resources
Data the AI can read: files, documents, query results. Resources are read-only and used for Context.
chat
Prompts
Prompt templates the server defines. Users can invoke them directly from the client.

Transport Layers — how the Client and Server communicate

Connecting MCP to Claude Desktop

Claude Desktop is Anthropic's official MCP client. Configuring MCP servers is done through a single JSON file.

The config file location

The file structure

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "/Users/yourname/Documents"
      ]
    },
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_..."
      }
    },
    "brave-search": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-brave-search"],
      "env": {
        "BRAVE_API_KEY": "BSA..."
      }
    }
  }
}
lightbulb
After every change — restart Claude Desktop

Changes to config.json aren't loaded dynamically. You need to close and reopen the app. When the connection succeeds you'll see a hammer icon (🔨) in the chat interface — a sign the tools are available.

5 servers worth adding right away

folder
@modelcontextprotocol/server-filesystem
Read/write access to local files. Restricted to the directories you define.
search
@modelcontextprotocol/server-brave-search
Real-time web search with the Brave Search API (free up to 2,000 requests/month).
code
@modelcontextprotocol/server-github
Managing GitHub: repos, issues, PRs, commits. Requires a Personal Access Token.
storage
@modelcontextprotocol/server-postgres
Access to a PostgreSQL DB. Claude can write and run SQL queries directly.
memory
@modelcontextprotocol/server-memory
Persistent memory for Claude — storing facts, preferences and relationships between sessions.

MCP with Cursor and Windsurf

Both Cursor and Windsurf support MCP and let the code editors access external tools directly from Agent Mode. This is especially powerful when developing — Claude in Cursor can send metrics to Datadog, open tickets in Jira, and check Supabase — all without leaving the IDE.

Configuration in Cursor

In Cursor, go toSettings → Features → MCP and click "Add new MCP server". You can also directly edit ~/.cursor/mcp.json:

{
  "mcpServers": {
    "supabase": {
      "command": "npx",
      "args": ["-y", "@supabase/mcp-server-supabase@latest",
               "--supabase-url", "https://xxx.supabase.co",
               "--supabase-service-role-key", "eyJ..."]
    }
  }
}
warning
Don't put API Keys in git!

MCP config files sometimes contain sensitive keys. Add mcp.json to.gitignore, or use environment variables (env vars) for secrets.

MCP servers worth knowing

Development and DevTools

Server What it does Open source
GitHubRepos, Issues, PRs, Code SearchYes
GitLabManaging GitLab repos and pipelinesYes
SupabaseDB, Auth, Storage, Edge FunctionsYes
PlaywrightBrowser automation and testingYes
DockerManaging containers and imagesYes
SentryAnalyzing errors and stack tracesYes

Management and operations

Server Use
SlackReading and sending messages, managing channels
NotionReading/writing to Notion databases and pages
Google DriveAccess to files, Docs, Sheets and Slides
LinearManaging issues, projects and sprints
JiraAtlassian tickets, epics, workflows
StripeManaging payments, customers and subscriptions
info
Where to find servers?

The official list is atgithub.com/modelcontextprotocol/servers. In addition, the sites mcp.so and glama.ai/mcp/servers collect thousands of community servers with search and ranking.

Building your own MCP server

Building an MCP server is surprisingly simple. Anthropic provides an SDK for Python and TypeScript. In 30 lines of code you can create a server that exposes tools to Claude.

A basic server in Python (FastMCP)

from mcp.server.fastmcp import FastMCP

mcp = FastMCP("my-server")

@mcp.tool()
def get_weather(city: str) -> str:
    """Get the weather forecast for a city"""
    # in practice — a call to an API
    return f"The weather in {city}: 25°C, partly cloudy"

@mcp.tool()
def calculate(expression: str) -> float:
    """Evaluate a math expression"""
    return eval(expression)  # for example only!

@mcp.resource("docs://readme")
def get_readme() -> str:
    """Read the project's README"""
    with open("README.md") as f:
        return f.read()

if __name__ == "__main__":
    mcp.run()  # stdio transport by default

A server in TypeScript

import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";

const server = new McpServer({ name: "my-server", version: "1.0.0" });

server.tool(
  "search_database",
  { query: z.string(), limit: z.number().optional() },
  async ({ query, limit = 10 }) => {
    // an actual DB call
    const results = await db.search(query, limit);
    return {
      content: [{ type: "text", text: JSON.stringify(results) }]
    };
  }
);

const transport = new StdioServerTransport();
await server.connect(transport);

Connecting the server you built to Claude Desktop

{
  "mcpServers": {
    "my-server": {
      "command": "python",
      "args": ["/path/to/my_server.py"]
    }
  }
}

Examples from the field — what people build with MCP

support_agent
Customer Support Bot
Claude + MCP for a CRM + Ticketing System. Claude reads a customer's history, checks open tickets and replies with full context.
analytics
BI Assistant
Ask business questions in plain language, Claude writes SQL, runs it on PostgreSQL and shows charts — all via MCP.
code
AI Code Reviewer
Cursor + GitHub MCP. Claude reads a PR, runs tests, checks security issues and adds review comments automatically.
schedule
Personal Assistant
Claude + Calendar + Gmail + Notion. Ask "what do I have today?" and get a summary of meetings, urgent emails and open tasks.
rocket_launch
MCP + Agents = the next generation

MCP is a cornerstone of Agentic AI. When you combine MCP with AI Agents that operate over time, you get agents that can access external tools, remember information between sessions and act across the organization's network of APIs. This is the future of business automation.

MCP isn't just a technical tool — it's a paradigm shift. AI moves from a "conversation assistant" to an "active player" connected to your environment. The moment you connect Claude to the tools you work with every day, you'll understand why it's the most important thing that happened in AI in 2025.