Skip to main content

Static analysis + MCP server for Django models. Sidebar tree, ER diagrams, and JSON output for terminals and AI coding agents.

Project description

django-orm-lens

Static analysis + MCP server for Django models. Terminal- and AI-agent-friendly.

Listed in the official MCP Registry as io.github.FROWNINGdev/django-orm-lens.

Ships with a zero-dependency parser, a JSON/Markdown/table CLI, and an optional MCP (Model Context Protocol) server so any AI coding agent — Cursor, Aider, Continue, and any other MCP client — can navigate your Django schema without importing Django or spinning up your app.

Companion to the Django ORM Lens VS Code extension.


Install

# Core CLI (zero third-party deps)
pip install django-orm-lens

# With the MCP server (adds the `mcp` package)
pip install "django-orm-lens[mcp]"

Requires Python 3.9+. Works on Linux, macOS, and Windows.


CLI usage

# Scan a Django project for models (JSON, Markdown, or table)
django-orm-lens scan -f json
django-orm-lens scan -f markdown
django-orm-lens scan -f table

# Describe one model
django-orm-lens describe blog.Post
django-orm-lens describe Post -f json

# Compact hover card (great for pipeing into your editor)
django-orm-lens hover blog.Post

# Flat list — pipes into fzf, grep, etc.
django-orm-lens list | fzf

# Emit a Mermaid ER diagram
django-orm-lens er > schema.mmd
django-orm-lens er -o schema.mmd

Every command accepts --path <dir> and repeatable --exclude <glob>. Defaults skip migrations/, venv/, .venv/, env/, and node_modules/.


MCP server — for AI coding agents

The MCP server exposes five read-only tools that any MCP-compatible agent can call while it edits your Django project:

Tool Purpose
list_apps Every Django app in the workspace with model counts
list_models Flat app.Model list, optional app filter
describe_model Full field / relation / Meta detail for one model
find_relations Inbound + outbound relations for one model
er_diagram Mermaid erDiagram string for the whole workspace

Start the server manually

django-orm-lens-mcp     # dedicated entry point
# or
django-orm-lens mcp     # subcommand

By default the server scans the current working directory. Override with DJANGO_ORM_LENS_ROOT=/abs/path/to/project.

Register it with an agent

Cursor — add to ~/.cursor/mcp.json:

{
  "mcpServers": {
    "django-orm-lens": {
      "command": "django-orm-lens-mcp",
      "env": { "DJANGO_ORM_LENS_ROOT": "/abs/path/to/your/project" }
    }
  }
}

Aider / Continue.dev / Zed / any MCP client — same shape, the tool is generic. Point command at the installed django-orm-lens-mcp binary and set the workspace root via env.


Why?

Django's ORM is Python, and Python is dynamic. AI agents that only see models.py as raw text miss:

  • which fields belong to which model;
  • the direction and cardinality of every relation;
  • what Meta.ordering, unique_together, and constraints actually contain;
  • which app owns which model when the project uses split models/ packages.

django-orm-lens gives them a static, deterministic, JSON view of the schema — no Django boot, no database, no side effects. And you get a nice CLI for humans too.


Programmatic API

from django_orm_lens import scan_workspace

index = scan_workspace(".")
for app in index.apps:
    for model in app.models:
        print(f"{app.name}.{model.name}{len(model.fields)} fields")

# The full parsed tree serialises to the same JSON schema the VS Code
# extension emits, so tools can share it interchangeably.
import json
json.dumps(index.to_dict(), indent=2)

Links

MIT licensed.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django_orm_lens-1.0.17.tar.gz (36.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_orm_lens-1.0.17-py3-none-any.whl (31.7 kB view details)

Uploaded Python 3

File details

Details for the file django_orm_lens-1.0.17.tar.gz.

File metadata

  • Download URL: django_orm_lens-1.0.17.tar.gz
  • Upload date:
  • Size: 36.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for django_orm_lens-1.0.17.tar.gz
Algorithm Hash digest
SHA256 96ac35d28f3e29ba164d2b8398d71471c566fe0d88e13c00e9fe5e0fa2e8486d
MD5 debb803931f545a9b1aa480e2f5b09ad
BLAKE2b-256 dacbe21aa9acbf37a1bf33d410b6cf81f0adf9be6278ed3e6e41adb709f498d8

See more details on using hashes here.

File details

Details for the file django_orm_lens-1.0.17-py3-none-any.whl.

File metadata

File hashes

Hashes for django_orm_lens-1.0.17-py3-none-any.whl
Algorithm Hash digest
SHA256 b832f16d636b10f23e0a72636624f33861a51be1c0acaa1e1ea6d57d7ad56deb
MD5 1c887beff8fd01e3ce9090c03da9c963
BLAKE2b-256 a84ea066adc6a882261e776fd3d795754aeda5569589cdb9af3b4ee88d35a126

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page