Advertisement
Verified Partner
Enterprise Cloud Infrastructure, GPU Clusters & AI APIs
Deploy high-throughput inference and quant trading pipelines with ultra-low latency.
Explore Platform β†’

Model Context Protocol (MCP) Guide: Build Custom Tools for Claude & Cursor

By Dr. Erik Vandeberg β€’ Advanced β€’ 16 min read β€’ Updated 2026-09-12

What You Will Master in This Tutorial

  • Understand the MCP client-server protocol and JSON-RPC 2.0 transport.
  • Build a production MCP server in Python using FastMCP.
  • Expose secure database queries and file readers as agent tools.
  • Configure Cursor, Windsurf, and Claude Desktop to consume custom MCP servers.

1. What is Model Context Protocol (MCP)?

Model Context Protocol (MCP) is an open standard introduced by Anthropic that standardizes how AI applications connect to external data sources, developer tools, and proprietary environments. Think of MCP as the USB-C port for AI agents.

PYTHON
from mcp.server.fastmcp import FastMCP

# Initialize MCP Server
mcp = FastMCP("PostgresTools")

@mcp.tool()
def run_read_only_query(query: str) -> str:
    """Execute a safe SELECT query against the staging database."""
    if not query.strip().lower().startswith("select"):
        raise ValueError("Only read-only SELECT queries are permitted.")
    # Execute query against database pool
    return "Query executed: 24 records returned."

if __name__ == "__main__":
    mcp.run(transport="stdio")
Note: MCP servers can run locally over stdio or remotely over Server-Sent Events (SSE).
Advertisement
Verified Partner
Quantitative Trading Systems & 30 AI Business Blueprints
Build predictable monthly recurring revenue with retainers & automated bots.
View Blueprints β†’

Knowledge Check: Test Your Understanding

1. What communication protocol does MCP utilize under the hood?

Frequently Asked Questions

Can I use MCP with Cursor and VS Code?
Yes! Both Cursor, Windsurf, and modern VS Code extensions natively support configuring custom MCP servers in their settings JSON.

Going deeper: MCP servers in practice

Building the FastMCP server from this tutorial is the first step; operating one safely is the practice that follows. The read-only guard in the example β€” rejecting any query that does not start with SELECT β€” is the pattern to generalize across everything you expose: each tool should do one thing, validate its inputs as if the model were an untrusted caller, and return bounded, shaped results. Transport follows deployment. A stdio server suits local tools consumed by Cursor, Windsurf, or Claude Desktop on your own machine, while a remote server over SSE serves a whole team β€” and raises the authentication bar accordingly. Build to the standard, and one server serves every MCP client.

Common mistakes

Frequently asked questions

What exactly does MCP standardize?

How AI applications connect to external data sources and tools: a client-server protocol, introduced by Anthropic, that runs over JSON-RPC 2.0 on stdio or HTTP with SSE. The tutorial's analogy is apt β€” MCP is the USB-C port for AI agents, one connector shape for many devices.

Which programming language should I build my MCP server in?

The tutorial uses Python with FastMCP, where a decorator turns an ordinary function into an agent-callable tool. In practice, choose the SDK that matches the systems you are exposing β€” the protocol is language-agnostic, so the server should live near the data it serves.

Should my MCP server run locally or remotely?

Locally over stdio for personal development tools β€” it starts with the client and inherits your machine's permissions. Remotely over SSE when a team shares one server, but add authentication and input validation first, because a network listener is a very different exposure than a local subprocess.

Get 1 AI agent blueprint every week

Join the free PVT newsletter: one practical AI agent or automation you can build and sell, every week. No spam.