jason b58c496133 Fix ProxyAwareTransport: set self.verbose before parse_response
Transport.parse_response() accesses self.verbose for debug logging but
it is never initialized unless the standard single_request() flow runs.
Our custom request() bypassed that, causing AttributeError on every call.
Fix: assign self.verbose = verbose before calling self.parse_response().
2026-04-02 09:03:18 -05:00
2026-03-30 18:37:48 -05:00
2026-03-30 18:38:03 -05:00
2026-03-30 18:35:50 -05:00
2026-03-30 19:17:56 -05:00

Odoo Plugin Creation

Claude Cowork plugin that connects to MPM's Odoo V18 instance at mpmedia.odoo.com via the XML-RPC API. No Odoo-side modules required — upgrade safe.

Modules Covered

Module Odoo Model(s) Tools
Products product.template, product.product search, get, stock levels
Knowledge knowledge.article search, get, create, update
Contacts res.partner search, get, create
Sales sale.order search, get, create
CRM crm.lead search, get, create, update, list stages
Project project.project, project.task list, get, search tasks, create/update tasks
Helpdesk helpdesk.ticket search, get, create, update, list teams
Purchase purchase.order search, get (with line items)
Inventory stock.quant, stock.move search stock, moves, list locations
Employees hr.employee, hr.department search, get, list departments

Architecture

  • Transport: stdio (local Python process)
  • API: Odoo XML-RPC at /xmlrpc/2/ — no Odoo module needed
  • Auth: API key (generated per-user in Odoo profile → Account Security)
  • Compatible: Odoo V18 now; V19 JSON/2 API migration path available

Configuration

Credentials are stored in .mcp.json under the env block:

{
  "ODOO_URL": "https://mpmedia.odoo.com",
  "ODOO_DB": "mpmedia-odoo-sh-main-13285275",
  "ODOO_USERNAME": "bgilliom@mpmedia.tv",
  "ODOO_API_KEY": "your-api-key-here"
}

To rotate the API key: generate a new one in Odoo (My Profile → Account Security → API Keys), update .mcp.json, and rebuild the .plugin file.

Rebuilding the Plugin

After making changes to server/odoo_mcp.py, skills/, or .mcp.json:

cd /path/to/odoo-mpm && zip -r odoo-mpm.plugin . -x "*.DS_Store" -x "__pycache__/*" -x "*.pyc" -x ".git/*"

Then reinstall the .plugin file in Cowork.

V19 Upgrade Notes

When upgrading to Odoo V19, the XML-RPC endpoint remains available (removal scheduled for V22). To migrate to the new JSON/2 API, replace the _connect() and _call() functions in server/odoo_mcp.py with HTTP requests to /json/2/<model>/<method> using Bearer token auth.

S
Description
Odoo MCP plugin for Claude Cowork — connects to mpmedia.odoo.com covering Products, Knowledge, Contacts, Sales, CRM, Project, Helpdesk, Purchase, Inventory, and Employees.
Readme 100 KiB
Languages
Python 100%