Skip to main content

AI-First ERP Configuration Engine — MCP server for Odoo 18

Project description

🔨 OdooForge

AI-First ERP Configuration Engine — MCP Server for Odoo 18

Python 3.11+ MCP License: AGPL-3.0 Odoo 18

Give AI assistants complete control over Odoo 18 instances via Model Context Protocol.
71 tools. 16 categories. Zero clicking through menus.

Getting Started · Tool Reference · Architecture · Contributing


✨ What Can It Do?

"Start an Odoo instance and create a database called myshop"

"Install Sales, CRM, and Inventory modules"

"Add a custom loyalty tier field to res.partner as a selection"

"Create an automation that sends a welcome email for new contacts"

"Run the restaurant recipe to set up a full POS system"

"Show me the invoice report template and add a custom footer"

"Run a health check — are there any issues?"

OdooForge turns natural language into Odoo operations. It handles everything from spinning up Docker containers to modifying QWeb report templates.

🚀 Quick Start

1. Install

# Using pip
pip install odooforge

# Or run directly with uvx (no install needed)
uvx odooforge

2. Configure Your MCP Client

Add to your Claude Desktop or Cursor config:

{
  "mcpServers": {
    "odooforge": {
      "command": "uvx",
      "args": ["odooforge"]
    }
  }
}

3. Start Odoo

# Docker Compose included — Odoo 18 + PostgreSQL 17
docker compose -f docker/docker-compose.yml up -d

Create a .env file (see .env.example) or set environment variables:

ODOO_URL=http://localhost:8069
ODOO_DEFAULT_DB=odoo
ODOO_ADMIN_USER=admin
ODOO_ADMIN_PASSWORD=admin

That's it. Ask your AI assistant to run odoo_diagnostics_health_check to verify everything is connected.

🛠 71 Tools Across 16 Categories

Category # Tools Docs
Instance 5 start · stop · restart · status · logs
Database 6 create · list · backup · restore · drop · run_sql
Records 6 search · read · create · update · delete · execute
Snapshots 4 create · list · restore · delete
Modules 6 list_available · list_installed · info · install · upgrade · uninstall
Models 3 list · fields · search_field
Schema 5 field_create · field_update · field_delete · model_create · list_custom
Views 5 list · get_arch · modify · reset · list_customizations
Reports 6 list · get_template · modify · preview · reset · layout_configure
Automation 5 list · create · update · delete · email_template_create
Network 3 expose · status · stop
Import 3 preview · execute · template
Email 4 configure_outgoing · configure_incoming · test · dns_guide
Settings 4 settings_get · settings_set · company_configure · users_manage
Knowledge 3 module_info · search · community_gaps
Recipes 2 list · execute
Diagnostics 1 health_check

📖 Full Tool Reference →

🍳 Industry Recipes

One-command setup for common business types:

Recipe Modules What It Sets Up
🍕 Restaurant POS, Kitchen, Inventory, HR Table management, kitchen printing, food categories
🛒 eCommerce Website, Payments, Delivery, CRM Online shop, cart, checkout, wishlists
🏭 Manufacturing MRP, Quality, Maintenance Work centers, BoM, production planning
💼 Services Project, Timesheets, CRM, Sales Billable projects, task stages, invoicing
🏪 Retail POS, Inventory, Loyalty Barcode scanning, stock alerts, loyalty programs
"Run the restaurant recipe in dry-run mode first, then execute it"

🏗 Architecture

graph TB
    AI[AI Assistant<br/>Claude / Cursor / etc.] -->|MCP Protocol| MCP[OdooForge MCP Server<br/>71 tools registered]

    MCP --> Tools[Tool Layer]
    Tools --> Conn[Connection Layer]

    subgraph Tools[16 Tool Modules]
        direction LR
        T1[Records]
        T2[Modules]
        T3[Schema]
        T4[Views]
        T5[Reports]
        T6[+ 11 more]
    end

    subgraph Conn[Connections]
        direction LR
        RPC[XML-RPC Client<br/>Odoo API]
        Docker[Docker Client<br/>Container Mgmt]
        PG[PostgreSQL Client<br/>Direct SQL]
    end

    subgraph Utils[Utilities]
        direction LR
        Val[Validators]
        XPath[XPath Builder]
        QWeb[QWeb Builder]
        Cache[State Cache]
    end

    Tools --> Utils

    Conn --> Odoo[Odoo 18<br/>Docker Container]
    Conn --> DB[(PostgreSQL 17<br/>Docker Container)]

    style AI fill:#5A67D8,color:#fff
    style MCP fill:#714B67,color:#fff
    style Odoo fill:#714B67,color:#fff
    style DB fill:#336791,color:#fff
src/odooforge/
├── server.py                 # MCP server — all 71 tools registered
├── config.py                 # Environment configuration
├── connections/
│   ├── docker_client.py      # Docker Compose management
│   ├── xmlrpc_client.py      # Odoo XML-RPC interface
│   └── pg_client.py          # PostgreSQL direct connection
├── tools/                    # One file per tool category (16 files)
│   ├── records.py            # CRUD operations
│   ├── modules.py            # Module lifecycle
│   ├── schema.py             # Custom fields & models
│   ├── views.py              # View inheritance & XPath
│   ├── reports.py            # QWeb report templates
│   ├── automation.py         # Automated actions
│   └── ...
├── utils/                    # Shared utilities
│   ├── validators.py         # Input validation
│   ├── errors.py             # Custom error hierarchy
│   ├── xpath_builder.py      # XPath expression builder
│   ├── qweb_builder.py       # QWeb template helpers
│   └── response_formatter.py # Consistent response formatting
└── verification/             # Post-operation verification
    ├── state_cache.py        # Live model/field cache
    └── verify_*.py           # Category-specific verifiers

🔒 Safety Features

OdooForge is designed to be safe for AI-driven operations:

  • 🔄 Snapshots — Create backups before risky operations. Restore instantly.
  • ✅ Confirmation guards — Destructive actions (delete, drop, uninstall) require confirm=true.
  • 🏷 Namespace enforcement — Custom fields must start with x_, custom models with x_. No accidental core modifications.
  • 🔍 Post-operation verification — Module installs, field creation, and view modifications are verified after execution.
  • 👁 Dry-run modes — Recipes and imports can be previewed before execution.
  • 📋 Input validation — Model names, field names, SQL queries, and domains are validated before execution.

🧪 Development

# Clone and install
git clone https://github.com/hamzatrq/odoo-forge.git
cd odooforge
uv sync --group dev

# Run tests (212+ tests)
uv run pytest tests/ -v

# Run the server locally
uv run odooforge

See CONTRIBUTING.md for detailed development guidelines.

📚 Documentation

Document Description
Getting Started Installation, first run, connecting to MCP
Configuration Environment variables, Docker setup
Tool Reference All 71 tools with parameters and examples
Architecture System design and data flow
Industry Recipes Pre-built setup recipes
Contributing Development setup and guidelines
Changelog Version history

📄 License

AGPL-3.0 — use it however you want.

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

odooforge-0.1.4.tar.gz (105.4 kB view details)

Uploaded Source

Built Distribution

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

odooforge-0.1.4-py3-none-any.whl (83.8 kB view details)

Uploaded Python 3

File details

Details for the file odooforge-0.1.4.tar.gz.

File metadata

  • Download URL: odooforge-0.1.4.tar.gz
  • Upload date:
  • Size: 105.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for odooforge-0.1.4.tar.gz
Algorithm Hash digest
SHA256 74aca0aceaa9ecd927f9ab55d24be260cf1a532db8eea7e0e1a8b74f0c2603f8
MD5 0b7e7c46f32722b10c04b882db76312e
BLAKE2b-256 4293826e4c7c209db6ed2adee428e3739ae81311f93638f9649b2511d3da4013

See more details on using hashes here.

File details

Details for the file odooforge-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: odooforge-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 83.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for odooforge-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 5d33fa5e65baf4578cb19c3c3388a3066bb27784b854980c229f92ee7f40b267
MD5 be9cf6809b62823c0e7bc0d91616aa64
BLAKE2b-256 0fa297db20cc3c64517cc2e78c68193698d45febfc5c35fa4f30173ce80547d4

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