Skip to main content
Glama
MuhammadShayanUmarX

Todo MCP Server

Todo App - FastAPI to MCP Conversion

This project demonstrates how to create a FastAPI todo application and convert it to an MCP (Model Context Protocol) server. ss 1 ss 2 ss 3 ss 4

Project Structure

├── main.py              # FastAPI application
├── models.py            # Pydantic models for data validation
├── database.py          # In-memory database operations
├── mcp_server.py        # MCP server implementation
├── mcp_config.json     # MCP server configuration
├── test_mcp.py         # Test script for MCP server
├── requirements.txt    # Python dependencies
└── README.md           # This file

Related MCP server: Coding Todo Server

Features

FastAPI Application

  • RESTful API endpoints for todo management

  • CRUD operations (Create, Read, Update, Delete)

  • Data validation with Pydantic models

  • In-memory storage for simplicity

MCP Server

  • Converts FastAPI functionality to MCP tools

  • 5 available tools: list_todos, get_todo, create_todo, update_todo, delete_todo

  • Compatible with MCP clients and AI assistants

Installation

  1. Create and activate a virtual environment:

python -m venv venv
# On Windows:
.\venv\Scripts\activate
# On macOS/Linux:
source venv/bin/activate
  1. Install dependencies:

pip install -r requirements.txt

Usage

Running the FastAPI Application

python main.py

The API will be available at http://localhost:8000

API Endpoints:

  • GET / - Welcome message

  • GET /todos - List all todos

  • GET /todos/{id} - Get specific todo

  • POST /todos - Create new todo

  • PUT /todos/{id} - Update todo

  • DELETE /todos/{id} - Delete todo

Running the MCP Server

python mcp_server.py

The MCP server provides these tools:

  • list_todos - Get all todos

  • get_todo - Get specific todo by ID

  • create_todo - Create new todo

  • update_todo - Update existing todo

  • delete_todo - Delete todo

Testing the MCP Server

python test_mcp.py

This will run a comprehensive test of all MCP server functionality.

API Examples

FastAPI Examples

Create a todo:

curl -X POST "http://localhost:8000/todos" \
     -H "Content-Type: application/json" \
     -d '{"title": "Learn MCP", "description": "Study Model Context Protocol", "status": "pending"}'

Get all todos:

curl "http://localhost:8000/todos"

MCP Tool Examples

The MCP server can be used with MCP-compatible clients. The tools accept JSON arguments and return structured responses.

Data Models

Todo Model

  • id: Integer (auto-generated)

  • title: String (required)

  • description: String (optional)

  • status: Enum (pending, in_progress, completed)

  • created_at: DateTime (auto-generated)

  • updated_at: DateTime (auto-updated)

Status Values

  • pending: Todo is not started

  • in_progress: Todo is being worked on

  • completed: Todo is finished

Development

The project uses:

  • FastAPI for the REST API

  • Pydantic for data validation

  • MCP for the protocol server

  • asyncio for asynchronous operations

Notes

  • The database is in-memory and will reset when the application restarts

  • The MCP server runs in stdio mode for easy integration

  • Both the FastAPI app and MCP server share the same data models and business logic

MCP-Server

Related MCP Connectors

Related MCP Servers