odoo_search_readLABSCO SUMMARY
The ORM verbs, not a curated subset — including the generic method call.
Search, read, create, write and unlink cover any model in the database, and odoo_call_method reaches the business methods behind the buttons in the Odoo UI. That is real power and real reach: the credentials you configure are an Odoo login, and delete works on every model that account can touch, so give it a user scoped to what you actually want reachable.
What it is
A Python server that puts a standard interface in front of an Odoo instance. Records are addressable as resources under odoo://{model}/{id} URIs, including binary fields, and the tools map onto Odoo's own ORM verbs rather than inventing a new vocabulary.
What you get
odoo_search_readsearches a model with an Odoo domain and returns the fields you nameodoo_readfetches specific record ids;odoo_createcreates a record from a values dictionaryodoo_writeupdates records in place andodoo_unlinkdeletes themodoo_call_methodcalls any method on a model, such as action_confirm, for the operations the CRUD verbs do not cover- Records, record lists and binary fields are exposed as resources over
odoo://URIs - Session management, rate limiting and CORS handling are built in
- Three transports: stdio, classic HTTP POST, and streamable HTTP with chunked responses; SSE is available at GET /sse
Requirements
Python 3.9+ and Odoo 15.0+ with the base, web and bus modules installed and an admin user configured. Configuration lives in odoo_mcp/config/config.json, copied from the example, but environment variables always win: ODOO_URL, ODOO_DB, ODOO_USER, ODOO_PASSWORD, plus PROTOCOL (xmlrpc or jsonrpc), CONNECTION_TYPE and LOGGING_LEVEL. The Python package is mcp-odoo-panda, version 0.1.1, with the entry point odoo-mcp-server; Docker Compose is included and serves HTTP on port 8080. Claude Desktop must use stdio.
Setup effort
Build from source — git clone https://github.com/pandeussilvae/mcp-odoo-panda.git
USE CASES
Answering a question about live business data
Search a model with a domain filter and read back only the fields you need.
Creating a record without opening Odoo
Build the values from the conversation and create the record directly.
Correcting a batch of records
Find the affected ids, then write the same change across them.
Triggering a workflow step
Call the model method behind the button rather than replicating what it does.
Serving several clients from one instance
Run it in streamable HTTP mode and point clients at POST /mcp instead of spawning a process each.
6 tools
Listed in project docs. Your client may show a different list.
odoo_readodoo_createodoo_writeodoo_unlinkodoo_call_methodBEFORE YOU INSTALL
What to know first
Tools you get
6 tools named in the project's documentation.
Requires
- Python 3.9+
- ODOO_PASSWORD in your environment
- ODOO_USER in your environment
Where it runs
The documented client runs the server on your machine.
INSTALLATION
Connect your client
Server setup
# Clone the repository
git clone https://github.com/pandeussilvae/mcp-odoo-panda.git
cd mcp-odoo-panda
# Install dependencies
pip install .
# To install with caching support
pip install .[caching]
# To install with development tools
pip install .[dev]
# Copy the example configuration file
cp odoo_mcp/config/config.example.json odoo_mcp/config/config.json
# Edit config.json with your settings
# nano odoo_mcp/config/config.jsonMCP Clients
Claude Desktop
{
"mcpServers": {
"odoo-mcp": {
"command": "python",
"args": [
"-m",
"odoo_mcp.server",
"<YOUR_PATH_TO_CONFIG>"
]
}
}
}The configuration on this page does not set ODOO_PASSWORD and ODOO_USER; the project's instructions put them in a .env file. Check which folder the server reads that file from before you rely on it.