DEV Community

Suifeng023
Suifeng023

Posted on

MCP Explained: The Protocol Changing How AI Agents Talk to Your Code

If you've been following AI development in 2025-2026, you've probably seen the acronym MCP everywhere. It stands for Model Context Protocol, and it's rapidly becoming the lingua franca for AI agents to interact with tools, databases, APIs, and — most importantly — your codebase.

In this guide, I'll break down what MCP is, why it matters, and how you can start using it today.

What is MCP?

MCP is an open protocol standardized by Anthropic (the company behind Claude) that provides a universal way for AI models to connect with external tools and data sources. Think of it as USB-C for AI agents — a single standard that lets any AI model plug into any tool.

Before MCP, every AI tool had its own integration approach:

  • Cursor had its own file system access
  • ChatGPT had plugins
  • Claude had tool use
  • Each required custom implementation

MCP unifies all of this under one protocol.

The Architecture: Client-Server Model

┌─────────────┐         ┌─────────────┐         ┌─────────────┐
│   AI Model  │ ◄─────► │ MCP Client  │ ◄─────► │ MCP Server  │
│ (Claude, etc)│         │ (in your app)│         │  (your tool) │
└─────────────┘         └─────────────┘         └─────────────┘
                                                         │
                                                         ▼
                                                  ┌─────────────┐
                                                  │  Local API   │
                                                  │ File System  │
                                                  │  Database    │
                                                  └─────────────┘
Enter fullscreen mode Exit fullscreen mode

Key Components:

  1. MCP Host: The application the user interacts with (e.g., Claude Desktop, IDE)
  2. MCP Client: Maintains 1:1 connections with servers, within the host
  3. MCP Server: Lightweight programs that expose specific capabilities
  4. Shared Resources: Tools, prompts, and resources the server provides

Three Core Capabilities

1. Resources

Resources are the data your AI agent can read:

@mcp.resource("file:///{path}")
def read_file(path: str) -> str:
    """Read a file from the local filesystem."""
    with open(path, 'r') as f:
        return f.read()
Enter fullscreen mode Exit fullscreen mode

2. Tools

Tools are the actions your AI agent can perform:

@mcp.tool()
def execute_sql_query(query: str, database: str = "default") -> str:
    """Execute a SQL query against the configured database."""
    conn = get_connection(database)
    result = conn.execute(query)
    return json.dumps(result)
Enter fullscreen mode Exit fullscreen mode

3. Prompts

Prompts are reusable templates for user interaction:

@mcp.prompt()
def code_review(file_path: str) -> str:
    """Generate a code review prompt for the given file."""
    code = read_file(file_path)
    return f"Please review this code:\n\n```
{% endraw %}
\n{code}\n
{% raw %}
```"
Enter fullscreen mode Exit fullscreen mode

Building Your First MCP Server

Let's build a practical MCP server that lets Claude interact with a SQLite database:

# server.py
from mcp.server.fastmcp import FastMCP

mcp = FastMCP("my-data-tools")

import sqlite3
import json

DB_PATH = "./my_database.db"

@mcp.tool()
def list_tables() -> list[str]:
    """List all tables in the database."""
    conn = sqlite3.connect(DB_PATH)
    cursor = conn.cursor()
    cursor.execute("SELECT name FROM sqlite_master WHERE type='table'")
    tables = [row[0] for row in cursor.fetchall()]
    conn.close()
    return tables

@mcp.tool()
def query_table(table: str, limit: int = 10) -> str:
    """Query a table and return the results as JSON."""
    conn = sqlite3.connect(DB_PATH)
    cursor = conn.cursor()
    cursor.execute(f"SELECT * FROM {table} LIMIT ?", (limit,))
    columns = [description[0] for description in cursor.description]
    rows = [dict(zip(columns, row)) for row in cursor.fetchall()]
    conn.close()
    return json.dumps(rows, indent=2, default=str)

@mcp.tool()
def run_custom_query(query: str) -> str:
    """Execute a custom SQL query (SELECT only for safety)."""
    if not query.strip().upper().startswith("SELECT"):
        return "Error: Only SELECT queries are allowed."
    conn = sqlite3.connect(DB_PATH)
    cursor = conn.cursor()
    try:
        cursor.execute(query)
        columns = [description[0] for description in cursor.description]
        rows = [dict(zip(columns, row)) for row in cursor.fetchall()]
        return json.dumps(rows, indent=2, default=str)
    except Exception as e:
        return f"Error: {str(e)}"
    finally:
        conn.close()

if __name__ == "__main__":
    mcp.run()
Enter fullscreen mode Exit fullscreen mode

Running the Server

pip install mcp
python server.py
Enter fullscreen mode Exit fullscreen mode

Connecting Claude Desktop

Add this to your Claude Desktop config (claude_desktop_config.json):

{
  "mcpServers": {
    "my-data-tools": {
      "command": "python",
      "args": ["/path/to/server.py"]
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

Restart Claude Desktop, and you'll see a 🔨 icon — your tools are now available!

Real-World Use Cases

1. Database Exploration

Ask Claude directly: "Show me the top 10 users by revenue from the orders table."

2. API Integration

Build an MCP server wrapping your internal APIs. Claude can fetch real-time data.

3. File Operations

The official MCP filesystem server lets Claude read, write, and search files — perfect for code review.

4. Git Operations

Create branches, commit changes, and review diffs through natural language.

Why MCP Matters for Developers

  1. Write once, use everywhere: Build one MCP server, use it with Claude, ChatGPT, Cursor, Windsurf
  2. Security: The protocol runs locally — your data doesn't go to a third party
  3. Composability: Mix and match servers for powerful AI workflows
  4. Open standard: No vendor lock-in

Getting Started Checklist

  • [ ] Install the MCP Python SDK: pip install mcp
  • [ ] Build a simple server with one tool
  • [ ] Connect it to Claude Desktop
  • [ ] Test with a natural language prompt
  • [ ] Explore official server examples on GitHub

Conclusion

MCP is more than another API spec — it's a paradigm shift in how AI agents interact with software. By providing a universal protocol for tool use, MCP eliminates the "every AI needs its own integration" problem.

The ecosystem is young and growing fast. Now is the perfect time to get involved.


For more AI developer guides, check out my Developer Prompt Bible — 200+ battle-tested prompts for coding with AI.

Top comments (0)