Claude for Developers

Mastering MCP with Claude Agent SDK: Build Powerful AI Agent Integrations

Discover the Model Context Protocol (MCP) in Claude's Agent SDK to seamlessly connect AI agents to external data and tools. Build custom servers for resources, prompts, and actions with practical Python examples.

J

Jennifer Yu

Workflow Automation Specialist

November 29, 2025 min read
Share:

Introduction to Model Context Protocol (MCP)

The Model Context Protocol (MCP) represents a game-changing standard designed specifically for AI agents. It allows large language models like Claude to interact with external data sources, reusable instructions, and executable tools in a consistent, interoperable manner. Imagine your AI agent effortlessly pulling live data from a database, applying custom prompts tailored to your workflow, or triggering actions in third-party services—all without custom hacks or brittle integrations.

Developed by Anthropic, MCP standardizes these connections, making it easier for developers to extend Claude's capabilities. Whether you're building enterprise workflows, personal productivity tools, or experimental AI agents, MCP provides the foundation. Clients such as Claude Desktop and Claude for Work act as the bridge, discovering and communicating with MCP servers you create.

This protocol shines in real-world scenarios like automating customer support by querying CRM systems, analyzing GitHub repos for code reviews, or generating reports from live APIs. By adopting MCP, you future-proof your integrations as more tools and models support it.

Core Components of MCP

MCP revolves around three primary elements exposed by servers:

  • Resources: Static or dynamic data payloads, such as files, database queries, or API responses. These provide context without execution, like feeding a sales report into Claude for summarization.
  • Prompts: Reusable templates with variables for dynamic instructions. Perfect for standardizing responses, e.g., a prompt library for legal document reviews.
  • Tools: Executable functions that perform actions and return results, enabling Claude to book meetings, send emails, or process images.

Servers handle requests via JSON-RPC 2.0 over two transports:

  • Stdio: Ideal for local, command-line integrations.
  • Server-Sent Events (SSE): Suited for remote, HTTP-based access with streaming support.

This separation ensures flexibility—run servers locally for speed or deploy them cloud-side for scalability.

Why Choose MCP for Your AI Projects?

In a landscape cluttered with proprietary APIs and ad-hoc tool calling, MCP offers:

  • Interoperability: Works across MCP-compatible clients and models.
  • Simplicity: Single protocol reduces integration complexity.
  • Extensibility: Easily add resources, prompts, or tools as your needs evolve.
  • Security: Controlled access with authentication options.

Consider a development team using Claude to triage issues: An MCP server exposes GitHub repo resources for context, custom prompts for bug categorization, and tools to assign issues automatically. This setup cuts resolution time dramatically.

Getting Started: Setting Up Your MCP Server

To dive in, leverage the official Python SDK from Anthropic's MCP Python SDK repository. It's the quickest path to building production-ready servers.

Installation

pip install mcp[stdio,sse]

The extras (stdio, sse) enable transport support. For development, use a virtual environment:

python -m venv mcp-env
source mcp-env/bin/activate  # On Unix
mcp-env\\Scripts\\activate    # On Windows
pip install mcp[stdio,sse]

Creating a Basic Server

Inherit from StdioServer or SseServer and define your components:

import asyncio
from mcp.server.stdio import stdio_server
from mcp.types import Resource

stdio_server = stdio_server()

@stdio_server.list_resources()
async def handle_list_resources() -> list[Resource]:
    return [
        Resource(
            uri="example://greeting",
            name="Greeting",
            description="A simple greeting message",
            mimeType="text/plain",
        )
    ]

@stdio_server.read_resource()
async def handle_read_resource(uri: str) -> str:
    if uri == "example://greeting":
        return "Hello from MCP!"
    raise ValueError(f"Unknown URI: {uri}")

async def main():
    async with stdio_server lifespan:
        await stdio_server.run()

asyncio.run(main())

Run it with python your_server.py. Claude Desktop can now connect via claude://mcp URLs.

Implementing Resources

Resources deliver data on demand. List them with metadata, then read contents. Use URIs like scheme://authority/path for uniqueness.

Real-World Example: Database Query Resource

Connect to SQLite for live data:

import sqlite3

@stdio_server.read_resource()
async def read_db_query(uri: str) -> str:
    if uri.startswith("db://sales/"):
        conn = sqlite3.connect('sales.db')
        cursor = conn.cursor()
        cursor.execute("SELECT * FROM orders LIMIT 10")
        results = cursor.fetchall()
        conn.close()
        return str(results)
    raise ValueError("Invalid URI")

Claude can now analyze sales trends by requesting db://sales/recent.

Building Prompts

Prompts are parameterized templates. List them, then retrieve with filled variables.

from mcp.types import Prompt, PromptParseError

@stdio_server.list_prompts()
async def list_prompts():
    return [
        Prompt(
            name="summarize",
            description="Summarize text",
            template="Summarize the following: {{text}}"
        )
    ]

@stdio_server.get_prompt()
async def get_prompt(name: str, arguments: dict[str, str]):
    if name == "summarize":
        text = arguments.get("text", "")
        return template.format(text=text)
    raise ValueError("Unknown prompt")

Useful for consistent workflows, like email drafting.

Developing Tools

Tools execute code and support parameters with schemas for validation.

from mcp.types import Tool, ExecuteToolError

@stdio_server.list_tools()
async def list_tools():
    return [
        Tool(
            name="calculate",
            description="Add two numbers",
            inputSchema={
                "type": "object",
                "properties": {
                    "a": {"type": "number"},
                    "b": {"type": "number"}
                }
            }
        )
    ]

@stdio_server.call_tool()
async def call_tool(name: str, arguments: dict):
    if name == "calculate":
        return {"result": arguments["a"] + arguments["b"]}
    raise ValueError("Unknown tool")

Extend to real apps: GitHub issue creation or weather fetches.

Advanced Features and Best Practices

  • Authentication: Implement mcp-capabilities for OAuth.
  • Streaming: SSE supports real-time updates.
  • Error Handling: Use specific exceptions like NotFoundError.
  • Discovery: Servers advertise via initialize response.

Deployment Scenario: Dockerize your server for Kubernetes:

FROM python:3.12-slim
COPY . /app
WORKDIR /app
RUN pip install mcp[sse]
CMD ["python", "server.py"]

Expose via http://your-server:8000/sse.

Testing: Use the SDK's client mocks or connect to Claude Desktop.

MCP Clients and Ecosystem

  • Claude Desktop: Native MCP support for local servers.
  • Claude for Work: Enterprise-grade remote access.
  • Future: More LLMs and tools adopting MCP.

Troubleshooting Common Issues

  • URI Mismatches: Ensure exact matching.
  • Transport Errors: Verify stdio piping or SSE endpoints.
  • Schema Validation: Test inputs rigorously.

Next Steps

Explore the full spec and contribute via the MCP Python SDK GitHub. Build a server for your domain—start simple, iterate fast. MCP unlocks Claude's potential for agentic AI.

(Word count: 1127)

<div style="text-align: center; margin-top: 2rem;"> <a href="https://platform.claude.com/docs/en/agent-sdk/mcp" target="_blank" rel="noopener noreferrer" class="view-full-resource-btn" style="display: inline-block; background-color: #f97316; color: white; padding: 12px 24px; border-radius: 8px; text-decoration: none; font-weight: 600; transition: background-color 0.2s;">View Full Resource</a> </div>
The #1 Newsletter in AI

Stay ahead of the AI curve

The most important updates, news, and content — delivered in one weekly newsletter.

No spam. Unsubscribe anytime. Privacy policy

MCP
Claude Agent SDK
AI Tools
Python SDK
AI Integrations
ai-agents
J

About Jennifer Yu

Workflow Automation Specialist

Jennifer covers workflow strategy, no-code platforms, and clear implementation guidance for teams adopting automation.

Comments (0)