Odoo MCP Server
Provides tools and resources to interact with Odoo ERP, including executing custom methods on models, searching employees, querying holidays, and browsing models, records, and search results.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Odoo MCP Serversearch for employee named Jane"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Odoo MCP Server with HTTP Streamable Transport
A comprehensive MCP (Model Context Protocol) server for interacting with Odoo ERP systems, supporting both stdio and HTTP streamable transports for maximum flexibility and integration options.
🚀 Features
Core Functionality
Dual Transport Support: Both stdio and HTTP streamable transports
Comprehensive Odoo Integration: Full access to Odoo models, records, and methods
Resource-based API: Browse models, records, and search results as MCP resources
Tool-based API: Execute custom methods, search employees, and query holidays
Real-time Streaming: Server-Sent Events (SSE) support for HTTP transport
Session Management: Stateful and stateless HTTP session options
Transport Options
Stdio Transport: Traditional stdin/stdout for direct MCP client integration
HTTP Streamable Transport: RESTful HTTP API with optional SSE streaming
Flexible Configuration: Stateful/stateless modes, JSON responses, CORS support
Developer Experience
Hot Reload Development Server: Automatic restart on code changes
Comprehensive Testing: Unit, integration, and end-to-end tests
Health Monitoring: Built-in health checks and diagnostics
Production Ready: Docker support, systemd services, Kubernetes deployment
Related MCP server: MCP Odoo Server
Tools
execute_method
Execute a custom method on an Odoo model
Inputs:
model(string): The model name (e.g., 'res.partner')method(string): Method name to executeargs(optional array): Positional argumentskwargs(optional object): Keyword arguments
Returns: Dictionary with the method result and success indicator
search_employee
Search for employees by name
Inputs:
name(string): The name (or part of the name) to search forlimit(optional number): The maximum number of results to return (default 20)
Returns: Object containing success indicator, list of matching employee names and IDs, and any error message
search_holidays
Searches for holidays within a specified date range
Inputs:
start_date(string): Start date in YYYY-MM-DD formatend_date(string): End date in YYYY-MM-DD formatemployee_id(optional number): Optional employee ID to filter holidays
Returns: Object containing success indicator, list of holidays found, and any error message
Resources
odoo://models
Lists all available models in the Odoo system
Returns: JSON array of model information
odoo://model/{model_name}
Get information about a specific model including fields
Example:
odoo://model/res.partnerReturns: JSON object with model metadata and field definitions
odoo://record/{model_name}/{record_id}
Get a specific record by ID
Example:
odoo://record/res.partner/1Returns: JSON object with record data
odoo://search/{model_name}/{domain}
Search for records that match a domain
Example:
odoo://search/res.partner/[["is_company","=",true]]Returns: JSON array of matching records (limited to 10 by default)
📋 Quick Start
Installation
git clone <repository-url>
cd mcp-odoo-http-streamable
pip install -e .Configuration
Set your Odoo connection details:
export ODOO_URL="https://your-odoo-instance.com"
export ODOO_DB="your_database_name"
export ODOO_USERNAME="your_username"
export ODOO_PASSWORD="your_password"Running the Server
Stdio Transport (for MCP clients like Claude Desktop)
python run_server.py --transport stdioHTTP Streamable Transport (for web applications)
# Basic HTTP server with sessions and SSE
python run_server.py --transport streamable-http --port 3000
# Stateless HTTP server (better for scaling)
python run_server.py --transport streamable-http --port 3000 --stateless
# JSON response mode (no SSE streams)
python run_server.py --transport streamable-http --port 3000 --json-response📚 Documentation
Transport Configuration - Detailed transport setup and options
API Reference - Complete API documentation
Deployment Guide - Production deployment instructions
Development Guide - Contributing and extending the server
🛠️ Development
Setup Development Environment
# Quick setup with script
./scripts/setup_dev.sh
# Or manual setup
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
pip install -e ".[dev]"Development Commands
# Start development server with hot reload
python scripts/dev_server.py --transport streamable-http
# Run tests with coverage
python scripts/test_runner.py --type unit --coverage
# Health check
python scripts/health_check.py
# Format and lint code
python scripts/test_runner.py --format --lintConfiguration Details
Environment Variables
# Required Odoo Configuration
export ODOO_URL="https://your-odoo-instance.com"
export ODOO_DB="your_database"
export ODOO_USERNAME="your_username"
export ODOO_PASSWORD="your_password"
# Optional Configuration
export ODOO_API_KEY="alternative_to_password"
export MCP_LOG_LEVEL="INFO"
export MCP_HOST="127.0.0.1"
export MCP_PORT="3000"Usage with Claude Desktop
Add this to your claude_desktop_config.json:
{
"mcpServers": {
"odoo": {
"command": "python",
"args": [
"-m",
"odoo_mcp"
],
"env": {
"ODOO_URL": "https://your-odoo-instance.com",
"ODOO_DB": "your-database-name",
"ODOO_USERNAME": "your-username",
"ODOO_PASSWORD": "your-password-or-api-key"
}
}
}
}Docker
{
"mcpServers": {
"odoo": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"ODOO_URL",
"-e",
"ODOO_DB",
"-e",
"ODOO_USERNAME",
"-e",
"ODOO_PASSWORD",
"mcp/odoo"
],
"env": {
"ODOO_URL": "https://your-odoo-instance.com",
"ODOO_DB": "your-database-name",
"ODOO_USERNAME": "your-username",
"ODOO_PASSWORD": "your-password-or-api-key"
}
}
}
}Installation
Python Package
pip install odoo-mcpRunning the Server
# Using the installed package
odoo-mcp
# Using the MCP development tools
mcp dev odoo_mcp/server.py
# With additional dependencies
mcp dev odoo_mcp/server.py --with pandas --with numpy
# Mount local code for development
mcp dev odoo_mcp/server.py --with-editable .Build
Docker build:
docker build -t mcp/odoo:latest -f Dockerfile .Parameter Formatting Guidelines
When using the MCP tools for Odoo, pay attention to these parameter formatting guidelines:
Domain Parameter:
The following domain formats are supported:
List format:
[["field", "operator", value], ...]Object format:
{"conditions": [{"field": "...", "operator": "...", "value": "..."}]}JSON string of either format
Examples:
List format:
[["is_company", "=", true]]Object format:
{"conditions": [{"field": "date_order", "operator": ">=", "value": "2025-03-01"}]}Multiple conditions:
[["date_order", ">=", "2025-03-01"], ["date_order", "<=", "2025-03-31"]]
Fields Parameter:
Should be an array of field names:
["name", "email", "phone"]The server will try to parse string inputs as JSON
License
This MCP server is licensed under the MIT License.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-qualityDmaintenanceEnables AI assistants to interact with Odoo ERP systems through XML-RPC communication. Provides access to Odoo models, records, methods, and data structures for comprehensive ERP integration.Last updated2MIT
- Alicense-qualityDmaintenanceEnables AI assistants to interact with Odoo databases via XML-RPC and JSON-RPC for performing CRUD operations and managing modules. It supports advanced features like domain-based searching, field metadata inspection, and administrative task execution.Last updated27MIT
- Alicense-qualityDmaintenanceEnables seamless interaction with Odoo instances through the Model Context Protocol, supporting CRUD operations, custom method execution, and real-time updates. It offers versatile communication via stdio and HTTP protocols, including support for streaming and Server-Sent Events.Last updated8MIT
- Flicense-qualityDmaintenanceEnables interaction with Odoo instances via XML-RPC, supporting CRUD operations and custom model queries through natural language.Last updated
Related MCP Connectors
Query FDA data on drugs, food, devices, and recalls via openFDA. STDIO or Streamable HTTP.
Query SEC EDGAR filings, XBRL financials, and company data through MCP. STDIO & Streamable HTTP.
Hosted NeuroDock — stateless communication and planning tools over OAuth-secured Streamable HTTP.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/thanhnc261/mcp-odoo-http-streamable'
If you have feedback or need assistance with the MCP directory API, please join our Discord server