Atlas / MCP servers / frowningdev / Django ORM Lens

Django ORM LensBLOCK

mcp/frowningdev/django-orm-lens

Django ER diagrams, N+1 detection, schema drift & migration-risk linting — in VS Code, a CLI and an MCP server. Static analysis: no database, no django.setup(). Free & MIT.

Verdict
BLOCK
Grade
D
Trust score
69 /100
Exposed tools
13 13r · 0w · 0d
Transport
stdio
License
MIT
Stars
84
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

English · Русский · Español · 中文

ER diagrams, N+1 detection and migration-risk checks for Django — without booting it.

Your entire model graph — live in your editor sidebar, gating your CI, and answering your AI agent over MCP. All from static parsing: no database, no runserver, no working venv.

Replaces: graph_models + django-schema-graph + hand-drawn ER diagrams + grep archaeology.

[](https://pypi.org/project/django-orm-lens/) [](https://pypi.org/project/django-orm-lens/) [](https://pypi.org/project/django-orm-lens/) [](https://github.com/FROWNINGdev/django-orm-lens/actions/workflows/ci.yml) [](https://pepy.tech/project/django-orm-lens) [](LICENSE)

[![Install on VS Code](https://img.shields.io/badge/VS_Code-Install-0c4b33?style=for-the-ba

Read from source at commit 7b762f7139c7OBSERVED · 2026-10-08
Advertisement
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control.

claude-code (pypi)
claude mcp add django-orm-lens -- uvx django-orm-lens==1.13.1 django-orm-lens-mcp
03

Exposed tools (13)

13 read · 0 write · 0 destructive.

ToolRiskDescription
blast_radiusreadreturn handler(
cascade_previewreadreturn handler(
describe_migration_dependencyreadreturn handler(
describe_modelreadreturn handler({
driftreadreturn handler({
er_diagramreadreturn handler(
find_relationsreadreturn handler({
impactreadreturn handler({
list_appsreadreturn handler({
list_modelsreadargs: dict[str, Any] = {
nplusone_scanreadreturn handler({
signal_graphreadreturn handler({
suggest_indexesreadreturn handler(
04

Trust audit

BLOCKgrade D · trust 69/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeFAIL
L2Instruction surface (what it tells the agent)FAIL
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
none-observed
Network
declared (2 observation(s))
Shell
none-observed
Dependencies
not all pinned
Secrets in source
none-found

Findings (14)

CRITICALObfuscation / stealth · obf.decode_then_exec · CWE-506, CWE-94
scripts/fetch_golden_fixtures.py:86
b64decode( ... subprocess.
Why it matters. decodes a payload and executes it
HIGHPrompt injection · prompt.zero_width · CWE-94, CWE-1427
CHANGELOG.md:1235
- **UTF-8 BOM (`U+FEFF`) at the start of a models.py file no longer eats the whole class.** Windows editors — Notepad, older Sublime, VS Code with certain encoding settings — save files with a byte-or
Why it matters. invisible characters in instruction text
Fix. strip non-printing characters
MEDIUMObfuscation / stealth · obf.zero_width · CWE-506, CWE-94
cli/django_orm_lens/parser.py:456
if content.startswith(""):
LOWInventory / provenance · inv.hidden_file · CWE-1104
.pre-commit-hooks.yaml
.pre-commit-hooks.yaml
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
.vscodeignore
.vscodeignore
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.suspicious_name · CWE-1104
test/export-payload.test.js
export-payload.test.js
Why it matters. member named after an attack tool
Fix. remove or justify
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
test/rules/datetime.test.js:11
const { datetimeRules } = require('../../out/rules/datetime');
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
test/rules/fixers.test.js:11
const { ALL_FIXERS, findFixersForCode } = require('../../out/rules/fixers');
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
test/rules/forms.test.js:11
const { formsRules } = require('../../out/rules/forms');
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
test/rules/models.test.js:11
const { modelRules } = require('../../out/rules/models');
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
test/rules/n-plus-one.test.js:14
const { querysetRules } = require('../../out/rules/queryset');
LOWObfuscation / stealth · obf.decode_call · CWE-506, CWE-94
scripts/fetch_golden_fixtures.py:86
return base64.b64decode(payload["content"])
LOWObfuscation / stealth · obf.zero_width · CWE-506, CWE-94
cli/tests/test_bom_prefix.py:15
BOM = ""
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
package.json
@xyflow/react, elkjs, html-to-image, react, react-dom, @types/node, @types/react, @types/react-dom
Why it matters. 13 dependency range(s) float
Fix. pin exact versions or ship a lockfile

Gates applied: critical_finding, no_behavioural_pass.

Audited 2026-10-08 · audit v0.4.1 · source sha 7b762f7139c7full audit observations/trust-audit/mcp-server/frowningdev__django-orm-lens.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-087b762f7139c7BLOCKD69first audit
06

Questions

What is the Django ORM Lens MCP server?

Django ER diagrams, N+1 detection, schema drift & migration-risk linting — in VS Code, a CLI and an MCP server. Static analysis: no database, no django.setup(). Free & MIT.

What tools does Django ORM Lens expose?

13 in total: 13 read-only, 0 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.

Is Django ORM Lens safe to connect to an agent?

No — not without reading the findings first. The audit graded it D (69/100) and found 2 critical or high issues in the source. Each one is listed on this page with the file and line it is on.

What credentials does Django ORM Lens need?

No credential environment variables were found in its source, so it appears to need none.

How does Django ORM Lens run?

It speaks stdio, so it runs as a local process your client starts. It is published on npm as django-orm-lens at 0.19.3.

How current is this page?

The grade is for one exact copy of the source (7b762f7139c7), read on 2026-10-08. The repository is watched and re-audited when it changes.

Advertisement