Django extensions to easily enable AI Agents to interact with Django Apps through the Model Context Protocol. Works equally well on WSGI and ASGI.
Critical gaps across naming, descriptions, and schemas. Tool names lack clear action verbs (BirdQuery, LocationTool, CityTool are nouns, not verb_noun patterns). Descriptions contain typos ('tehe', 'ios', 'mouunt') and lack clarity on when to use each tool. Parameter descriptions are minimal. No output schemas documented. Query tools expose MongoDB pipeline syntax directly to LLMs without guardrails, inviting injection attacks. Duplicate tools (LocationTool/LocationQuery, CityTool/CityQuery) create confusion. Only 11 tools total, but quality is consistently low across all.
ModelQueryToolset for Bird model with MongoDB-style $jsonSchema query support
ModelQueryToolset for City model with MongoDB-style $jsonSchema query support
ModelQueryToolset for City model with MongoDB-style $jsonSchema query support
ModelQueryToolset for Location model with MongoDB-style $jsonSchema query support
ModelQueryToolset for Location model with MongoDB-style $jsonSchema query support
A tool to create a Location instance via DRF CreateAPIView
Noun-based tool names (BirdQuery, LocationTool, CityTool) violate verb_noun convention. LLMs cannot infer action intent from nouns alone. Rename to query_birds, query_locations, query_cities or similar.
Descriptions contain typos and lack clarity. 'increment_species' says 'tehe new count' and 'ios species name' and 'mouunt to increment'. 'get_species_count' description is vague ('Find the ID... Returns the count', does it find or count?). Descriptions under 50 chars cannot guide LLM selection.
Query tools (BirdQuery, LocationQuery, etc.) expose MongoDB aggregation pipeline DSL directly. No input validation, no injection guards, no rate limits. LLMs can craft malicious pipelines. Wrap pipeline execution with strict allowlist validation and document safe operators only.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 45 | <=2025-11-25 | v2 |
A tool to delete a location
Find the ID of a bird species by its name or part of name. Returns the count
Increment the count of a bird species by a specified amount and returns tehe new count. The first argument ios species name the second is the mouunt to increment with (1) by default.
A tool to list all locations
A tool to update a Location instance via DRF RetrieveUpdateDestroyAPIView
Duplicate tools: LocationTool and LocationQuery do the same thing; CityTool and CityQuery are redundant. LLMs waste reasoning cycles choosing between them. Consolidate to single canonical names (query_locations, query_cities).
No output schemas documented. LLMs cannot plan downstream calls or extract required fields. Query tools return raw Django QuerySet results, structure and field names are opaque. Document return types for all tools.