odoogen
Generates and validates Odoo 19 modules with Python models, XML views, OWL components, and manifests, enforcing enterprise-grade code conventions.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@odoogenGenerate an Odoo model with fields for a meeting"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
odoogen — MCP Server for Odoo 19 AI Code Generation
odoogen is a specialized MCP (Model Context Protocol) server that turns Cursor, Claude Code, or any MCP-compatible AI agent into an elite Odoo 19 developer. It enforces enterprise-grade code conventions across Python models, XML views, OWL components, and module manifests — eliminating the "AI hallucination tax" that plagues generic code generators.
Why odoogen?
Generic AI code generators produce Odoo code that:
❌ Uses deprecated
@api.multior_columns = {}❌ Generates XML
<xpath>tags without requiredexprorposition❌ Builds OWL components without
static templateor proper registry patterns❌ Creates
__manifest__.pyfiles missing critical keys likelicense,installable, orapplication❌ Introduces jQuery in an OWL world
odoogen fixes all of this with 9 specialized tools and 22 validation rules.
Related MCP server: Odoo Dev MCP Server
Features
9 Tools — Full Coverage from Model to Frontend
Tool | What It Generates | File Type |
| Python model with fields, inherits, computed methods |
|
| XML views (form, tree, kanban, search, activity) |
|
| Action window + menu item |
|
| OWL 19 component with canvas rendering support |
|
| QWeb template matching the OWL component |
|
| SCSS styles for the component |
|
| Registry wrapper to register the component |
|
| Client action + menu item for the component |
|
| Linter — 22 rules across Python, XML, manifest, JS | All |
22 Validation Rules (OD001–OD055)
Code | Severity | Rule |
OD001 | warning | Missing |
OD002 | error | Deprecated |
OD003 | warning | Raw domain instead of tuple syntax |
OD011 | error |
|
OD012 | error |
|
OD013 | error | Unclosed |
OD031 | error | Manifest missing |
OD032 | error | Deprecated |
OD033 | warning | Manifest missing |
OD034 | warning | Manifest missing |
OD035 | info | Manifest missing |
OD036 | error | Manifest uses |
OD038 | warning | Float used for time without explicit digits |
OD039 | warning | Tree view missing |
OD040 | info | Form view needs |
OD041 | warning | Deprecated widget detected |
OD051 | warning | OWL component not PascalCase |
OD052 | error | OWL class doesn't extend Component |
OD053 | info | OWL component missing |
OD054 | warning | jQuery usage detected |
OD055 | error | OWL component missing |
Architecture
odoogen/
├── src/
│ ├── server.py # FastMCP app with stdio/SSE/HTTP transport
│ ├── tools/
│ │ ├── model_templates.py # Model + View + Action generators
│ │ └── owl_templates.py # OWL JS + XML template + SCSS generators
│ └── rules/
│ └── validators.py # 22-rule linter engine (OD001-OD055)
├── tests/
│ ├── run_all.py # Test runner (no pytest needed)
│ ├── test_model_templates.py
│ ├── test_owl.py
│ └── test_validators.py
├── Dockerfile # Python 3.12 slim
├── docker-compose.yml # Standalone + Odoo 19 integration mode
└── entrypoint.sh # Multi-transport launcherQuick Start
1. Pull & Run with Docker
docker pull foxpink/odoogen:latest
# stdio mode (for Cursor / Claude Code)
docker run -i --rm foxpink/odoogen:latest
# SSE mode (for remote access)
docker run -d --name odoogen -p 8000:8000 \
-e ODOO_MCP_TRANSPORT=sse \
foxpink/odoogen:latest2. Configure in Cursor / Claude Code
Add to your MCP settings (~/.config/Claude/claude_desktop_config.json or Cursor → Settings → MCP):
{
"mcpServers": {
"odoogen": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-v",
"${workspaceRoot}:/workspace",
"foxpink/odoogen:latest"
]
}
}
}Maps your project directory to
/workspaceinside the container — odoogen writes generated files directly to your Odoo addons folder.
3. One-Click Dev Loop
Open Cursor/Claude Code with the MCP server connected and run:
Generate a complete Odoo 19 module 'custom_addons/shipment_tracker'
with model, form view, action menu, and OWL dashboard component.
Validate all code using odoogen tools before writing files.Integration with Odoo 19
Standalone Mode
docker compose up -dMerge with Existing Odoo 19 Instance
docker compose -f odoogen/docker-compose.yml -f odoo-dev/docker-compose.yml up -dThe shared volume ../odoo-dev/addons:/workspace/custom_addons means:
AI generates code into the addons folder
Odoo auto-detects changes (
--dev reload)Zero latency dev loop
Example Output
After running the full dev loop, a generated module looks like:
live_warehouse_map/
├── __manifest__.py # 10 keys + asset declarations
├── models/
│ └── stock_picking.py # Inherited model with 4 coordinate fields
├── security/
│ └── ir.model.access.csv
├── static/src/
│ ├── js/
│ │ ├── live_warehouse_map.js # OWL canvas component
│ │ └── live_warehouse_map_wrapper.js
│ ├── scss/
│ │ └── live_warehouse_map.scss # Enterprise dark theme
│ └── xml/
│ └── live_warehouse_map.xml # QWeb template
└── views/
├── stock_picking_views.xml # Form + kanban + action
└── live_warehouse_map_action.xml # Client action + menuDevelopment
# Clone
git clone https://github.com/FoxPink/odoogen && cd odoogen
# Run tests
docker build -t odoogen:latest .
docker run --rm --entrypoint python odoogen:latest /app/tests/run_all.py
# Expected output: 18/18 passedLicense
Commercial license required for production use. Contact FoxPink for licensing.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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/FoxPink-dev/odoogen'
If you have feedback or need assistance with the MCP directory API, please join our Discord server