Back to all articles
10 MIN READ

Model Context Protocol (MCP): The Standard for AI Tool

By Dorian Laurenceau

๐Ÿ“… Last reviewed: April 24, 2026. Updated with April 2026 findings and community feedback.

Model Context Protocol (MCP): The Standard for AI Tool Integration

In late 2024, Anthropic introduced the Model Context Protocol (MCP), an open standard for connecting AI assistants to external tools, data sources, and services. As AI agents become more capable and widely deployed, the need for standardized integration has become critical. MCP addresses this by providing a universal "language" for AI-to-tool communication.

This comprehensive guide explains MCP's architecture, implementation, and significance for AI development.


<!-- manual-insight -->

MCP in 2026: what the first year of adoption actually taught us

Model Context Protocol (MCP) shipped in late 2024 and became the default way to expose tools and data to Anthropic's Claude, with Claude Code, Claude Desktop, and the broader ecosystem adopting it. One year in, the threads on r/ClaudeAI, r/LocalLLaMA, and r/MachineLearning have a more nuanced view than the launch coverage.

What MCP got right:

  • โ†’A genuinely open standard. The modelcontextprotocol.io spec is public, vendor-neutral in principle, and has multiple language implementations.
  • โ†’Separation of capabilities. Tools, resources, and prompts as distinct primitives is a cleaner design than OpenAI's function-calling-only approach.
  • โ†’Ecosystem momentum. The MCP servers repository catalogues hundreds of community and official integrations. GitHub, PostgreSQL, Slack, Stripe, filesystem, and many more are one-line setups.
  • โ†’A natural fit for desktop agents. Claude Desktop users can chain tools locally without writing backend code. The UX is genuinely new.

What the adoption year exposed:

  • โ†’Security is harder than it looks. Letting an LLM call arbitrary tools on your machine requires careful sandboxing. Simon Willison's writing on MCP security and the OWASP LLM Top 10 both point to prompt-injection-through-tool-results as the central risk. Running untrusted MCP servers is not safe by default.
  • โ†’Cross-vendor support is partial. OpenAI, Google, and open-source frameworks support MCP to varying degrees. The "universal standard" framing oversold the current state; in practice it's still Anthropic-centric.
  • โ†’Tool description quality is the bottleneck. MCP doesn't fix the fundamental agent-reliability problem: LLMs call the wrong tool or the right tool with wrong arguments. Good descriptions, scoped permissions, and validation matter more than the protocol.
  • โ†’Local vs. remote servers have different tradeoffs. Local stdio servers are fast and private but don't scale. Remote servers (HTTP + SSE, now streamable HTTP) are scalable but introduce latency and new attack surfaces.

What production teams are actually doing:

  • โ†’Curating MCP servers carefully. Treat third-party MCP servers like third-party packages: audit, pin versions, sandbox.
  • โ†’Writing tool descriptions as first-class assets. The description is the prompt surface the model uses; it deserves the same attention as any system prompt.
  • โ†’Using MCP for development tooling, not just end-user features. Claude Code exposes MCP to let engineers compose IDE integrations; that's been one of the highest-signal use cases.
  • โ†’Mixing MCP with traditional function calling. MCP for the universal plumbing, direct function calls for custom business logic where protocol overhead doesn't help.

What's still unclear:

  • โ†’Whether OpenAI and Google will fully adopt MCP or fork their own standards. The political dynamics here matter more than the technical merits.
  • โ†’How authentication and authorisation scale. OAuth, API keys, and per-session permissions are getting better, but no universal solution yet.
  • โ†’Long-running and streaming tools. The streamable HTTP transport helps but has adoption gaps.

The honest framing: MCP is the most serious attempt at an interoperable agent-tool protocol, and the technical design is solid. The year-one lesson is that protocol alone doesn't deliver reliable agents โ€” careful tool design, security, and evaluation do. MCP is a foundation, not a finished product.


Learn AI โ€” From Prompts to Agents

10 Free Interactive Guides120+ Hands-On Exercises100% Free

The Integration Problem

Before MCP

Every AI application built custom integrations:

Custom Integration Chaos:

AI ApplicationConnectionService
AI App 1custom codeDatabase A
AI App 1custom codeAPI B
AI App 1custom codeService C
AI App 2different codeDatabase A
AI App 2different codeAPI B
AI App 2different codeService D

Result: N apps ร— M services = Nร—M integrations

Problems:

  • โ†’Duplicated effort across applications
  • โ†’Inconsistent implementations
  • โ†’Hard to maintain
  • โ†’Limited reusability
  • โ†’Security varies widely

The MCP Solution

Standardize the connection layer:

MCP Standardized Layer:

AI Applicationsโ†’MCP Protocolโ†’Services
AI App 1Database A
AI App 2Standard LayerAPI B
AI App 3Service C

Result: N apps + M servers (via standard MCP)

Benefits:

  • โ†’Build once, use everywhere
  • โ†’Consistent security model
  • โ†’Community-maintained servers
  • โ†’Plug-and-play capability
  • โ†’Clear responsibility boundaries

MCP Architecture

Core Components

ComponentSideRoleCommunication
MCP HostClientAI Application (Claude Desktop, IDEs)JSON-RPC
MCP ServerServerService providerJSON-RPC
Client LibraryClientSDK for host integrationInternal
Server LibraryServerSDK for server implementationInternal

Flow: MCP Host โ†” JSON-RPC โ†” MCP Server

MCP Host:

  • โ†’The AI application (Claude Desktop, IDEs, etc.)
  • โ†’Maintains connections to servers
  • โ†’Routes requests from AI to appropriate server

MCP Client:

  • โ†’Library within the host
  • โ†’Handles protocol communication
  • โ†’Manages server lifecycle

MCP Server:

  • โ†’Exposes functionality via MCP
  • โ†’Can be local or remote
  • โ†’Provides tools, resources, or prompts

Three Capability Types

1. Tools Actions the AI can execute:

{
  "name": "search_database",
  "description": "Search the company database",
  "inputSchema": {
    "type": "object",
    "properties": {
      "query": {"type": "string"},
      "limit": {"type": "integer"}
    }
  }
}

2. Resources Data the AI can read:

{
  "uri": "file:///data/reports/quarterly.pdf",
  "name": "Q4 Report",
  "mimeType": "application/pdf"
}

3. Prompts Reusable prompt templates:

{
  "name": "code_review",
  "description": "Structured code review prompt",
  "arguments": [
    {"name": "code", "required": true},
    {"name": "language", "required": false}
  ]
}

How MCP Works

Connection Flow

1. INITIALIZATION

  • โ†’Host โ†’ Server: "initialize" request
  • โ†’Server โ†’ Host: capabilities response
  • โ†’Host โ†’ Server: "initialized" notification

2. DISCOVERY

  • โ†’Host โ†’ Server: "list_tools" request
  • โ†’Server โ†’ Host: available tools list

3. INVOCATION

  • โ†’AI decides to use tool
  • โ†’Host โ†’ Server: "call_tool" with arguments
  • โ†’Server โ†’ Host: tool result

4. CLEANUP

  • โ†’Host โ†’ Server: shutdown notification

Example: Database Tool

Server Implementation (Python):

from mcp.server import Server
from mcp.types import Tool, TextContent

server = Server("database-server")

@server.list_tools()
async def list_tools():
    return [
        Tool(
            name="query_users",
            description="Query user database",
            inputSchema={
                "type": "object",
                "properties": {
                    "filter": {"type": "string"},
                    "limit": {"type": "integer", "default": 10}
                }
            }
        )
    ]

@server.call_tool()
async def call_tool(name: str, arguments: dict):
    if name == "query_users":
        results = await database.query(
            filter=arguments.get("filter"),
            limit=arguments.get("limit", 10)
        )
        return [TextContent(type="text", text=str(results))]

Host Configuration (Claude Desktop):

{
  "mcpServers": {
    "database": {
      "command": "python",
      "args": ["database_server.py"],
      "env": {
        "DATABASE_URL": "postgresql://..."
      }
    }
  }
}

Available MCP Servers

Official Servers

Anthropic provides reference implementations:

ServerFunction
FilesystemRead/write local files
GitHubRepository operations
GitLabGitLab integration
SlackSlack messaging
Google DriveDocument access
PostgreSQLDatabase queries
PuppeteerBrowser automation
MemoryPersistent memory

Community Servers

Growing ecosystem:

  • โ†’Notion integration
  • โ†’Linear (issue tracking)
  • โ†’Obsidian (notes)
  • โ†’Various APIs
  • โ†’Custom enterprise tools

Finding Servers

Resources:

  • โ†’GitHub: github.com/modelcontextprotocol
  • โ†’MCP Registry: Community-maintained list
  • โ†’npm/PyPI: Published packages

Building MCP Servers

Python SDK

# Basic MCP server in Python

import asyncio
from mcp.server import Server
from mcp.server.stdio import stdio_server
from mcp.types import Tool, TextContent

# Create server
app = Server("my-server")

# Define tools
@app.list_tools()
async def list_tools():
    return [
        Tool(
            name="greet",
            description="Generate a greeting",
            inputSchema={
                "type": "object",
                "properties": {
                    "name": {"type": "string"}
                },
                "required": ["name"]
            }
        )
    ]

# Implement tools
@app.call_tool()
async def call_tool(name: str, arguments: dict):
    if name == "greet":
        return [TextContent(
            type="text",
            text=f"Hello, {arguments['name']}!"
        )]

# Run server
async def main():
    async with stdio_server() as (read, write):
        await app.run(read, write)

asyncio.run(main())

TypeScript SDK

// Basic MCP server in TypeScript

import { Server } from "@modelcontextprotocol/sdk/server";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio";

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

// Define tools
server.setRequestHandler("tools/list", async () => ({
  tools: [{
    name: "calculate",
    description: "Perform calculation",
    inputSchema: {
      type: "object",
      properties: {
        expression: { type: "string" }
      }
    }
  }]
}));

// Implement tools
server.setRequestHandler("tools/call", async (request) => {
  if (request.params.name === "calculate") {
    const result = eval(request.params.arguments.expression);
    return { content: [{ type: "text", text: String(result) }] };
  }
});

// Start server
const transport = new StdioServerTransport();
server.connect(transport);

Security Considerations

Trust Boundaries

LayerTrust LevelResponsibilities
AI Model Outputsโš ๏ธ UNTRUSTEDPotentially adversarial responses
MCP Hostโœ… ValidatedValidates tool calls, enforces permissions, logs actions
MCP Serverโœ… ControlledImplements access controls, validates inputs, limits scope

Flow: Untrusted AI Output โ†’ MCP Host (validation) โ†’ MCP Server (execution)

Best Practices

For Server Developers:

  • โ†’Validate all inputs strictly
  • โ†’Implement least-privilege access
  • โ†’Log all operations
  • โ†’Handle errors gracefully
  • โ†’Never trust AI-provided paths/URLs

For Host Administrators:

  • โ†’Review server capabilities before enabling
  • โ†’Configure appropriate permissions
  • โ†’Monitor server activity
  • โ†’Keep servers updated
  • โ†’Isolate sensitive servers

Host Support

Claude Desktop

Native MCP support:

  • โ†’Configure servers in settings
  • โ†’Servers run locally
  • โ†’Full tool/resource/prompt support

IDE Integrations

Growing support:

  • โ†’VS Code extensions
  • โ†’JetBrains plugins
  • โ†’Custom IDE integrations

Custom Applications

Build your own:

  • โ†’Use MCP client libraries
  • โ†’Implement host logic
  • โ†’Connect to any MCP servers

Future of MCP

Roadmap Items

Protocol Enhancements:

  • โ†’Streaming responses
  • โ†’Better error handling
  • โ†’Authentication standards
  • โ†’Remote server protocols

Ecosystem Growth:

  • โ†’More official servers
  • โ†’Enterprise integrations
  • โ†’Certification program
  • โ†’Enhanced discovery

Industry Adoption

MCP is positioned to become:

  • โ†’Standard for AI integrations
  • โ†’Required skill for AI developers
  • โ†’Part of enterprise AI architecture

In Brief

  1. โ†’

    MCP is an open standard for connecting AI assistants to tools and data sources

  2. โ†’

    Three capability types: tools (actions), resources (data), prompts (templates)

  3. โ†’

    Architecture separates hosts (AI apps) from servers (capabilities)

  4. โ†’

    SDKs available for Python and TypeScript development

  5. โ†’

    Growing ecosystem of official and community servers

  6. โ†’

    Security requires careful trust boundary management

  7. โ†’

    Becoming standard for AI tool integration across the industry


Learn AI Agent Development

MCP is a key technology for building capable AI agents. Understanding how agents use tools-and how to build those integrations-is essential for modern AI development.

In our Module 6, AI Agents & Orchestration, you'll learn:

  • โ†’How AI agents reason and plan
  • โ†’Tool integration patterns
  • โ†’The ReAct framework
  • โ†’Multi-agent orchestration
  • โ†’Building safe, capable agents
  • โ†’Error handling and recovery

These skills prepare you to build production-ready AI agents.

โ†’ Explore Module 6: AI Agents & Orchestration

GO DEEPER โ€” FREE GUIDE

Module 6 โ€” AI Agents & ReAct

Create autonomous agents that reason and take actions.

D

Dorian Laurenceau

Full-Stack Developer & Learning Designer

Full-stack web developer and learning designer. I spent 4 years as a freelance full-stack developer and 4 years teaching React, JavaScript, HTML/CSS and WordPress to adult learners. Today I design learning paths in web development and AI, grounded in learning science. I founded learn-prompting.fr to make AI practical and accessible, and built the Bluff app to gamify political transparency.

Prompt EngineeringLLMsFull-Stack DevelopmentLearning DesignReact
Published: January 30, 2026Updated: April 24, 2026
Newsletter

Weekly AI Insights

Tools, techniques & news โ€” curated for AI practitioners. Free, no spam.

Free, no spam. Unsubscribe anytime.

FAQ

What is Model Context Protocol (MCP)?+

MCP is an open protocol by Anthropic that standardizes how AI assistants connect to external tools and data sources. It's like USB for AI-a universal connector that works with any compliant service.

How is MCP different from function calling?+

Function calling is provider-specific (OpenAI, Anthropic have different formats). MCP is a universal standard-build an MCP server once, and it works with any MCP-compatible AI client.

What can MCP connect to?+

Databases (PostgreSQL, SQLite), APIs (GitHub, Slack, Linear), file systems, web services, and custom tools. The ecosystem includes community-built servers for popular services.

How do I use MCP with Claude Code?+

Configure MCP servers in Claude Code settings. Specify the server command and environment variables. Claude automatically discovers available tools and can use them during sessions.