Django DRF MCP Server
by Joel-hanson
README.md
# Django REST Framework + MCP Integration
A simple Django REST Framework application with integrated Model Context Protocol (MCP) server.
## Overview
This project demonstrates the simplest way to add MCP (Model Context Protocol) support to any Django REST Framework project. Just copy one file (`mcp_view.py`) and add one URL pattern - that's it!
## Features
- **Django REST Framework API** - Complete CRUD operations for User management
- **Simple MCP Integration** - Single file MCP view with auto-discovery
- **Zero Dependencies** - Only uses Django, DRF, and Python standard library
- **Auto-discovery** - Automatically finds DRF ViewSets and creates MCP tools
## Quick Start
### 1. Install Dependencies
```bash
pip install -r requirements.txt
```
### 2. Setup Database
```bash
python manage.py migrate
```
### 3. Start the Server
```bash
python manage.py runserver
```
The server provides:
- **REST API**: `http://localhost:8000/api/users/`
- **MCP Endpoint**: `http://localhost:8000/mcp/`
- **Admin**: `http://localhost:8000/admin/`
## Adding MCP to Your Django Project
Want to add MCP support to your existing Django DRF project? It's incredibly simple:
### 1. Copy the MCP View
Copy `django_mcp_project/mcp_view.py` to your Django project.
### 2. Add URL Pattern
In your `urls.py`:
```python
from your_project.mcp_view import MCPView
urlpatterns = [
# your existing patterns...
path("mcp/", MCPView.as_view(), name="mcp"),
]
```
### 3. That's it!
Your Django project now has MCP support. The view automatically discovers all your DRF ViewSets and creates MCP tools for them.
## Testing MCP Integration
Test that your MCP endpoint is working:
```bash
curl -X POST http://127.0.0.1:8000/mcp/ \
-H 'Content-Type: application/json' \
-d '{"jsonrpc": "2.0", "id": 1, "method": "tools/list", "params": {}}'
```
## API Endpoints
### User Management
- `GET/POST /api/users/` - List all users / Create new user
- `GET/PUT/PATCH/DELETE /api/users/{id}/` - User detail operations
- `POST /api/users/{id}/activate/` - Activate user
- `POST /api/users/{id}/deactivate/` - Deactivate user
### MCP Integration
- `POST /mcp/` - MCP JSON-RPC endpoint with auto-discovered tools
## Project Structure
```
django-drf-mcp/
├── django_mcp_project/
│ ├── mcp_view.py # 🌟 The magic file - copy this to any DRF project
│ ├── settings.py # Django settings
│ ├── urls.py # URL configuration with MCP endpoint
│ └── wsgi.py # WSGI configuration
├── users/ # Example Django app with User model
│ ├── models.py # Extended User model
│ ├── serializers.py # DRF serializers
│ ├── views.py # DRF ViewSets
│ └── urls.py # User API endpoints
├── manage.py # Django management script
├── requirements.txt # Dependencies
└── .vscode/ # VS Code MCP client configuration
```
## How It Works
The `MCPView` class in `mcp_view.py`:
1. **Auto-discovers** all Django apps and their ViewSets
2. **Creates MCP tools** for each CRUD operation (list, create, retrieve, update, destroy)
3. **Provides JSON-RPC interface** compatible with MCP clients
4. **Requires zero configuration** - just works out of the box
## VS Code Integration
Add to your `.vscode/mcp.json`:
```json
{
"servers": {
"django-mcp": {
"type": "http",
"url": "http://127.0.0.1:8000/mcp/"
}
}
}
```
## License
MIT License - feel free to use this in your projects!
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues