MCP extension for django-ninja
Project description
Ninja MCP
Automatic Model Context Protocol (MCP) server generator for Django Ninja applications. Huge credit to FastAPI-MCP for the original idea and implementation.
What is MCP?
The Model Context Protocol (MCP) is an open protocol that standardizes how applications provide context to Large Language Models (LLMs). Think of MCP like a USB-C port for AI applications - it provides a standardized way to connect AI models to different data sources and tools.
MCP helps you build agents and complex workflows on top of LLMs by providing:
- Pre-built integrations that your LLM can plug into
- Flexibility to switch between LLM providers
- Best practices for securing your data within your infrastructure
What is Ninja MCP?
Ninja MCP is a library that automatically converts your Django Ninja API endpoints into MCP tools. This allows LLM clients like Claude to interact with your Django application directly through a standardized protocol.
Features
- Automatic Tool Generation: Convert your Django Ninja API endpoints to MCP tools automatically
- OpenAPI Integration: Leverages your API's OpenAPI schema for rich tool descriptions
- SSE Transport: Built-in Server-Sent Events (SSE) transport for real-time communication
- Filtering Options: Include or exclude specific operations or tags
- Customizable Descriptions: Control the level of detail in tool descriptions
Quick Start
Here's a simple example of integrating Ninja MCP with your Django project:
from django.urls import path
from ninja import NinjaAPI
from ninja_mcp import NinjaMCP
# Create your Ninja API as usual
api = NinjaAPI()
@api.get("/hello")
def hello(request):
return {"message": "Hello, world!"}
@api.get("/greet/{name}")
def greet(request, name: str):
return {"message": f"Hello, {name}!"}
# Create the MCP server from your API
mcp_server = NinjaMCP(
ninja=api,
base_url="http://localhost:8000/api",
name="My API",
description="My awesome API with MCP integration"
)
# Mount the MCP server to your API
mcp_server.mount(api, mount_path="/mcp")
# Include in URLconf
urlpatterns = [
path("api/", api.urls),
]
With this setup, your Django Ninja API is now available as MCP tools at /api/mcp. LLM clients that support MCP can connect to this endpoint and use your API's functionality as tools.
MCP Architecture
Your Django application serves as an MCP server that can be connected to by MCP clients (like Claude Desktop). The client-server architecture allows:
- LLM clients to discover the available tools from your API
- Tools to be called by the LLM with appropriate parameters
- Results to be returned to the LLM in a standardized format
Advanced Usage
Customizing Tool Generation
mcp_server = NinjaMCP(
ninja=api,
base_url="http://localhost:8000/api",
name="My API",
description="My awesome API with MCP integration",
describe_all_responses=True, # Include all response types in descriptions
describe_full_response_schema=True, # Include full response schemas
include_operations=["get_users", "create_user"], # Only include specific operations
# exclude_operations=["delete_user"], # Exclude specific operations
include_tags=["users"], # Only include operations with specific tags
# exclude_tags=["admin"], # Exclude operations with specific tags
)
Custom Mount Path
You can mount the MCP server at a custom path:
mcp_server.mount(api, mount_path="/custom/mcp/path")
Mounting to a Different Router
You can mount the MCP server to a different router than the one it was created from:
admin_api = NinjaAPI(urls_namespace="admin")
mcp_server.mount(admin_api, mount_path="/admin/mcp")
Requirements
- Python 3.10+
- Django
- Django Ninja
- httpx
- mcp (Model Context Protocol Python library)
License
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Further Reading
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file django_ninja_mcp-0.0.1a2.tar.gz.
File metadata
- Download URL: django_ninja_mcp-0.0.1a2.tar.gz
- Upload date:
- Size: 78.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.6.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
468d902c91bcc26d382a4171ad7f5b0a60b1598ce0360e87ea47d32ab11abf82
|
|
| MD5 |
8f83c45d2f7b665e55bbbfce20292e0b
|
|
| BLAKE2b-256 |
d82cc2fa4ef46535b611656c67eedb96567bc8dc39b87d02ca8e05011b8d16de
|
File details
Details for the file django_ninja_mcp-0.0.1a2-py3-none-any.whl.
File metadata
- Download URL: django_ninja_mcp-0.0.1a2-py3-none-any.whl
- Upload date:
- Size: 16.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.6.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0f09c2f3b134a0176242e2b95a25b4ab24c8aceb671412bda48d471f85970466
|
|
| MD5 |
d0d7e79ea51d823bf107603c14f13b9c
|
|
| BLAKE2b-256 |
fe1fdfaa10c6842d071b8de0560eb73f126dd276b7f444b29b6a8790baf27fa4
|