v0.3.0
v0.3.0
The Odoo MCP that survives Odoo 20. Five-minute install. Zero Odoo-side setup.
Added
aggregate_records— server-side groupby/aggregation viaformatted_read_group(Odoo 19+) orread_group(16-18). Supportssum,avg,min,max,count,count_distinct,array_agg,bool_and,bool_or.chatter_post— post messages onmail.threadrecords. Two safety modes: default approval-token preview/execute flow, or direct mode viaMCP_CHATTER_DIRECT=1. Supportsmessage_type,subtype_xmlid,partner_ids,attachment_ids.- Smart field selection for
search_recordsandread_record— when the caller omitsfields, the server picks a curated subset (business identifiers + state + key relations) and excludes audit, message, activity, binary, and unstored-compute columns. Passfields=[\"*\"]to opt out. Cap configured viaODOO_MCP_MAX_SMART_FIELDS(default 15). ODOO_LOCALE— when set, every Odoo call getscontext.langinjected automatically. Caller-suppliedcontext.langalways wins.- Structured logging —
setup_logging()readsODOO_MCP_LOG_LEVEL,ODOO_MCP_LOG_JSON, andODOO_MCP_LOG_FILE. JSON formatter and rotating file handler use the standard library only. - Surfaced
chatter_direct_enabledposture inruntime_security_reportandhealth_check. - Extended JSON-2 positional argument mappings for
read_group,formatted_read_group, andmessage_post. - Smithery server config (
smithery.yaml) and GHCR multi-arch Docker publish workflow.
Changed
search_recordsandread_recordresponses now includesmart_fields_appliedandfields_used.- Tool count surfaced by `health_check` is now 24 (was 22 in v0.2.0).
- `OdooClient.init` accepts an optional `lang` argument that drives the locale-injection pipeline.
Compatibility
- No breaking changes for existing callers. Default behaviour for `search_records` / `read_record` shifts from "all fields" to "smart subset" — pass `fields=["*"]` to restore the prior behaviour.
- New env vars: `ODOO_LOCALE`, `ODOO_MCP_MAX_SMART_FIELDS`, `ODOO_MCP_LOG_LEVEL`, `ODOO_MCP_LOG_JSON`, `ODOO_MCP_LOG_FILE`, `MCP_CHATTER_DIRECT`.
Install
```bash
uvx odoo-mcp --health
or
pip install odoo-mcp==0.3.0
or
docker pull ghcr.io/tuanle96/mcp-odoo:0.3.0
```
Full changelog: CHANGELOG.md