Skip to main content
Glama
makelele29
by makelele29

πŸ›‘οΈ Odoo Safe MCP β€” The AI Firewall for Odoo ERP

Connect AI Agents (Claude Desktop, Cursor, n8n, LangChain) to Odoo ERP (v14 to v19+) without risking accounting disasters, accidental record deletions (unlink), or unauthorized invoice validations (action_post).

PyPI version Odoo Compatibility License: MIT


⚠️ Why you should NEVER connect a raw MCP server to Odoo

Odoo's native permissions were designed for humans, not LLMs. If you give an AI agent an API key for a standard sales or accounting user so it can read data or draft quotes, that same key can execute unlink (delete records) or action_post (legally post invoices to tax authorities).

One LLM hallucination can corrupt your account.move ledger or wipe out res.partner records. Odoo Safe MCP acts as a deterministic firewall between your AI agent and Odoo's JSON-RPC/XML-RPC API.


Related MCP server: Odoo MCP Server

🚦 How the Security Traffic Light Works

Risk Level

Odoo Methods

Action Taken

Tier

🟒 GREEN (Safe Read)

search, read, search_read, fields_get, read_group, name_search, name_get, search_count, default_get

Instant execution via local JSON-RPC.

Free (Open Source)

🟑 YELLOW (Guarded Drafts)

create on crm.lead, sale.order, purchase.order

Enforces state='draft' and injects an AI audit note into the Odoo Chatter (message_post).

Pro Guard

πŸ”΄ RED (Critical / Destructive)

unlink (any model), action_post, action_confirm, button_validate, write on account.move

Pauses execution. Sends an interactive Approve / Reject button to Slack or MS Teams.

Pro Guard

β›” BLACKLIST (Zero-Day Protection)

Mutations on res.users, res.groups, ir.rule, ir.model.access

Blocked unconditionally (even with Pro). Prevents privilege escalation.

Hard Block


πŸš€ Quickstart (2 Minutes)

1. Install via pip or run directly with uvx

pip install "odoo-safe-mcp==2.0.0"

2. Add to your Claude Desktop or Cursor configuration

Edit your claude_desktop_config.json (or .cursor/mcp.json):

{
  "mcpServers": {
    "odoo-erp": {
      "command": "uvx",
      "args": ["odoo-safe-mcp@2.0.0"],
      "env": {
        "ODOO_URL": "https://your-company.odoo.com",
        "ODOO_DB": "your-database-name",
        "ODOO_USERNAME": "ai-bot@your-company.com",
        "ODOO_API_KEY": "your_odoo_user_api_key",
        "ODOO_DRY_RUN": "false",
        "ODOO_SAFE_GUARD_KEY": "optional_pro_license_key_for_write_access"
      }
    }
  }
}

⚠️ Production Best Practice (Version Pinning): Always pin the exact version in uvx (odoo-safe-mcp@2.0.0). Running unpinned uvx odoo-safe-mcp downloads upstream changes on every launch, which could lead to breaking changes or unexpected behavior in automated production pipelines.

Note: Without ODOO_SAFE_GUARD_KEY, the server runs in Strict Read-Only Mode (🟒 Green Level). Set "ODOO_DRY_RUN": "true" to test and simulate YELLOW and RED policies locally with zero risk to your database.


πŸ”“ Unlock Guarded Write Access, AI Defender & Slack Approvals (Pro & Partner Tiers)

Need your agents to create draft quotes, prepare vendor bills, audit payloads with Llama 3 8B AI Defender, or request atomic human approval on Slack before posting invoices?

Plan

Price

Databases

Key Features

Community

€0 / forever

1 Local DB

Strict Read-Only Mode (🟒 Green), Zero-Risk Dry-Run Simulation (ODOO_DRY_RUN=true), Credential Sanitization

Pro Guard

€49 / month

Up to 5 DBs

Guarded Drafts (🟑 Yellow), Slack Interactive Approvals (πŸ”΄ Red), D1 Audit Log, Llama 3 8B AI Defender Included

Partner Agency

€149 / month

Up to 25 DBs

Multi-tenant Agency Isolation, Custom Slack Signing Secret, MS Teams Alerts, Llama 3 AI Defender

  1. Get your License Key at odoosafemcp.stream/#pricing.

  2. Connect your Slack webhook in 1 click via the Cloudflare D1 Activation Portal.

  3. Add ODOO_SAFE_GUARD_KEY to your environment variables.


πŸ“„ License & Terms of Service

Distributed under the MIT License β€” Free forever for read-only local execution and Dry-Run simulation.

Limitation of Liability, GDPR Privacy & Trademark Disclaimer

IMPORTANT NOTICE: odoo-safe-mcp and its associated Enterprise Guard backend are provided on an "AS IS" and "AS AVAILABLE" basis without warranties of any kind, either express or implied, including but not limited to implied warranties of merchantability, fitness for a particular purpose, and non-infringement.

  1. Auxiliary Control Layer & Human-in-the-Loop Responsibility: This software operates strictly as an auxiliary deterministic filter and does not replace native database security, accounting audits, or operational vigilance. The human supervisor who clicks "Approve" in Slack or Microsoft Teams is the sole legal and accounting authorizer of the resulting ERP mutation.

  2. Customer Responsibilities: The user and customer retain sole and exclusive responsibility for configuring least-privilege permissions on the Odoo user account linked to ODOO_API_KEY, monitoring AI agent behavior, and maintaining independent, verified daily database backups.

  3. Liability Cap: To the maximum extent permitted by applicable law, the cumulative aggregate liability of the authors, contributors, and operators for any direct, indirect, incidental, special, or consequential damages (including data loss, accounting discrepancy, lost revenue, or business interruption) shall be strictly capped at the total fee actually paid by the customer for the software during the one (1) month immediately preceding the event giving rise to liability (maximum €49 for Pro Guard, €149 for Partner Agency, or €0 for Community Tier).

  4. GDPR / RGPD Zero-Data-Retention Architecture: Read-only (GREEN) queries execute locally on the user's machine and never transit through the Enterprise Guard cloud. Paused (RED) payloads are encrypted in transit and at rest using AES-GCM-256 and are purged immediately (PURGED_AFTER_RESOLUTION) upon approval, rejection, or 24-hour TTL expiration. Audit logs store only cryptographic SHA-256 payload hashes and technical metadata.

  5. Trademark & Non-Affiliation Disclaimer: This project is an independent software product and is not affiliated with, sponsored by, or endorsed by Odoo S.A. Odoo is a registered trademark of Odoo S.A. Slack is a registered trademark of Slack Technologies, LLC. Microsoft Teams is a registered trademark of Microsoft Corporation.

Available Tools

1 tool
odoo_execute_kwB

Safely execute an Odoo ORM method (execute_kw) via deterministic firewall rules.

Args: model: Odoo technical model name (e.g. 'sale.order', 'res.partner', 'account.move'). method: ORM method name (e.g. 'search_read', 'read', 'create', 'unlink', 'action_post'). args: Positional arguments (e.g. search domains, list of record IDs, or record dictionaries). kwargs: Keyword arguments (e.g. {'fields': ['name', 'amount_total'], 'limit': 10}).

Returns: JSON string or formatted message with query results or human approval status.

ParametersJSON Schema
NameRequiredDescriptionDefault
argsNo
modelYes
kwargsNo
methodYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full behavioral burden and partially meets it by disclosing a firewall/policy layer and that responses can include 'human approval status' β€” meaningful for a tool that may mutate data. However it never states which methods are permitted or denied, what happens on rejection, permission requirements, or reversibility of create/unlink.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded one-line summary followed by clean Args/Returns sections. Every line carries information and there is no filler, though the Args examples are slightly repetitive in form.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need not be explained, and parameters are well covered. What remains thin is the behavioral envelope β€” allowed/blocked methods, approval triggers, and error behavior β€” which for a generic executor exposed to destructive verbs like 'unlink' leaves the agent guessing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does: all four parameters are documented with concrete examples (model names like 'sale.order', methods like 'search_read'/'unlink', positional search domains/IDs, and kwargs like {'fields': [...], 'limit': 10}). This adds real invocation guidance beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource: executing an Odoo ORM method (execute_kw) through a firewall layer. It is immediately clear this is a generic ORM gateway rather than a fixed operation. No sibling tools exist to differentiate against, but the purpose itself is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit guidance on when to use this tool versus other approaches, nor which methods are safe or which trigger human approval. 'Safely execute ... via deterministic firewall rules' hints at guardrails but never states when the tool applies or what conditions block it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool updatev2.0.0
    • First observedodoo_execute_kw

TDQS

A3.5/5.0

Scored across 1 tool

Disambiguation5/5

Only one tool is exposed, so there is no risk of confusing it with another tool. Its purposeβ€”generic Odoo ORM executionβ€”is broad but unambiguous within the set.

Naming Consistency5/5

Single snake_case name odoo_execute_kw with a server-related prefix; no competing conventions to create inconsistency. The name is clear, though generic.

Tool Count3/5

A single catch-all execute_kw tool is thinner than ideal for a broad Odoo domain; it works as a proxy but lacks granular operations. The count is borderline rather than clearly appropriate.

Completeness3/5

execute_kw can technically perform CRUD and actions, but the surface lacks discovery/introspection tools (e.g., list models, describe fields) needed for practical agent use. This is a notable gap.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables AI assistants to interact with Odoo ERP systems through natural language to search records, create entries, update data, and manage business operations. Supports secure authentication and configurable access controls for production environments.
    Mozilla Public 2.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    Bridges AI agents to Odoo ERP via MCP, enabling CRUD operations, model introspection, and report generation with secure API key and connection management through a web admin UI.
    4
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Enables AI agents to interact with Odoo ERP as the authenticated user, with tools for discovery, planning, and mutations bounded by user permissions.
    36
    27 npm
    2
    Apache 2.0
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to interact with Odoo ERP via the external API. It supports listing models, describing schemas, searching, aggregating, creating, updating, deleting records, and invoking business methods, with a configurable permission matrix for safety.
    -