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).
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
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)
| File | Size | Uploaded | |
|---|---|---|---|
| bemade_odoo_mcp-0.1.0a5.tar.gz | 6.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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}
|