An enterprise-grade server for interacting with Odoo ERP through AI assistants. Unlike a traditional database connector, this server is designed as an : it teaches the AI how to navigate Odoo,...
Overview
An enterprise-grade server for interacting with Odoo ERP through AI assistants. Unlike a traditional database connector, this server is designed as an : it teaches the AI how to navigate Odoo, understand its business logic, and perform complex data analysis. - — Native instructions that teach your AI how to audit inventory, analyse sales, or review security permissions step by step, without writing prompts from scratch. - — Optimised support for read_group and advanced analytical operations, allowing the AI to generate financial reports or KPIs instantly. - — Tools that grant the AI X-ray vision: discover available action buttons, inspect view XML architectures, evaluate security rules — reducing hallucinations to a minimum. - — Uses only Python stdlib (urllib, json, csv, xml) plus the mcp package. No requests, no odoorpc. - — Uses Odoo's own XML-RPC layer; the MCP server cannot bypass permissions the user doesn't already have. Always prefer an over a plain password.
README
Odoo MCP Server — Agentic Edition
An enterprise-grade Model Context Protocol (MCP) server for interacting with Odoo ERP through AI assistants. Unlike a traditional database connector, this server is designed as an agentic bridge: it teaches the AI how to navigate Odoo, understand its business logic, and perform complex data analysis.
Why Agentic Edition?
- Guided Workflows (Prompts) — Native instructions that teach your AI how to audit inventory, analyse sales, or review security permissions step by step, without writing prompts from scratch.
- Native BI — Optimised support for
read_groupand advanced analytical operations, allowing the AI to generate financial reports or KPIs instantly. - Deep Introspection — Tools that grant the AI X-ray vision: discover available action buttons, inspect view XML architectures, evaluate security rules — reducing hallucinations to a minimum.
- Zero extra dependencies — Uses only Python stdlib (
urllib,json,csv,xml) plus themcppackage. Norequests, noodoorpc. - Built-in Security — Uses Odoo’s own XML-RPC layer; the MCP server cannot bypass permissions the user doesn’t already have.
Installation
# Recommended — isolated and fast
uv tool install odoo-mcp-server-conn
# Standard
pip install odoo-mcp-server-conn
Configuration
Environment variables
| Variable | Required | Description |
|---|---|---|
ODOO_URL |
✅ | Your Odoo URL (e.g. http://localhost:8069) |
ODOO_DB |
✅ | Database name |
ODOO_USERNAME |
✅ | User login or email |
ODOO_PASSWORD |
✅ | Password or API Key (strongly recommended) |
MCP_AUTH_CACHE_TTL |
❌ | Seconds before re-authenticating (default: 300) |
Tip: Always prefer an API Key over a plain password. Generate one in Odoo under Settings → Users → Your User → API Keys.
Claude Code (CLI)
Run this command once — it stores the configuration permanently for the current project:
claude mcp add odoo-server \
--env ODOO_URL=http://localhost:8069 \
--env ODOO_DB=my_database \
--env ODOO_USERNAME=admin \
--env ODOO_PASSWORD=my_api_key \
-- odoo-mcp-server-conn
Verify the connection inside Claude Code:
/mcp
Claude Desktop
Locate your config file:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
Add the following block:
{
"mcpServers": {
"odoo-server": {
"command": "odoo-mcp-server-conn",
"env": {
"ODOO_URL": "http://localhost:8069",
"ODOO_DB": "my_database",
"ODOO_USERNAME": "admin",
"ODOO_PASSWORD": "my_api_key"
}
}
}
}
VS Code (Copilot / Cline / Roo Code)
Add to your .vscode/mcp.json (workspace-level) or user MCP settings:
{
"servers": {
"odoo-server": {
"type": "stdio",
"command": "odoo-mcp-server-conn",
"env": {
"ODOO_URL": "http://localhost:8069",
"ODOO_DB": "my_database",
"ODOO_USERNAME": "admin",
"ODOO_PASSWORD": "my_api_key"
}
}
}
}
Cursor IDE
- Go to Settings → Features → MCP.
- Click Add new server → type
command. - Command:
odoo-mcp-server-conn. - Add each environment variable in the Env vars section.
Windsurf
Add to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"odoo-server": {
"command": "odoo-mcp-server-conn",
"env": {
"ODOO_URL": "http://localhost:8069",
"ODOO_DB": "my_database",
"ODOO_USERNAME": "admin",
"ODOO_PASSWORD": "my_api_key"
}
}
}
}
Tools
CRUD — Core operations
| Tool | Odoo method | Description |
|---|---|---|
search_records |
search |
Return IDs matching a domain filter |
read_records |
read |
Read fields from records by ID |
search_read_records |
search_read |
Search + read in one optimised call |
create_record |
create |
Create a new record |
update_record |
write |
Update existing records |
delete_record |
unlink |
Delete records ⚠️ |
count_records |
search_count |
Count without loading records (fast) |
Introspection — understand the data model in real time
| Tool | Description |
|---|---|
get_model_fields |
Live schema of any model (types, relations, required flags) |
get_view_architecture |
Final merged XML of a view (form / tree / kanban / search) |
get_workflow_states |
States, stages, and transition buttons of a model |
get_action_buttons |
All buttons in a view with visibility conditions and groups |
get_related_records |
Auto-resolved Many2one / One2many / Many2many relations |
get_security_rules |
ACL and ir.rule records for a model |
explain_domain |
Translates an Odoo domain filter into plain English |
BI & Analytics
| Tool | Description |
|---|---|
read_group |
GROUP BY with sums, counts, averages. Supports :month / :year date grouping |
export_to_csv |
Export records to a CSV string (up to 1 000 rows) |
get_available_reports |
List PDF / HTML reports available for a model |
Wildcard
| Tool | Description |
|---|---|
execute_method |
Call any public Odoo method (e.g. action_confirm, button_validate) |
Guided Prompts (pre-trained workflows)
Invoke these prompts directly from your AI client to start a structured analysis:
| Prompt | What it does |
|---|---|
analyze_sales |
Sales KPIs — revenue trend, top customers, conversion rate |
diagnose_inventory |
Low-stock products, stuck transfers, warehouse utilisation |
audit_permissions |
Cross-reference security groups with ACL, flag over-privileged users |
financial_overview |
Cash flow overview — AR, AP, invoicing by period |
Resources (navigable URIs)
The AI can query these URIs directly as if browsing the ERP:
| URI | Description |
|---|---|
odoo://models |
Master list of all models installed in the instance |
odoo://fields/{model} |
Data dictionary for a specific model |
odoo://record/{model}/{id} |
Complete record sheet |
odoo://search/{model}/{domain} |
Instant search, e.g. odoo://search/res.partner/[["is_company","=",true]] |
Security
- The server operates entirely through Odoo’s XML-RPC layer — it cannot bypass any permission the authenticated user doesn’t already have in the ERP.
- No raw SQL, no forced commits, no ORM bypass.
- Credentials are read exclusively from environment variables — never hardcoded.
License: MIT
Install
This server does not publish a one-line install command.
Open the repository installation guide New to MCP? Start with the mcpskill.org guide →Configuration
{
"mcpServers": {
"odoo-server": {
"command": "odoo-mcp-server-conn",
"env": {
"ODOO_URL": "http://localhost:8069",
"ODOO_DB": "my_database",
"ODOO_USERNAME": "admin",
"ODOO_PASSWORD": "my_api_key"
}
}
}
}