A community-driven registry for Claude, Cursor, Windsurf, Cline & more. Not affiliated with Anthropic.
Are you the author? Sign in to claim
Odoo 19 MCP Server module — gives AI agents terminal, database, filesystem, and ORM access via Model Context Protocol
An Odoo V18 module that provides a Model Context Protocol (MCP) server running within Odoo. This gives AI agents direct access to Odoo capabilities including terminal control, database operations via Odoo's cursor, filesystem management, Odoo ORM/shell execution, and service administration.
/mcp/v1 (no stdio dependency)env.cr cursor for SQL operationsenv context+---------------------------+
| Odoo Server |
| |
| +---------------------+ |
| | OdooDevMCP Module | |
| | - HTTP Controller | | +------------------+
| | - MCP Server |--------->| Registry API |
| | - Tools/Services | | POST | (phone-home) |
| +---------------------+ | +------------------+
| | | | | |
| v v v v |
| [PG] [FS] [ORM] [SVC] | +------------------+
| | | MCP Client |
| +---------------------+ |<------| (Claude, IDE) |
| | PostgreSQL | | HTTP +------------------+
| +---------------------+ | /mcp/v1
| |
+---------------------------+
mcp, pyyaml, requests, pydanticcustom-addons directoryrequirements.txt:
mcp>=1.0.0
pyyaml>=6.0
requests>=2.28.0
pydantic>=2.0.0
Copy the module directory to your addons path:
cp -r OdooDevMCP /opt/odoo/custom-addons/
Install Python dependencies:
source /opt/odoo/venv/bin/activate
pip install mcp pyyaml requests pydantic
Update the apps list and install:
# Restart Odoo
sudo systemctl restart odoo
# Or update module list via CLI
odoo -d your_database -u all --stop-after-init
Install via Odoo UI:
After installation, configure the module via Settings > MCP Server > Configuration:
127.0.0.1 for localhost only)8768)/var/log/odoo/mcp_audit.log)The MCP server exposes a JSON-RPC endpoint at:
http://your-odoo-server:8069/mcp/v1
Or on the configured port:
http://your-odoo-server:8768/mcp/v1
curl http://localhost:8768/mcp/v1/health
curl http://localhost:8768/mcp/v1/capabilities \
-H "Authorization: Bearer your-api-key"
Configure your MCP client (Claude Code, etc.) to connect:
{
"mcpServers": {
"odoo-dev": {
"url": "http://your-odoo-server:8768/mcp/v1",
"headers": {
"Authorization": "Bearer your-api-key"
}
}
}
}
The module provides 13 MCP tools:
env contextThe module provides 5 MCP resources:
This is a development and administration tool. The trust boundary is at the MCP client level. Anyone who can connect to the MCP endpoint has full access to the server.
This is NOT a public-facing service. Only use in trusted environments with proper access controls.
Authorization: Bearer <api_key> headerAll tool invocations are logged to the configured audit log path:
[2026-02-16T10:05:30Z] DB=production USER=2 TOOL=execute_command CMD="systemctl restart odoo" EXIT_CODE=0 DURATION=1200ms
[2026-02-16T10:05:32Z] DB=production USER=2 TOOL=query_database QUERY="SELECT count(*) FROM res_partner" ROWS=1 DURATION=5ms
Built-in rate limiting prevents abuse:
All filesystem operations validate paths to prevent:
.. in paths)On module installation, the server can register itself with a configured API endpoint:
Payload sent to phone_home_url:
{
"server_id": "database_hostname",
"hostname": "odoo-server-01",
"ip_addresses": {
"primary": "10.0.1.50",
"all": ["10.0.1.50", "172.17.0.1"]
},
"port": 8768,
"transport": "http/sse",
"version": "1.0.0",
"odoo_version": "18.0",
"database": "production",
"capabilities": [...],
"started_at": "2026-02-16T10:00:00Z"
}
This enables fleet management and discovery of all deployed Odoo MCP servers.
In Odoo: Apps > Search "MCP" > Check installation status
# Odoo server log (includes MCP module output)
tail -f /var/log/odoo/odoo.log | grep MCP
# Audit log
tail -f /var/log/odoo/mcp_audit.log
# Health check
curl http://localhost:8768/mcp/v1/health
# Capabilities (requires API key if configured)
curl http://localhost:8768/mcp/v1/capabilities \
-H "Authorization: Bearer your-api-key"
Check logs:
tail -f /var/log/odoo/odoo.log
Common issues:
mcp, pyyaml, requests, pydantic)systemctl status postgresqlphone_home_url is configured in SettingsOdooDevMCP/
├── __init__.py # Module initialization + post_init_hook
├── __manifest__.py # Module metadata and dependencies
├── models/
│ ├── __init__.py
│ └── mcp_config.py # Configuration settings model
├── controllers/
│ ├── __init__.py
│ └── mcp_endpoint.py # HTTP controller for MCP protocol
├── tools/
│ ├── __init__.py
│ ├── terminal.py # Command execution
│ ├── database.py # SQL operations via Odoo cursor
│ ├── filesystem.py # File operations
│ ├── odoo_tools.py # Odoo shell, modules, config, services
│ └── registry.py # Tool registry and schemas
├── services/
│ ├── __init__.py
│ ├── mcp_server.py # MCP JSON-RPC handler
│ └── phone_home.py # Registration and heartbeat
├── security/
│ ├── __init__.py
│ ├── security.py # Audit, rate limiting, path validation
│ └── ir.model.access.csv # Access control
├── data/
│ └── mcp_data.xml # Default configuration parameters
├── views/
│ └── mcp_config_views.xml # Configuration UI
└── static/
└── description/
└── icon.png # Module icon
To add a new tool:
tools/ (e.g., tools/my_tool.py)tools/__init__.pytools/registry.py in both get_tool_registry() and get_tool_schemas()controllers/mcp_endpoint.pyLGPL-3 (compatible with Odoo's licensing)
For issues and questions:
/var/log/odoo/odoo.log/var/log/odoo/mcp_audit.logRun Claude Code as an MCP server so any agent can delegate coding tasks to it
Browser automation using accessibility snapshots instead of screenshots
MCP server integration for DaVinci Resolve Studio
A Jetbrains IDE IntelliJ plugin aimed to provide coding agents the ability to leverage intelliJ's indexing of the codeba