django-orm-lens
This server provides read-only static analysis of a Django project's ORM schema without needing to boot Django or connect to a database.
list_apps— List every Django app in the workspace along with the number of models each contains.list_models— Retrieve a flatapp.Modellist across the entire workspace, with an optional filter to scope results to a specific app.describe_model— Get full details for a single model, including its fields, relations, Meta options, base classes, and file path.find_relations— Discover both outbound (this model → others) and inbound (others → this model) relationships for a given model.er_diagram— Generate a Mermaid entity-relationship diagram covering the entire workspace, including cardinality arrows forForeignKey,OneToOneField, andManyToManyFieldrelationships.
Provides tools to inspect Django project models, fields, and relationships, enabling AI agents to navigate and understand the Django ORM schema without needing a running Django server.
Django ORM Lens
See your entire Django schema — in your editor, in your terminal, and from your AI agent.
Every app. Every model. Every field. Every relationship. Grouped, navigable, and one keystroke away from a live ER diagram.
🎯 Pick your path
Django ORM Lens ships as three distributions on one core — pick the one that matches your workflow. Each takes under 60 seconds.
Editor user (VS Code / Cursor / Windsurf): install the extension → open any Django project → sidebar tree + ER diagram appear.
code --install-extension frowningdev.django-orm-lensTerminal / CI user: install from PyPI → run django-orm-lens in any directory that contains Django apps.
pip install django-orm-lens
django-orm-lens # welcome + commands
django-orm-lens scan # scan cwd for apps and modelsAI coding agent user (Cursor / Aider / Continue / Zed): install with MCP extras → add one JSON block to your client config.
pip install "django-orm-lens[mcp]"Then the MCP config snippet in the Integrations section below. Point DJANGO_ORM_LENS_ROOT at your Django project's absolute path.
Related MCP server: django-mcp-inspector
📊 Traction
Updated 2026-07-15. PyPI weekly / monthly, GitHub stars / forks, and PyPI / VS Code version badges auto-refresh live.
If the tool saves you a
grepnext time you touch a strange Django project — star helps others find it.
⚡ Install
VS Code / Cursor / Windsurf / any Code fork:
code --install-extension frowningdev.django-orm-lensOr search Django ORM Lens in the Extensions view.
Terminal & AI coding agents:
pip install django-orm-lens # CLI only
pip install "django-orm-lens[mcp]" # + MCP server for AI agentsRequires Python 3.9+. Zero runtime dependencies for the CLI.
🎯 The problem
Works offline. Works on a broken venv. Works on someone else's laptop. Works in CI.
You open a Django project. It has 20 apps. You need to answer a simple question:
"Which app owns the
Ordermodel, and how is it connected toUser?"
Today, that means: Ctrl+P, "models", scroll through 30 hits, open five files, Ctrl+F for class Order, read through 400 lines of ForeignKey('otherapp.Something') strings, try to remember what you learned two files ago.
Half a day gone. Every time. On every project.
✨ With Django ORM Lens
📚 A tree of everything
Every app → every model → every field → every Meta option. Grouped by application, sorted alphabetically, expandable.
Icons distinguish CharField from ForeignKey from ManyToManyField at a glance.
🕸️ A live ER diagram
One command opens a Mermaid entity-relationship diagram of your entire schema. Watch it redraw as you edit. Export to SVG.
ForeignKey, OneToOneField, and ManyToManyField become proper cardinality arrows.
🔎 Hover for relations
Hover over ForeignKey('app.Model') in any Python file → a card pops up with the target model's fields, relations, and a "Jump to" link. No Ctrl+F, no file dialog.
🧭 Jump-to-definition
Click any field in the tree → cursor lands on the exact line. Filter the tree by app or model name. Split models/ packages are fully supported.
⚡ Zero configuration
No DJANGO_SETTINGS_MODULE. No runserver. Parses models.py statically. Works with a broken venv, a missing dependency, or on someone else's laptop.
🎨 Native VS Code UI
Dark theme. Light theme. Your theme. Follows your icon theme, your font, your key bindings. Nothing garish, nothing branded.
📸 What it looks like
Also included in the extension:
🕸️ Live ER diagram — Mermaid cardinality arrows, edge labels (
CASCADE,through Model,as related_name), theme-aware, one-click SVG export🔎 Hover cards — over any
ForeignKey('app.Model')orManyToManyField(...), with a one-click jump link🧭 CodeLens — above every
class Modelline: field count, relation count, and an Open ER diagram action🎨 Named themes —
auto/default/dark/forest/neutralfor the diagram webview
🤖 For terminals and AI coding agents
The same parser that powers the VS Code extension ships as a standalone Python package — with an optional MCP (Model Context Protocol) server so any MCP-compatible AI agent can navigate your Django schema without importing Django or booting your app.
CLI
django-orm-lens scan -f json # every app, every model, every field
django-orm-lens describe blog.Post # one model in Markdown
django-orm-lens hover blog.Post # compact hover card
django-orm-lens list | fzf # flat app.Model — pipes anywhere
django-orm-lens er > schema.mmd # Mermaid ER diagramEvery command accepts --path <dir> and --exclude <glob>.
MCP server
Register it once with your agent and it exposes five read-only tools:
Tool | Purpose |
| Every Django app in the workspace with model counts |
| Flat |
| Full field / relation / Meta detail for one model |
| Inbound + outbound relations for one model |
| Mermaid |
# Start it directly
django-orm-lens-mcp
# Or via the CLI subcommand
django-orm-lens mcpSet DJANGO_ORM_LENS_ROOT=/abs/path/to/project to point it anywhere.
🔌 Integrations
Client | How to enable | Status |
VS Code |
| ✅ |
Cursor | same VSIX + optional MCP entry in | ✅ |
Windsurf / VSCodium / any Code fork | install the VSIX from the Marketplace or GitHub Releases | ✅ |
Aider | add | ✅ (via MCP) |
Continue.dev | register the MCP server in | ✅ (via MCP) |
Zed | register the MCP server in Zed settings | ✅ (via MCP) |
Any MCP-compatible client | point | ✅ |
Discoverable via MCP Registry | official Model Context Protocol server directory | ✅ |
Plain terminal / CI |
| ✅ |
Example: Cursor / any MCP client
{
"mcpServers": {
"django-orm-lens": {
"command": "django-orm-lens-mcp",
"env": { "DJANGO_ORM_LENS_ROOT": "/abs/path/to/your/project" }
}
}
}🚀 Get started (30 seconds)
In VS Code:
code --install-extension frowningdev.django-orm-lensOpen a folder with a
manage.pyormodels.pyClick the Django ORM Lens icon in the activity bar
Expand apps → models → fields
Click the type-hierarchy icon at the top of the panel → ER diagram opens beside your code
In a terminal:
pip install django-orm-lens
cd my-django-project
django-orm-lens scan -f tableAs an AI agent tool:
pip install "django-orm-lens[mcp]"…then register django-orm-lens-mcp in your agent's MCP config (see the Integrations table above).
No settings screen. No sign-in. No telemetry.
🎯 Who this is for
Django developers joining a codebase with 10+ apps and getting lost in
models.pysprawl.Contract / freelance engineers who need to grasp an unfamiliar Django project in the first hour, not the first week.
Teams onboarding new hires who want a one-glance schema view without spinning up documentation infrastructure.
AI-agent power users (Cursor / Aider / Zed / Continue / any MCP-compatible client) who need the agent to answer schema questions accurately — without giving it database credentials or booting Django.
CI pipelines that verify schema shape (e.g. "did we accidentally break a
related_name?") without importing the project.Solo indie devs on a broken venv or someone else's laptop — no
runserver, nomanage.py migrate, still works.
🗺️ Market position
Django ORM Lens sits at the intersection of editor tooling and AI-agent tooling — a slot no existing package covers:
Segment | Existing option | What it costs you |
Boot-and-graph |
| Requires Graphviz + Django settings + a working DB URL |
Web-based viewer |
| Requires a running Django server; hosts one more thing to break |
Admin panel | Django Admin | Requires runserver + auth + database — great for data, not for architecture |
Editor plugin | PyCharm's Django Structure | Locked to PyCharm; no CLI, no AI-agent story |
MCP server | (none until now) | AI agents guess your schema from source, imperfectly |
Django ORM Lens is the only tool that ships three surfaces from one parser: a VS Code extension (any Code fork), a zero-dep CLI (terminals + CI), and an MCP server (AI agents). All static. All free. All MIT.
🤔 How is this different?
Django ORM Lens |
|
| Django Admin | PyCharm Django Structure | |
Works without a bootable Django project | ✅ | ❌ | ❌ | ❌ | ⚠️ |
Zero-install (no graphviz, no server) | ✅ | ❌ | ❌ | ❌ | ❌ (needs PyCharm) |
Works in VS Code / Cursor / any Code fork | ✅ | ❌ | ❌ | ❌ | ❌ |
Sidebar tree inside the editor | ✅ | ❌ | ❌ | ❌ | ✅ |
Live ER diagram | ✅ | ✅ | ✅ | ❌ | ❌ |
Hover cards on | ✅ | ❌ | ❌ | ❌ | ⚠️ |
CodeLens on model classes | ✅ | ❌ | ❌ | ❌ | ❌ |
Split | ✅ | ⚠️ | ⚠️ | ✅ | ✅ |
CLI for terminal / CI | ✅ | ⚠️ | ❌ | ❌ | ❌ |
MCP server for AI agents | ✅ | ❌ | ❌ | ❌ | ❌ |
Discoverable in the MCP Registry | ✅ | ❌ | ❌ | ❌ | ❌ |
Free & open-source (MIT) | ✅ | ✅ | ✅ | ✅ | ❌ (paid IDE) |
Django version support | 4.0 – 5.2 | latest | 3.2 – 4.1 (stale since 2023) | latest | latest |
django-schema-graphhas not been updated since 2023-05 and does not test Django 5.x.
⚙️ Configuration
The defaults are opinionated and sensible. If you need to tweak:
// .vscode/settings.json
{
"djangoOrmLens.excludeGlobs": [
"**/migrations/**",
"**/node_modules/**",
"**/venv/**",
"**/.venv/**",
"**/env/**"
],
"djangoOrmLens.autoRefresh": true
}Setting | Type | Default | What it does |
|
| See above | Glob patterns to skip when scanning |
|
|
| Rescan on |
🧭 Commands
Open the command palette (Ctrl+Shift+P / Cmd+Shift+P) and type "Django ORM Lens":
Command | What it does |
| Force-rescan the workspace |
| Open the Mermaid ER diagram side-by-side |
| Filter the tree by app / model / field name |
| Restore the full tree |
| Programmatic — triggered by tree clicks and hover cards |
🗺️ Roadmap
Shipped
Sidebar tree grouped by app
Live Mermaid ER diagram
Hover cards over
ForeignKey('app.Model')Filter tree by name
Split
models/package supportExport ER diagram as SVG
Python CLI + MCP server for terminals and AI agents
Welcome view for empty workspaces
Path-safe jump-to-definition and sanitized hover markdown
v0.3.0 — CodeLens above each model class (
N fields · N relations · Open ER diagram)v0.3.0 — Edge labels on the diagram (
CASCADE,SET_NULL,PROTECT,related_name)v0.3.0 — Named color themes (
auto/default/dark/forest/neutral)v0.3.1 —
through_modelon M2M edges (contributed by @kingrubic)v0.3.1 — Listed in the official MCP Registry + Glama.ai
Next
Zoom + minimap + auto-layout inside the webview (#4)
ORM query autocomplete inside
.filter()/.exclude()/.annotate()(#3)App / model toggle checkboxes to declutter huge schemas
Later
Migration dependency graph
Third-party field support (
django-mptt,django-taggit,django-model-utils)JetBrains / PyCharm plugin (if there is demand)
Vote by 👍-ing the corresponding issue.
❓ FAQ
🆘 Support
🐛 Bug reports — GitHub Issues (please include a minimal
models.pysnippet)💡 Feature requests / ideas — GitHub Discussions
📝 Marketplace reviews — rate the extension (the fastest signal that keeps this project moving)
🐍 PyPI page — pypi.org/project/django-orm-lens
💚 Sponsor — github.com/sponsors/FROWNINGdev
📜 License
MIT © FROWNINGdev
Made for developers who care about their codebase.
Marketplace · PyPI · GitHub · Issues · Discussions · Sponsor
Maintenance
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/FROWNINGdev/django-orm-lens'
If you have feedback or need assistance with the MCP directory API, please join our Discord server