
Odoo XML-RPC MCP Server
A Model Context Protocol (MCP) server that provides tools for interacting with Odoo via XML-RPC.
Features
- Connect to any Odoo instance via XML-RPC
- Configurable project and environment parameters
- Environment variable support with priority over config files
- Complete set of Odoo operations: search, read, create, write, delete
- Integration with Claude Desktop and Claude Code
Development
Requirements
- Node.js 18+
- npm or yarn
Running Locally
npm run dev -- --project myproject --environment stagingBuilding
npm run buildTesting Connection
npm run dev -- --project idp --environment stagingnpm install -g .Before it works, you'll need: ODOO_URLODOO_DATABASEODOO_USERNAMEODOO_PASSWORD
Installation
Global Installation (Desktop MCP Server)
- Install globally using npm:
npm install -g .- Add to your Claude Desktop configuration (
~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"odoo-xmlrpc": {
"command": "odoo-xmlrpc-mcp-server",
"args": ["--project", "your_project", "--environment", "your_env"],
"env": {
"ODOO_URL": "https://your-odoo.domain.com",
"ODOO_DATABASE": "your_database",
"ODOO_USERNAME": "your_username",
"ODOO_PASSWORD": "your_password"
}
}
}
}Local Installation (Claude Code)
-
Clone or copy this repository to your project directory
-
Install dependencies:
npm install- Build the project:
npm run build- Create
.claude.jsonin your project root:
{
"mcp": {
"servers": {
"odoo-xmlrpc": {
"command": "node",
"args": ["./dist/index.js", "--project", "your_project", "--environment", "your_env"],
"env": {
"ODOO_URL": "https://your-odoo.domain.com",
"ODOO_DATABASE": "your_database",
"ODOO_USERNAME": "your_username",
"ODOO_PASSWORD": "your_password"
}
}
}
}
}Development
For development, you can run directly with tsx:
npm run dev -- --project your_project --environment your_envConfiguration
Config File Method
Create a configuration file at ~/.odoo_config/<project>_<environment>.conf:
[odoo]
url = https://your-odoo.domain.com
database = your_database
username = your_username
password = your_passwordEnvironment Variables (Priority)
Set these environment variables (they take priority over config files):
ODOO_URLODOO_DATABASEODOO_USERNAMEODOO_PASSWORD
Usage
Available Tools
odoo_search
Search for records in an Odoo model.
{
"model": "res.partner",
"domain": [["is_company", "=", true]],
"limit": 10
}odoo_read
Read specific records by ID.
{
"model": "res.partner",
"ids": [1, 2, 3],
"fields": ["name", "email", "phone"]
}odoo_create
Create a new record.
{
"model": "res.partner",
"values": {
"name": "New Company",
"is_company": true,
"email": "info@newcompany.com"
}
}odoo_write
Update existing records.
{
"model": "res.partner",
"ids": [123],
"values": {
"phone": "+1-555-0123"
}
}odoo_unlink
Delete records.
{
"model": "res.partner",
"ids": [456]
}odoo_search_count
Count records matching a domain.
{
"model": "res.partner",
"domain": [["is_company", "=", true]]
}odoo_fields_get
Get field definitions for a model.
{
"model": "res.partner",
"fields": ["name", "email"]
}odoo_search_read
Search and read in one operation.
{
"model": "res.partner",
"domain": [["is_company", "=", true]],
"fields": ["name", "email"],
"limit": 5
}No common issues documented yet. If you hit a problem, the repository's GitHub Issues page is the best place to look.
Licensed under MITโ you can use, modify, and redistribute it under that license's terms.
License
MIT License