io.github.nicolasramos/odoo-mcp

Registre officiel Autres

MCP server for Odoo 18 with 38 business tools

Installation

Ajoutez ceci à la configuration MCP de votre client (Claude Desktop : claude_desktop_config.json ; Cursor : .cursor/mcp.json ; VS Code et les autres utilisent la même forme « mcpServers »).

PYPI package odoo-18-mcp-server
Claude Code
claude mcp add odoo-mcp -e 'ODOO_URL=<ODOO_URL>' -e 'ODOO_DB=<ODOO_DB>' -e 'ODOO_USERNAME=<ODOO_USERNAME>' -e 'ODOO_PASSWORD=<your odoo_password>' -e 'ODOO_MCP_DEFAULT_LIMIT=<ODOO_MCP_DEFAULT_LIMIT>' -e 'ODOO_MCP_MAX_LIMIT=<ODOO_MCP_MAX_LIMIT>' -- python odoo-18-mcp-server==1.0.1
Configuration JSON (Claude Desktop, Cursor, VS Code)
{
    "mcpServers": {
        "odoo-mcp": {
            "command": "python",
            "args": [
                "odoo-18-mcp-server==1.0.1"
            ],
            "env": {
                "ODOO_URL": "<ODOO_URL>",
                "ODOO_DB": "<ODOO_DB>",
                "ODOO_USERNAME": "<ODOO_USERNAME>",
                "ODOO_PASSWORD": "<your odoo_password>",
                "ODOO_MCP_DEFAULT_LIMIT": "<ODOO_MCP_DEFAULT_LIMIT>",
                "ODOO_MCP_MAX_LIMIT": "<ODOO_MCP_MAX_LIMIT>"
            }
        }
    }
}

Variables d'environnement

  • ODOO_URL obligatoire URL of your Odoo instance (e.g., https://yourcompany.odoo.com)
  • ODOO_DB obligatoire Name of your Odoo database
  • ODOO_USERNAME obligatoire Odoo username for authentication
  • ODOO_PASSWORD obligatoire secret Odoo password for authentication
  • ODOO_MCP_DEFAULT_LIMIT Default limit for search results (default: 50)
  • ODOO_MCP_MAX_LIMIT Maximum limit for search results (default: 80)

Documentation

Tirée du README du projet sur GitHub, actualisée chaque semaine. Les liens ouvrent GitHub.

Sommaire
  1. OdooClaw MCP
  2. Quick Start
  3. MCP Client Configuration (stdio)
  4. Scope
  5. Available Tools
  6. Available Resources
  7. Guardrails and Runtime Behavior
  8. Security Model
  9. Production Notes
  10. Known Limitations
  11. Development
  12. Docs
  13. License

OdooClaw MCP

Standalone MCP (Model Context Protocol) server for Odoo 18 over stdio.

MCP name: io.github.nicolasramos/odooclaw-mcp
PyPI package: odooclaw-mcp
Official CLI: odooclaw-mcp

Backward-compatible aliases are also installed:

  • odoo-mcp
  • odoo-mcp-server
  • odoo-18-mcp-server

Quick Start

1) Install
pip install odooclaw-mcp

From source:

git clone https://github.com/nicolasramos/odooclaw-mcp.git
cd odooclaw-mcp
pip install -e .
2) Configure environment
cp .env.example .env

Required:

ODOO_URL=https://yourcompany.odoo.com
ODOO_DB=your_database
ODOO_USERNAME=your_username
ODOO_PASSWORD=your_password

Optional:

ODOO_MCP_DEFAULT_LIMIT=50
ODOO_MCP_MAX_LIMIT=80
LOG_LEVEL=INFO
3) Validate and run
odooclaw-mcp --check-config
odooclaw-mcp

Alternative:

python -m odoo_mcp

MCP Client Configuration (stdio)

{
  "mcpServers": {
    "odoo": {
      "command": "odooclaw-mcp",
      "env": {
        "ODOO_URL": "https://yourcompany.odoo.com",
        "ODOO_DB": "your_database",
        "ODOO_USERNAME": "your_username",
        "ODOO_PASSWORD": "your_password",
        "ODOO_MCP_DEFAULT_LIMIT": "50",
        "ODOO_MCP_MAX_LIMIT": "80"
      }
    }
  }
}
Tool call payload contract

When calling tools through the MCP protocol, arguments must be wrapped in a top-level payload object.

Valid shape:

{
  "name": "odoo_search",
  "arguments": {
    "payload": {
      "model": "res.partner",
      "domain": [["customer_rank", ">", 0]],
      "limit": 3
    }
  }
}

If payload is omitted, validation fails with an error equivalent to Field required: payload.

Scope

  • 129 MCP tools for Odoo operations (CRUD + business actions + migration workflows)
  • Pydantic validation for all tool payloads
  • Odoo 18 compatibility helpers (customer_rank / supplier_rank / payment_state)
  • Security guards (model allowlist, denylisted fields, action guard, unlink blocked)
  • Structured logging and audit actions

Available Tools

The server currently exposes 129 MCP tools.

Note: the grouped tables below focus on common/high-value tools. Use MCP list_tools to inspect the full live tool catalog for your installed version.

Core record operations
ToolPurpose
odoo_searchSearch records in an allowed model using Odoo domain syntax.
odoo_readRead selected fields from specific record IDs.
odoo_search_readCombined search + read for efficient retrieval.
odoo_createCreate a new record in an allowed model.
odoo_writeUpdate existing records in an allowed model.
odoo_invoke_actionInvoke an Odoo model method such as action_* or button_*.
odoo_get_record_summaryReturn a compact, human-friendly summary for a record.
Partners, sales, and CRM
ToolPurpose
odoo_find_partnerFind a customer or vendor by name, VAT, or email.
odoo_get_partner_summaryGet a partner overview with useful business context.
odoo_find_sale_orderSearch sale orders by name, partner, or state.
odoo_get_sale_order_summaryRetrieve a sale order summary including lines.
odoo_create_sale_orderCreate a quotation / sale order with product lines.
odoo_confirm_sale_orderConfirm a quotation into a sale order.
odoo_create_leadCreate a CRM lead / opportunity.
Accounting, purchasing, and payments
ToolPurpose
odoo_create_purchase_orderCreate a purchase order from partner and line data.
odoo_create_vendor_invoiceCreate a vendor bill.
odoo_find_pending_invoicesFind posted invoices or bills pending payment using Odoo 18 semantics.
odoo_get_invoice_summaryGet a detailed summary of an invoice or bill.
odoo_register_paymentRegister a payment for a specific invoice.
Projects, activities, and chatter
ToolPurpose
odoo_find_taskSearch project tasks by name, project, or stage.
odoo_create_taskCreate a new project task.
odoo_update_taskUpdate task stage, assignee, or deadline.
odoo_create_activitySchedule an activity on a record.
odoo_list_pending_activitiesList pending activities, optionally filtered by model or assignee.
odoo_mark_activity_doneMark an activity as completed.
odoo_post_chatter_messagePost a chatter message on a record.
odoo_create_activity_summaryCreate a summary-style activity for follow-up.
odoo_close_activity_with_reasonClose an activity and record the reason.
odoo_log_timesheetLog a timesheet entry for a project or task.
Support, contracts, stock, and instance capabilities
ToolPurpose
odoo_get_capabilitiesReport which modules and capabilities are available in the connected instance.
odoo_create_helpdesk_ticketCreate a helpdesk ticket directly.
odoo_create_helpdesk_ticket_from_partnerCreate a helpdesk ticket linked to a partner.
odoo_draft_ticket_emailPrepare a draft support email from a ticket context.
odoo_create_contract_lineAdd a line to a contract.
odoo_replace_contract_lineReplace an existing contract line with a new one.
odoo_close_contract_lineClose a contract line with a reason and close date.
odoo_get_product_stockInspect stock quantities for a product.
odoo_create_calendar_eventCreate a meeting or appointment with attendees.
Introspection
ToolPurpose
odoo_get_model_schemaInspect the fields and schema of a model such as res.partner or account.move.

Available Resources

The server also exposes 5 MCP resources for discovery and context:

ResourcePurpose
odoo://context/odoo18-fields-referenceOdoo 18 field reference for common model/domain pitfalls such as customer_rank, supplier_rank, and payment_state.
odoo://modelsJSON list of models currently allowed by the security policy.
odoo://model/{model_name}/schemaTechnical schema for a specific Odoo model.
odoo://record/{model}/{id}/summaryJSON summary of a specific record.
odoo://record/{model}/{id}/chatter_summarySummary of the chatter history for a specific record.

Guardrails and Runtime Behavior

  • Uses standard Odoo JSON-RPC endpoints; it does not depend on OdooClaw delegation.
  • Tool payloads are validated with Pydantic before execution.
  • Model access is restricted by an allowlist defined in the server configuration.
  • Sensitive write fields are denylisted and unlink is blocked.
  • Search-style tools use default and maximum limits (ODOO_MCP_DEFAULT_LIMIT, ODOO_MCP_MAX_LIMIT).
  • sender_id is treated as audit/context metadata; execution runs as the authenticated Odoo session user.
  • Some tools require the corresponding Odoo apps/modules to be installed (CRM, Helpdesk, Projects, Contracts, Inventory, etc.).

Security Model

The server uses standard Odoo JSON-RPC endpoints and executes operations as the configured Odoo session user.

For production, use a dedicated least-privilege Odoo account.

Production Notes

  • This is a stdio MCP server, not an HTTP API service.
  • Docker/Compose support is mainly for packaging or controlled runtime scenarios.
  • In normal usage, your MCP client launches the server process directly.
  • Keep Odoo credentials in environment variables or a secrets manager.

Known Limitations

  • One Odoo credential context per MCP process.
  • ODOO_DB is currently required by the authentication flow.
  • Some tools require specific Odoo apps/modules (CRM, Helpdesk, Project, etc.).
  • Designed for Odoo 18 field semantics.

Development

pip install -e .[dev]
ruff check src tests
black --check src tests
mypy src --ignore-missing-imports
pytest tests -v
python -m build
twine check dist/*

Docs

License

MIT - see LICENSE.

Questions fréquentes

Qu'est-ce que io.github.nicolasramos/odoo-mcp ?

MCP server for Odoo 18 with 38 business tools

Comment installer io.github.nicolasramos/odoo-mcp ?

Il s'exécute sur votre machine. Dans Claude Code : claude mcp add odoo-mcp -e 'ODOO_URL=<ODOO_URL>' -e 'ODOO_DB=<ODOO_DB>' -e 'ODOO_USERNAME=<ODOO_USERNAME>' -e 'ODOO_PASSWORD=<your odoo_password>' -e 'ODOO_MCP_DEFAULT_LIMIT=<ODOO_MCP_DEFAULT_LIMIT>' -e 'ODOO_MCP_MAX_LIMIT=<ODOO_MCP_MAX_LIMIT>' -- python odoo-18-mcp-server==1.0.1. Pour les autres clients, collez la configuration JSON de cette page dans leurs réglages MCP.

Faut-il une clé API pour io.github.nicolasramos/odoo-mcp ?

Oui. Il attend ODOO_URL, ODOO_DB, ODOO_USERNAME, ODOO_PASSWORD, à renseigner dans sa configuration.

io.github.nicolasramos/odoo-mcp est-il open source ?

Oui. Son code est sur GitHub sous licence MIT.

Qui maintient io.github.nicolasramos/odoo-mcp ?

Il est publié par nicolasramos. AI.tn le référence sans le maintenir ni le recommander.

Issu du registre MCP officiel. Être listé n'est pas une recommandation : vérifiez le code et les permissions d'un serveur avant de lui donner accès à vos données.