Skip to main content

MCP server for Odoo 19.0 via the JSON-2 API

Project description

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).

Option A: API key (recommended for production)

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

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

bemade_odoo_mcp-0.1.0a3.tar.gz (6.0 kB view details)

Uploaded Source

Built Distribution

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

bemade_odoo_mcp-0.1.0a3-py3-none-any.whl (7.8 kB view details)

Uploaded Python 3

File details

Details for the file bemade_odoo_mcp-0.1.0a3.tar.gz.

File metadata

  • Download URL: bemade_odoo_mcp-0.1.0a3.tar.gz
  • Upload date:
  • Size: 6.0 kB
  • Tags: Source
  • Uploaded using 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}

File hashes

Hashes for bemade_odoo_mcp-0.1.0a3.tar.gz
Algorithm Hash digest
SHA256 a489cae3341f0d567ba168cb6cc579d6073f315c26b96600d7c083e13ff8ad5c
MD5 55a3bae8e28a3b3b5917bda60480ab2c
BLAKE2b-256 d1352cb9db5db362766b4a61645f30e6bf80aba3d8af7462492bd693c7b14609

See more details on using hashes here.

File details

Details for the file bemade_odoo_mcp-0.1.0a3-py3-none-any.whl.

File metadata

  • Download URL: bemade_odoo_mcp-0.1.0a3-py3-none-any.whl
  • Upload date:
  • Size: 7.8 kB
  • Tags: Python 3
  • Uploaded using 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}

File hashes

Hashes for bemade_odoo_mcp-0.1.0a3-py3-none-any.whl
Algorithm Hash digest
SHA256 30758bb6e129a6bc968dd07f8736779059bcf25b7a8f4047d05f58c444a2e46d
MD5 ea5b5b188fd0c0869507ec5411032da9
BLAKE2b-256 9f3ad2f3877816e39bd7f220419662c51c3ba093efff642cbdccaeb918a025a5

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