Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

bemade-odoo-mcp

An MCP server that connects to Odoo 19.0, giving AI assistants full access to any Odoo model.

Supports two authentication modes:

  • API key (Bearer) — connects via the JSON-2 API (/json/2/)
  • Username/password (session) — connects via JSON-RPC (/web/dataset/call_kw/)

Features

  • search_records — Search any model with domain filters, field selection, and pagination
  • read_record — Read specific records by ID
  • list_models — List installed Odoo models
  • get_model_fields — Inspect a model's field schema
  • get_model_doc — Retrieve API documentation for a model
  • create_record / update_records / delete_records — Write operations
  • call_method — Call any public method on any model

Requirements

  • Python 3.12+
  • An Odoo 19.0 instance with either an API key or login credentials

Installation

uv tool install bemade-odoo-mcp

Or from source:

git clone https://github.com/bemade/odoo-mcp.git
cd odoo-mcp
uv sync

Configuration

Set environment variables (or create a .env file).

ODOO_URL=https://your-odoo-instance.com
ODOO_API_KEY=your-api-key-here
ODOO_DB=your-database-name  # only needed for multi-database setups

To create an API key in Odoo, go to Settings > Users > [your user] > Preferences > API Keys.

Option B: Username/password (convenient for local dev)

ODOO_URL=http://localhost:8069
ODOO_USERNAME=admin
ODOO_PASSWORD=admin
ODOO_DB=mydb

Optional

ODOO_INSTANCE_LABEL=production  # label shown in the MCP server name (default: "odoo")

Usage with Claude Code

Add to your Claude Code MCP config (.claude/settings.json or project .mcp.json):

{
  "mcpServers": {
    "odoo": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/odoo-mcp", "odoo-mcp"]
    }
  }
}

Or if installed as a tool:

{
  "mcpServers": {
    "odoo": {
      "command": "odoo-mcp"
    }
  }
}

Connecting to multiple instances

Run the same server binary multiple times with different env vars. Claude Code namespaces the tools automatically (mcp__odoo-prod__search_records, etc.):

{
  "mcpServers": {
    "odoo-prod": {
      "command": "odoo-mcp",
      "env": {
        "ODOO_URL": "https://prod.example.com",
        "ODOO_API_KEY": "prod-key",
        "ODOO_INSTANCE_LABEL": "production"
      }
    },
    "odoo-dev": {
      "command": "odoo-mcp",
      "env": {
        "ODOO_URL": "http://localhost:8069",
        "ODOO_USERNAME": "admin",
        "ODOO_PASSWORD": "admin",
        "ODOO_DB": "mydb",
        "ODOO_INSTANCE_LABEL": "local-dev"
      }
    }
  }
}

Development

uv sync
uv run pytest

License

LGPL-3.0-only

Release files for bemade-odoo-mcp 0.1.0a5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for bemade-odoo-mcp 0.1.0a5
File Size Uploaded
bemade_odoo_mcp-0.1.0a5.tar.gz 6.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for bemade-odoo-mcp 0.1.0a5
File Interpreter ABI Platform
bemade_odoo_mcp-0.1.0a5-py3-none-any.whl Python 3 none any Details

Total release size: 14.3 kB

Release files / bemade_odoo_mcp-0.1.0a5.tar.gz

Download URL bemade_odoo_mcp-0.1.0a5.tar.gz
Size 6.3 kB
Tags Source
SHA-256 checksum
How to use checksums
0ad386322bde49829fc9e7ef47452bef3f04d5b84b7fed274869f9138a0a8569
BLAKE2b-256 checksum
How to use checksums
b29d9e35d54a75c64217ddde5c7415e9dd8e88498586bca0dec5b5186627e781
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Pop!_OS","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / bemade_odoo_mcp-0.1.0a5-py3-none-any.whl

Download URL bemade_odoo_mcp-0.1.0a5-py3-none-any.whl
Size 8.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ec10cae41eb9324250bfbc09d292cf3000be8a487fad81c7b05c01b6b246d883
BLAKE2b-256 checksum
How to use checksums
f374b1d7ffa51e8a5b87e9f6ad25f8f8bf28bddb6535a5efedc283da11a11dfb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Pop!_OS","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page