Skip to main content

A Model Context Protocol server for Odoo ERP systems

Project description

MCP Server for Odoo

CI codecov Code style: black Ruff Checked with mypy Python 3.10+ License: MPL 2.0

An MCP server that enables AI assistants like Claude to interact with Odoo ERP systems. Access business data, search records, and work with Odoo through natural language.

Features

  • 🔍 Search and retrieve any Odoo record (customers, products, invoices, etc.)
  • 📊 Browse multiple records and get formatted summaries
  • 🔢 Count records matching specific criteria
  • 📋 Inspect model fields to understand data structure
  • 🔐 Secure access with API key or username/password authentication
  • 🎯 Smart pagination for large datasets
  • 💬 LLM-optimized output with hierarchical text formatting

Installation

Prerequisites

  • Python 3.10 or higher
  • Access to an Odoo instance (version 18.0+)
  • The Odoo MCP module installed on your Odoo server
  • An API key generated in Odoo (Settings > Users > API Keys)

Installing via MCP Settings (Recommended)

Add this configuration to your MCP settings:

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "odoo": {
      "command": "uvx",
      "args": ["mcp-server-odoo"],
      "env": {
        "ODOO_URL": "https://your-odoo-instance.com",
        "ODOO_API_KEY": "your-api-key-here",
        "ODOO_DB": "your-database-name"
      }
    }
  }
}
Cursor

Add to ~/.cursor/mcp_settings.json:

{
  "mcpServers": {
    "odoo": {
      "command": "uvx",
      "args": ["mcp-server-odoo"],
      "env": {
        "ODOO_URL": "https://your-odoo-instance.com",
        "ODOO_API_KEY": "your-api-key-here",
        "ODOO_DB": "your-database-name"
      }
    }
  }
}
VS Code (with GitHub Copilot)

Add to your VS Code settings (~/.vscode/mcp_settings.json or workspace settings):

{
  "github.copilot.chat.mcpServers": {
    "odoo": {
      "command": "uvx",
      "args": ["mcp-server-odoo"],
      "env": {
        "ODOO_URL": "https://your-odoo-instance.com",
        "ODOO_API_KEY": "your-api-key-here",
        "ODOO_DB": "your-database-name"
      }
    }
  }
}
Zed

Add to ~/.config/zed/settings.json:

{
  "context_servers": {
    "odoo": {
      "command": "uvx",
      "args": ["mcp-server-odoo"],
      "env": {
        "ODOO_URL": "https://your-odoo-instance.com",
        "ODOO_API_KEY": "your-api-key-here",
        "ODOO_DB": "your-database-name"
      }
    }
  }
}

Alternative Installation Methods

Using pip
# Install globally
pip install mcp-server-odoo

# Or use pipx for isolated environment
pipx install mcp-server-odoo

Then use mcp-server-odoo as the command in your MCP configuration.

From source
git clone https://github.com/ivnvxd/mcp-server-odoo.git
cd mcp-server-odoo
pip install -e .

Then use the full path to the package in your MCP configuration.

Configuration

Environment Variables

The server requires the following environment variables:

Variable Required Description Example
ODOO_URL Yes Your Odoo instance URL https://mycompany.odoo.com
ODOO_API_KEY Yes* API key for authentication 0ef5b399e9ee9c11b053dfb6eeba8de473c29fcd
ODOO_USER Yes* Username (if not using API key) admin
ODOO_PASSWORD Yes* Password (if not using API key) admin
ODOO_DB No Database name (auto-detected if not set) mycompany

*Either ODOO_API_KEY or both ODOO_USER and ODOO_PASSWORD are required.

Setting up Odoo

  1. Install the MCP module:

    • Download the mcp_server module
    • Install it in your Odoo instance
    • Navigate to Settings > MCP Server
  2. Enable models for MCP access:

    • Go to Settings > MCP Server > Enabled Models
    • Add models you want to access (e.g., res.partner, product.product)
    • Configure permissions (read, write, create, delete) per model
  3. Generate an API key:

    • Go to Settings > Users & Companies > Users
    • Select your user
    • Under the "API Keys" tab, create a new key
    • Copy the key for your MCP configuration

Usage Examples

Once configured, you can ask Claude:

  • "Show me all customers from Spain"
  • "Find products with stock below 10 units"
  • "List today's sales orders over $1000"
  • "Search for unpaid invoices from last month"
  • "Count how many active employees we have"
  • "Show me the contact information for Microsoft"

Available Tools

search_records

Search for records in any Odoo model with filters.

{
  "model": "res.partner",
  "domain": [["is_company", "=", true], ["country_id.code", "=", "ES"]],
  "fields": ["name", "email", "phone"],
  "limit": 10
}

Field Selection Options:

  • Omit fields or set to null: Returns smart selection of common fields
  • Specify field list: Returns only those specific fields
  • Use ["__all__"]: Returns all fields (use with caution)

get_record

Retrieve a specific record by ID.

{
  "model": "res.partner",
  "record_id": 42,
  "fields": ["name", "email", "street", "city"]
}

Field Selection Options:

  • Omit fields or set to null: Returns smart selection of common fields with metadata
  • Specify field list: Returns only those specific fields
  • Use ["__all__"]: Returns all fields without metadata

list_models

List all models enabled for MCP access.

{}

create_record

Create a new record in Odoo.

{
  "model": "res.partner",
  "values": {
    "name": "New Customer",
    "email": "customer@example.com",
    "is_company": true
  }
}

update_record

Update an existing record.

{
  "model": "res.partner",
  "record_id": 42,
  "values": {
    "phone": "+1234567890",
    "website": "https://example.com"
  }
}

delete_record

Delete a record from Odoo.

{
  "model": "res.partner",
  "record_id": 42
}

Resources

The server also provides direct access to Odoo data through resource URIs:

  • odoo://res.partner/record/1 - Get partner with ID 1
  • odoo://product.product/search?domain=[["qty_available",">",0]] - Search products in stock
  • odoo://sale.order/browse?ids=1,2,3 - Browse multiple sales orders
  • odoo://res.partner/count?domain=[["customer_rank",">",0]] - Count customers
  • odoo://product.product/fields - List available fields for products

Security

  • Always use HTTPS in production environments
  • Keep your API keys secure and rotate them regularly
  • Configure model access carefully - only enable necessary models
  • The MCP module respects Odoo's built-in access rights and record rules
  • Each API key is linked to a specific user with their permissions

Troubleshooting

Connection Issues

If you're getting connection errors:

  1. Verify your Odoo URL is correct and accessible
  2. Check that the MCP module is installed: visit https://your-odoo.com/mcp/health
  3. Ensure your firewall allows connections to Odoo
Authentication Errors

If authentication fails:

  1. Verify your API key is active in Odoo
  2. Check that the user has appropriate permissions
  3. Try regenerating the API key
  4. For username/password auth, ensure 2FA is not enabled
Model Access Errors

If you can't access certain models:

  1. Go to Settings > MCP Server > Enabled Models in Odoo
  2. Ensure the model is in the list and has appropriate permissions
  3. Check that your user has access to that model in Odoo's security settings
Debug Mode

Enable debug logging for more information:

{
  "env": {
    "ODOO_URL": "https://your-odoo.com",
    "ODOO_API_KEY": "your-key",
    "ODOO_MCP_LOG_LEVEL": "DEBUG"
  }
}

Development

Running from source
# Clone the repository
git clone https://github.com/ivnvxd/mcp-server-odoo.git
cd mcp-server-odoo

# Install in development mode
pip install -e ".[dev]"

# Run tests
pytest --cov

# Run the server
python -m mcp_server_odoo
Testing with MCP Inspector
# Using uvx
npx @modelcontextprotocol/inspector uvx mcp-server-odoo

# Using local installation
npx @modelcontextprotocol/inspector python -m mcp_server_odoo

License

This project is licensed under the Mozilla Public License 2.0 (MPL-2.0) - see the LICENSE file for details.

Contributing

Contributions are very welcome! Please see the CONTRIBUTING guide for details.

Support

Thank you for using this project! If you find it helpful and would like to support my work, kindly consider buying me a coffee. Your support is greatly appreciated!

Buy Me A Coffee

And do not forget to give the project a star if you like it! :star:

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

mcp_server_odoo-0.1.1.tar.gz (166.9 kB view details)

Uploaded Source

Built Distribution

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

mcp_server_odoo-0.1.1-py3-none-any.whl (62.7 kB view details)

Uploaded Python 3

File details

Details for the file mcp_server_odoo-0.1.1.tar.gz.

File metadata

  • Download URL: mcp_server_odoo-0.1.1.tar.gz
  • Upload date:
  • Size: 166.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for mcp_server_odoo-0.1.1.tar.gz
Algorithm Hash digest
SHA256 8cc680c6cd577617742134bf44e7c305d0d29cbc75abc486773b928dc3cfae46
MD5 01c235ee1539b6bce93edd1c1147ce5e
BLAKE2b-256 e8d547475c35b34ae9af171617bcbcd288c0ea1ebb95c97eb7925aaf1ae1155a

See more details on using hashes here.

Provenance

The following attestation bundles were made for mcp_server_odoo-0.1.1.tar.gz:

Publisher: publish.yml on ivnvxd/mcp-server-odoo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mcp_server_odoo-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for mcp_server_odoo-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 e3bf619aed782f8add8e781de3ce09704f392cdc447ec8783c610561dd427674
MD5 f6b1a460b9cfaa8ee2588fb967632db4
BLAKE2b-256 53269082fe4ed944abceb2bf7aa1773888f6460835cf08368f1aed7dfd6bc1d1

See more details on using hashes here.

Provenance

The following attestation bundles were made for mcp_server_odoo-0.1.1-py3-none-any.whl:

Publisher: publish.yml on ivnvxd/mcp-server-odoo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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