yt-mcp-server-odoo
YT MCP Server for Odoo
A Python MCP (Model Context Protocol) client that enables AI assistants like Claude, Cursor, and VS Code Copilot to interact with your Odoo ERP system.
Features
🔍 Search & Read - Query any Odoo model with natural language
✏️ Create & Update - Create and modify records via AI
🗑️ Delete - Remove records (with proper permissions)
📊 Bulk Operations - Create/update multiple records at once
🔢 Count & Browse - Count records or fetch by specific IDs
📝 Prompt Templates - Pre-defined prompts for common tasks
🔐 Secure - API key authentication with Odoo user permissions
Installation
Option 1: Local Development (Recommended)
# Navigate to the mcp_client directory
cd /path/to/yt_mcp_server/mcp_client
# Install in development mode
pip install -e .
# Or using uv
uv pip install -e .Option 2: Direct from Path
# Install directly from local path
pip install /path/to/yt_mcp_server/mcp_clientOption 3: Run without Installing
# Run directly with Python
cd /path/to/yt_mcp_server/mcp_client
python -m yt_mcp_server_odooConfiguration
Environment Variables
Variable | Required | Default | Description |
| Yes |
| Your Odoo instance URL |
| Yes | - | API key from MCP Server module |
| No | Auto-detect | Database name |
| No | - | Username (alternative to API key) |
| No | - | Password (alternative to API key) |
| No |
| Transport: |
| No |
| Host for HTTP transport |
| No |
| Port for HTTP transport |
| No |
| Default records per query |
| No |
| Maximum records per query |
| No |
| Max fields for smart selection |
| No |
| YOLO mode: |
IDE Setup Guides
Claude Desktop
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
Linux: ~/.config/Claude/claude_desktop_config.json
Option A: Using installed package
{
"mcpServers": {
"odoo": {
"command": "python",
"args": ["-m", "yt_mcp_server_odoo"],
"env": {
"ODOO_URL": "https://your-odoo.com",
"ODOO_API_KEY": "your-api-key-here",
"ODOO_DB": "your-database"
}
}
}
}Option B: Using local path directly
{
"mcpServers": {
"odoo": {
"command": "python",
"args": ["/path/to/yt_mcp_server/mcp_client/src/yt_mcp_server_odoo/__main__.py"],
"env": {
"ODOO_URL": "https://your-odoo.com",
"ODOO_API_KEY": "your-api-key-here",
"ODOO_DB": "your-database"
}
}
}
}Cursor
Location: ~/.cursor/mcp.json
{
"mcpServers": {
"odoo": {
"command": "python",
"args": ["-m", "yt_mcp_server_odoo"],
"env": {
"ODOO_URL": "https://your-odoo.com",
"ODOO_API_KEY": "your-api-key-here",
"ODOO_DB": "your-database"
}
}
}
}VS Code (with Copilot/Continue)
Location: .vscode/mcp.json in your workspace or ~/.vscode/mcp.json globally
{
"servers": {
"odoo": {
"command": "python",
"args": ["-m", "yt_mcp_server_odoo"],
"env": {
"ODOO_URL": "https://your-odoo.com",
"ODOO_API_KEY": "your-api-key-here",
"ODOO_DB": "your-database"
}
}
}
}Windsurf
Location: ~/.codeium/windsurf/mcp_config.json
{
"mcpServers": {
"odoo": {
"command": "python",
"args": ["-m", "yt_mcp_server_odoo"],
"env": {
"ODOO_URL": "https://your-odoo.com",
"ODOO_API_KEY": "your-api-key-here",
"ODOO_DB": "your-database"
}
}
}
}Zed
Location: ~/.config/zed/settings.json
{
"context_servers": {
"odoo": {
"command": {
"path": "python",
"args": ["-m", "yt_mcp_server_odoo"],
"env": {
"ODOO_URL": "https://your-odoo.com",
"ODOO_API_KEY": "your-api-key-here",
"ODOO_DB": "your-database"
}
}
}
}
}Custom/Programmatic
from yt_mcp_server_odoo import OdooMCPServer
from yt_mcp_server_odoo.config import OdooConfig
config = OdooConfig(
odoo_url="https://your-odoo.com",
odoo_api_key="your-api-key",
odoo_db="your-database"
)
server = OdooMCPServer(config)
server.run()Available MCP Tools
Tool | Description |
| List all MCP-enabled Odoo models |
| Search records with domain filters |
| Get a single record by ID |
| Create a new record |
| Update an existing record |
| Delete a record |
| Count records matching a domain |
| Get multiple records by IDs |
| Create multiple records at once |
| Update multiple records with different values |
| List available prompt templates |
Usage Examples
Once configured, ask your AI assistant:
"Show me all customers from Spain"
"Create a new contact named John Doe at Acme Corp"
"Find unpaid invoices from last month over $1000"
"Update the phone number for partner ID 42"
"How many products do we have in stock?"
"Delete the draft quotation SO0123"YOLO Mode (Development)
For development/testing, enable YOLO mode to bypass MCP model restrictions:
{
"env": {
"ODOO_YOLO": "read"
}
}Mode | Effect |
| Normal - only configured models accessible |
| Can read ANY model without MCP config |
| Full access to ALL models (dangerous!) |
⚠️ Warning: YOLO mode bypasses MCP restrictions but still respects Odoo user permissions.
Getting Your API Key
Go to Settings > MCP Server in Odoo
Click Manage API Keys
Create a new API key for your user
Copy the key (shown only once!)
Troubleshooting
Connection Failed
Check
ODOO_URLis accessibleEnsure MCP Server module is installed and enabled
Verify API key is valid
Model Not Found
Ensure model is enabled in MCP Server > Enabled Models
Check if YOLO mode should be enabled for development
Permission Denied
Verify API key user has access to the model
Check model permissions (read/write/create/delete)
License
LGPL-3.0