Skip to main content
Glama
MuhammadIshaqSkd

MCP FastAPI Tutorial Server

MCP Server with FastAPI (Python)

A hands-on implementation of a Model Context Protocol (MCP) server built with Python using the official MCP SDK and FastAPI/Starlette.

What is MCP?

Model Context Protocol (MCP) is an open standard that enables AI assistants (like Claude, Kiro, Cursor) to connect with external tools, data sources, and APIs through a unified interface — similar to how USB-C standardized device connectivity.

┌─────────────┐         ┌─────────────┐         ┌──────────────┐
│  AI Client  │  ←───→  │  MCP Server │  ←───→  │  Your Tools/ │
│(Claude/Kiro)│  JSON   │  (This Repo)│         │  Data/APIs   │
└─────────────┘         └─────────────┘         └──────────────┘

Related MCP server: MCP Demo Server

Features

  • Tools: Functions that AI clients can discover and call

    • greet — Returns a greeting for a given name

    • add_numbers — Adds two numbers and returns the result

    • get_current_time — Returns the current date and time

  • SSE Transport: Server-Sent Events based communication (HTTP)

  • Test Client: A Python client that connects to the server and calls all tools

Tech Stack

  • Python 3.13+

  • MCP Python SDK (v1.9)

  • FastAPI / Starlette

  • Uvicorn (ASGI server)

  • SSE (Server-Sent Events) transport

Getting Started

Prerequisites

  • Python 3.10+

  • pip

Installation

git clone https://github.com/MuhammadIshaqSkd/mcp-fastapi-tutorial.git
cd mcp-fastapi-tutorial

# Create virtual environment
python -m venv venv

# Activate (Windows)
.\venv\Scripts\activate

# Activate (macOS/Linux)
source venv/bin/activate

# Install dependencies
pip install -r requirements.txt

Running the Server

python server.py

Server starts on http://127.0.0.1:8080 with SSE endpoint at /sse.

Testing with the Client

Open a second terminal (keep the server running):

python test_client.py

Expected output:

==================================================
MCP Client - Connecting to server...
==================================================

✅ Connection successful!

📋 Available Tools:
------------------------------
  🔧 greet: Greet someone by name and return a greeting message.
  🔧 add_numbers: Return the sum of two numbers.
  🔧 get_current_time: Return the current date and time.

🎯 Calling 'greet' tool...
  Result: Assalam-o-Alaikum, Mishaq! MCP Server se aapko salam!

🎯 Calling 'add_numbers' tool...
  Result: 15 + 27 = 42

🎯 Calling 'get_current_time' tool...
  Result: Current time: 2026-06-22 18:15:09

==================================================
🎉 All tools called successfully!
==================================================

Project Structure

mcp-fastapi-tutorial/
├── server.py           # MCP Server — registers and exposes tools via SSE
├── test_client.py      # MCP Client — connects to server, lists & calls tools
├── requirements.txt    # Python dependencies
└── README.md

How It Works

  1. Server registers tools using @mcp.tool() decorator

  2. Client connects via SSE to /sse endpoint

  3. Client calls list_tools() to discover available tools

  4. Client calls call_tool("tool_name", {args}) to execute a tool

  5. Server executes the function and returns the result

Key Concepts Demonstrated

Concept

Description

Tool Registration

Using @mcp.tool() to expose Python functions as MCP tools

SSE Transport

HTTP-based bidirectional communication via Server-Sent Events

Client Session

Initializing and managing MCP client-server sessions

Tool Discovery

Clients dynamically discover available tools at runtime

Tool Execution

Remote procedure call pattern over the MCP protocol

Roadmap

  • Basic MCP server with tools

  • Add Resources (context/data providers for AI)

  • Add Prompts (reusable prompt templates)

  • Streamable HTTP transport

  • Authentication & authorization

  • Deploy to cloud

Resources

License

MIT

Related MCP Connectors

Related MCP Servers

  • F
    license
    C
    quality
    D
    maintenance
    A demonstration server based on Model Context Protocol (MCP) that showcases how to build custom tools for AI assistants, providing mathematical calculation and multilingual greeting capabilities.
    3
    -
  • A
    license
    B
    quality
    D
    maintenance
    A minimal MCP server implementation demonstrating basic tool integration with example functions like greetings, version info, and system information. Supports both HTTP and stdio transports for connecting AI clients.
    3
    MIT