| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Lines of code | 2931 |
| Technical Name |
rh_odoo_mcp_server |
| License | OPL-1 |
| Versions | 18.0 19.0 |
Odoo MCP Server
Turn Your Odoo Instance Into a Native AI-Powered MCP Server
Connect Claude, Cursor, Gemini, Windsurf, and any MCP-compatible AI assistant directly to your Odoo data. No middleware. No external servers. Just install and connect.
Why Odoo MCP Server?
The Model Context Protocol (MCP) is the new standard for AI assistants to talk to real-world systems. This module turns your Odoo ERP into a first-class MCP citizenâgiving AI agents secure, audited, and controlled access to every model, record, report, and business method in your database.
Core Features
🔌 Native Integration
Runs entirely inside Odoo. No Docker, no VPS, no middleware. Your data never leaves your server.
🔐 Enterprise Security
OAuth 2.0 + PKCE authentication, per-user API keys, per-model access rules, and full audit logging.
⚡ Dual Transports
Supports both SSE (Server-Sent Events) and Streamable HTTP for maximum compatibility with all MCP clients.
🛡 Access Control
Define per-user and per-group access rules. Restrict tools (CRUD, read-only, custom) and models with record limits.
📊 Audit Dashboard
Real-time session monitoring, execution logs, tool usage analytics, and automatic log retention policies.
🗌 Report Generation
AI can list and generate QWeb PDF/HTML reports for any model directly through the MCP interface.
Supported AI Assistants & IDEs
Works with any MCP-compatible client. Here are the most popular tools you can connect today:
Anthropic
Anysphere
Codeium
Zed Industries
VS Code Extension
VS Code Extension
VS Code & JetBrains
VS Code & IDE
Terminal
IDE Assistant
Future-proof
Connect Your AI Assistant â Configuration Guide
Copy the configuration for your tool below. Replace https://your-odoo.com with your Odoo URL and YOUR_API_KEY with the key from MCP Server → API Keys.
1. Claude Desktop (Anthropic)
Edit claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/claude_desktop_config.json, Windows: %APPDATA%\Claude\claude_desktop_config.json):
{
"mcpServers": {
"odoo": {
"command": "npx",
"args": [
"-y",
"@anthropic-ai/mcp-remote",
"https://your-odoo.com/mcp/sse"
]
}
}
}
Claude will open a browser for OAuth 2.0 + PKCE login. After approval, your session appears in the Odoo dashboard.
2. Cursor IDE
Open Cursor Settings → MCP, click Add new MCP server, and enter:
- Name:
odoo - Type:
sse - URL:
https://your-odoo.com/mcp/sse
Cursor negotiates OAuth automatically. Or use Bearer token mode by adding Authorization: Bearer YOUR_API_KEY header.
3. Windsurf (Codeium)
Add to your Windsurf MCP configuration file:
{
"mcpServers": {
"odoo": {
"serverUrl": "https://your-odoo.com/mcp/sse",
"serverType": "sse"
}
}
}
4. Zed Editor
Add to your Zed settings.json:
{
"assistant": {
"version": "2",
"default_model": {
"provider": "anthropic",
"model": "claude-3-5-sonnet-latest"
},
"always_allow_tool_actions": true
},
"context_servers": {
"odoo": {
"url": "https://your-odoo.com/mcp/sse",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}
5. Cline (VS Code Extension)
Open the Cline panel, go to Settings → MCP Servers, and add:
{
"mcpServers": {
"odoo": {
"command": "npx",
"args": ["-y", "@anthropic-ai/mcp-remote", "https://your-odoo.com/mcp/sse"]
}
}
}
6. Roo Code (VS Code Extension)
In Roo Code settings, add an MCP server:
{
"mcpServers": {
"odoo": {
"type": "sse",
"url": "https://your-odoo.com/mcp/sse",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}
7. Continue.dev (VS Code & JetBrains)
Edit ~/.continue/config.json:
{
"server": {
"name": "odoo",
"url": "https://your-odoo.com/mcp/sse",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
8. GitHub Copilot Chat (VS Code)
Add to your VS Code settings.json under MCP servers:
{
"github.copilot.chat.mcpServers": [
{
"name": "odoo",
"url": "https://your-odoo.com/mcp/sse",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
]
}
9. OpenAI Codex CLI
Export your MCP server config before running codex:
export MCP_SERVER_ODOO_URL="https://your-odoo.com/mcp/sse"
export MCP_SERVER_ODOO_TOKEN="YOUR_API_KEY"
codex --mcp-server odoo
10. Generic SSE with cURL
Test your connection from the terminal:
curl -N \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept: text/event-stream" \
https://your-odoo.com/mcp/sse
11. Streamable HTTP (2025 Spec)
For clients supporting the newer Streamable HTTP transport:
curl -X POST https://your-odoo.com/mcp/http \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"tools/list","id":1}'
12. Python SDK
Build your own MCP client in Python:
from mcp import ClientSession, StdioServerParameters
from mcp.client.sse import sse_client
async with sse_client("https://your-odoo.com/mcp/sse",
headers={"Authorization": "Bearer YOUR_API_KEY"}) as (read, write):
async with ClientSession(read, write) as session:
await session.initialize()
tools = await session.list_tools()
print(tools)
Tools Exposed to AI
Your AI assistant gets full CRUD capabilities plus business logic execution:
| Tool | Description | Example Prompt |
|---|---|---|
odoo_create | Create new records in any model | "Create a contact named Acme Corp" |
odoo_read | Read fields from existing records by ID | "Show me the email for partner #42" |
odoo_write | Update existing records | "Update the phone for partner #42" |
odoo_unlink | Delete records by ID | "Delete draft invoice #99" |
odoo_search_read | Search records by domain and read fields | "List all customers in France" |
odoo_search_count | Count records matching a domain | "How many open sales orders?" |
odoo_execute_action | Call business methods (confirm, validate, post) | "Confirm sales order #15" |
odoo_get_report | List or generate QWeb PDF/HTML reports | "Print invoice for order #10 as PDF" |
Resources Exposed to AI
AI can browse your schema and data like a living API:
| Resource URI | Description |
|---|---|
odoo://models | List all available models with names |
odoo://model/{model_name} | Get field definitions and metadata for a model |
odoo://record/{model}/{id} | Read a specific record by ID |
odoo://search/{model}/{domain} | Search records with a JSON domain (limit 10) |
Security Architecture
Authentication Layers
- OAuth 2.0 + PKCE — Full authorization-code flow with S256 code challenge
- Bearer API Keys — Per-user scoped tokens with expiration and revocation
- Global Config Key — Optional fallback token (disabled by default for safety)
- Session Isolation — Every connection gets its own in-memory queue and thread
Authorization Controls
- Access Rules — Per-user/per-group rules for model and tool restrictions
- Tool Profiles — All, CRUD-only, Read-only, or Custom whitelist
- Record Limits — Configurable max records per search_read query
- Blocked Methods — Prevents access to internal/private/model methods
Audit & Monitoring
📋 Execution Logs
Every tool call is logged with input, output, duration, user, and status.
👫 Session Tracking
Live session list with IP, transport, request count, and last activity.
🧹 Auto Cleanup
Built-in cron jobs purge stale sessions and old logs automatically.
Live Dashboard Preview
Real-time overview of active sessions, tool usage, and system health.
Quick Start â 3 Steps
- Install the module from Apps → Install "MCP Server"
- Configure in Settings → General Settings → MCP Server (enable SSE/HTTP, set OAuth client ID, generate API key)
- Connect your AI assistant using one of the 12 configuration examples above
/mcp/sse. For OAuth flow, use /oauth/authorize. For Streamable HTTP, use /mcp/http.
Configuration Reference
| Setting | Path | Default |
|---|---|---|
| Enable MCP Server | General Settings → MCP Server | Enabled |
| Enable SSE Transport | General Settings → MCP Server | Enabled |
| Enable Streamable HTTP | General Settings → MCP Server | Enabled |
| OAuth Client ID | General Settings → MCP Server | odoo-mcp-client |
| API Key / Client Secret | General Settings → MCP Server | — |
| Public URL / Issuer | General Settings → MCP Server | Auto-detect |
| Default Max Records | General Settings → MCP Server | 1000 |
| Session Timeout | General Settings → MCP Server | 60 minutes |
| Log Retention | General Settings → MCP Server | 30 days |
Settings Page Preview
All global MCP server settings in one placeâtransports, timeouts, OAuth, and API keys.
Access Rules Setup
By default, the module operates in deny-all mode if no access rules exist. To grant AI access:
- Navigate to MCP Server → Access Rules
- Create a new rule with a descriptive name (e.g. "Sales Team — Read Only")
- Select Users or Groups who should have AI access
- Pick Allowed Models (leave empty for all models)
- Choose a Tool Access Level: All, CRUD, Read Only, or Custom
- Set Max Records Per Query to prevent accidental large exports
- Activate the rule
odoo_execute_action and odoo_get_report to trusted users.
System Requirements
- Odoo Version: 18.0 (Community & Enterprise)
- Python Version: 3.10+
- Required Python Packages:
mcp,anyio - Installation: Standard Odoo module install—no extra steps
- Database: Works with all supported Odoo databases (PostgreSQL)
mcp and anyio into your Odoo Python environment before installing this module:pip install mcp anyio
What Can You Build?
🤖 AI Sales Assistant
Let Claude query open opportunities, update stages, and generate PDF quotations on request.
📦 Inventory Chatbot
Ask "How many units of Product X are in Stock?" and get real-time quant data.
📈 Executive Reporting
Generate monthly sales reports and P&L statements by simply asking your AI assistant.
🔧 Support Automation
AI can read helpdesk tickets, post messages, and trigger escalation workflows.
Ready to Supercharge Your Odoo with AI?
Install Odoo MCP Server today and give your AI assistants the keys to your ERP—securely, audibly, and on your terms.
Support & Documentation
For installation help, configuration questions, or feature requests, please contact:
This module is sold under the OPL-1 license. One license per Odoo instance. Updates and bug fixes are included for 12 months from purchase.
Odoo Proprietary License v1.0 This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Odoo Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file). You may develop Odoo modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Odoo Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one). It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software. The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Please log in to comment on this module