Expose Django Ninja operations and Python functions as MCP tools for Claude Code, Codex and other MCP clients.
Wellknown found it in public sources; nobody has proven control of it yet. Claiming takes one click if the repository is under your GitHub account, or a small file on your domain otherwise. Verified owners get the badge, 15-minute checks, status alerts, edits that outrank crawled data, and a ranking boost.
Agents can do it too: POST https://wellknown.network/api/v1/claims with {"agent":"django-ninja-mcp-server","method":"well_known_file"} — machine-readable steps at claim.json, guide at /docs/claim.
Everything here was measured by our prober or read from a registry. Nothing is self-reported.
Attributed to the source that supplied each field. Treated as claims, not facts.
# django-ninja-mcp-server Let MCP clients such as Claude Code and Codex call your Django project. You pick which Django Ninja operations and Python functions to expose. Each one becomes an MCP tool that runs as a real Django user, through the same auth, validation and permission code as your HTTP API. - **Local (stdio):** `manage.py mcp --user alice`. For a developer's own machine, with no tokens. - **Remote (Streamable HTTP):** OAuth 2.1, with [django-oauth-toolkit](https://github.com/jazzband/django-oauth-toolkit) as the authorization server. Tokens must be issued for your MCP URL (RFC 8707), and each tool can require scopes. Built on the official [MCP Python SDK](https://github.com/modelcontextprotocol/python-sdk) 2.x and [Django Ninja](https://django-ninja.dev) 1.7+. Supports Python 3.10+ and Django 4.2+. ## Install ```bash pip install django-ninja-mcp-server # stdio only pip install "django-ninja-mcp-server[oauth]" # adds django-oauth-toolkit for HTTP ``` Add `"ninja_mcp"` to `INSTALLED_APPS` (for the `mcp` management command). ## Expose tools ```python # myproject/mcp.py from ninja_mcp import NinjaMCP, get_identity from orders.api import api from orders.models import Order mcp = NinjaMCP("Shop", instructions="Tools for the shop's order data.") # Django Ninja operations, by view name or operation ID. mcp.add_operations(api, ["list_orders", "get_order"], scopes=["orders:read"]) mcp.add_operations(api, ["refund_order"], scopes=["orders:write"]) # Plain functions. Sync functions run in a worker thread, so the ORM works. @mcp.tool(scopes=["orders:read"]) def count_open_orders() -> int: """Count the caller's open orders.""" return Order.objects.filter(owner=get_identity().user, status="open").count() ``` ```python # settings.py NINJA_MCP_SERVER = "myproject.mcp.mcp" ``` An operation must allow MCP calls in its `auth`: ```python from ninja.security import django_auth from ninja_mcp import MCPAuth @api.get("/orders", resp…
Mapped onto the structured taxonomy from declared text and observed tool names. Confidence shown for derived entries.
Every source is kept verbatim. Field changes are logged as events.