Skip to main content
Glama
MuhammadShayanUmarX

Todo MCP Server

README.md
# 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](https://github.com/user-attachments/assets/d95be02f-4dde-47b6-8bd2-af5e32aef31c)
![ss 2](https://github.com/user-attachments/assets/6090152b-f169-4118-a29c-66e543567ab8)
![ss 3](https://github.com/user-attachments/assets/a19ced0a-7431-469c-a6c4-affdae4ca4bb)
![ss 4](https://github.com/user-attachments/assets/b04df19c-d43e-43f7-859d-40f9219ba32f)


## 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
```

## 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:
```bash
python -m venv venv
# On Windows:
.\venv\Scripts\activate
# On macOS/Linux:
source venv/bin/activate
```

2. Install dependencies:
```bash
pip install -r requirements.txt
```

## Usage

### Running the FastAPI Application

```bash
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

```bash
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

```bash
python test_mcp.py
```

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

## API Examples

### FastAPI Examples

Create a todo:
```bash
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:
```bash
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