Skip to main content

MCP Server for Odoo Integration

Project description

Odoo MCP Server

An MCP server implementation that integrates with Odoo ERP systems, enabling AI assistants to interact with Odoo data and functionality through the Model Context Protocol.

Features

  • Comprehensive Odoo Integration: Full access to Odoo models, records, and methods
  • XML-RPC Communication: Secure connection to Odoo instances via XML-RPC
  • Flexible Configuration: Support for config files and environment variables
  • Resource Pattern System: URI-based access to Odoo data structures
  • Error Handling: Clear error messages for common Odoo API issues
  • Stateless Operations: Clean request/response cycle for reliable integration

Tools

  • search_records

    • Search for records in any Odoo model
    • Inputs:
      • model (string): The model name (e.g., 'res.partner')
      • domain (array): Search domain (e.g., [['is_company', '=', true]])
      • fields (optional array): Optional fields to fetch
      • limit (optional number): Maximum number of records to return
    • Returns: Matching records with requested fields
  • read_record

    • Read details of a specific record
    • Inputs:
      • model (string): The model name (e.g., 'res.partner')
      • id (number): The record ID
      • fields (optional array): Optional fields to fetch
    • Returns: Record data with requested fields
  • create_record

    • Create a new record in Odoo
    • Inputs:
      • model (string): The model name (e.g., 'res.partner')
      • values (object): Dictionary of field values
    • Returns: Dictionary with the new record ID
  • update_record

    • Update an existing record
    • Inputs:
      • model (string): The model name (e.g., 'res.partner')
      • id (number): The record ID
      • values (object): Dictionary of field values to update
    • Returns: Dictionary indicating success
  • delete_record

    • Delete a record from Odoo
    • Inputs:
      • model (string): The model name (e.g., 'res.partner')
      • id (number): The record ID
    • Returns: Dictionary indicating success
  • execute_method

    • Execute a custom method on an Odoo model
    • Inputs:
      • model (string): The model name (e.g., 'res.partner')
      • method (string): Method name to execute
      • args (optional array): Positional arguments
      • kwargs (optional object): Keyword arguments
    • Returns: Dictionary with the method result
  • get_model_fields

    • Get field definitions for a model
    • Inputs:
      • model (string): The model name (e.g., 'res.partner')
    • Returns: Dictionary with field definitions

Resources

  • odoo://models

    • Lists all available models in the Odoo system
    • Returns: JSON array of model information
  • odoo://model/{model_name}

    • Get information about a specific model including fields
    • Example: odoo://model/res.partner
    • Returns: JSON object with model metadata and field definitions
  • odoo://record/{model_name}/{record_id}

    • Get a specific record by ID
    • Example: odoo://record/res.partner/1
    • Returns: JSON object with record data
  • odoo://search/{model_name}/{domain}

    • Search for records that match a domain
    • Example: odoo://search/res.partner/[["is_company","=",true]]
    • Returns: JSON array of matching records (limited to 10 by default)

Configuration

Odoo Connection Setup

  1. Create a configuration file named odoo_config.json:
{
  "url": "https://your-odoo-instance.com",
  "db": "your-database-name",
  "username": "your-username",
  "password": "your-password-or-api-key"
}
  1. Alternatively, use environment variables:
    • ODOO_URL: Your Odoo server URL
    • ODOO_DB: Database name
    • ODOO_USERNAME: Login username
    • ODOO_PASSWORD: Password or API key
    • ODOO_TIMEOUT: Connection timeout in seconds (default: 30)
    • ODOO_VERIFY_SSL: Whether to verify SSL certificates (default: true)

Usage with Claude Desktop

Add this to your claude_desktop_config.json:

{
  "mcpServers": {
    "odoo": {
      "command": "python",
      "args": [
        "-m",
        "odoo_mcp"
      ],
      "env": {
        "ODOO_URL": "https://your-odoo-instance.com",
        "ODOO_DB": "your-database-name",
        "ODOO_USERNAME": "your-username",
        "ODOO_PASSWORD": "your-password-or-api-key"
      }
    }
  }
}

Docker

{
  "mcpServers": {
    "odoo": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "ODOO_URL",
        "-e",
        "ODOO_DB",
        "-e",
        "ODOO_USERNAME",
        "-e",
        "ODOO_PASSWORD",
        "mcp/odoo"
      ],
      "env": {
        "ODOO_URL": "https://your-odoo-instance.com",
        "ODOO_DB": "your-database-name",
        "ODOO_USERNAME": "your-username",
        "ODOO_PASSWORD": "your-password-or-api-key"
      }
    }
  }
}

Installation

Python Package

pip install odoo-mcp

Running the Server

# Using the installed package
odoo-mcp

# Using the MCP development tools
mcp dev odoo_mcp/server.py

# With additional dependencies
mcp dev odoo_mcp/server.py --with pandas --with numpy

# Mount local code for development
mcp dev odoo_mcp/server.py --with-editable .

Build

Docker build:

docker build -t mcp/odoo:latest -f Dockerfile .

Parameter Formatting Guidelines

When using the MCP tools for Odoo, pay attention to these parameter formatting guidelines:

  1. Domain Parameter:

    • The following domain formats are supported:
      • List format: [["field", "operator", value], ...]
      • Object format: {"conditions": [{"field": "...", "operator": "...", "value": "..."}]}
      • JSON string of either format
    • Examples:
      • List format: [["is_company", "=", true]]
      • Object format: {"conditions": [{"field": "date_order", "operator": ">=", "value": "2025-03-01"}]}
      • Multiple conditions: [["date_order", ">=", "2025-03-01"], ["date_order", "<=", "2025-03-31"]]
  2. Fields Parameter:

    • Should be an array of field names: ["name", "email", "phone"]
    • The server will try to parse string inputs as JSON

License

This MCP server is licensed under the MIT License.

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

odoo_mcp-0.0.3.tar.gz (13.2 kB view details)

Uploaded Source

Built Distribution

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

odoo_mcp-0.0.3-py3-none-any.whl (12.3 kB view details)

Uploaded Python 3

File details

Details for the file odoo_mcp-0.0.3.tar.gz.

File metadata

  • Download URL: odoo_mcp-0.0.3.tar.gz
  • Upload date:
  • Size: 13.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.2

File hashes

Hashes for odoo_mcp-0.0.3.tar.gz
Algorithm Hash digest
SHA256 4a1bf2e3c03511578ca7079f668d86279ab4195ee4ddd39dca28ca8ac1e0b36f
MD5 b039b3fe0cf832dea7a6b25c7a7d9536
BLAKE2b-256 24bd1652baafc37a58bfcd3f1dddbb2efdacd6b28820341c3d9861f31a1d2b9b

See more details on using hashes here.

File details

Details for the file odoo_mcp-0.0.3-py3-none-any.whl.

File metadata

  • Download URL: odoo_mcp-0.0.3-py3-none-any.whl
  • Upload date:
  • Size: 12.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.2

File hashes

Hashes for odoo_mcp-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 0d08a37ef737921fefc596a51e7f1bdabb90034249769fcc73d507843a904655
MD5 cee0c93a3bcf91a18baf09c8fd62c742
BLAKE2b-256 44e8eed14e58c3c5afbae6325dc7c6d780f3f00d68dc3139308a0d0868200984

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