Skip to content

v0.3.0

Choose a tag to compare

@tuanle96 tuanle96 released this 04 May 08:10
· 44 commits to main since this release

v0.3.0

The Odoo MCP that survives Odoo 20. Five-minute install. Zero Odoo-side setup.

Added

  • aggregate_records — server-side groupby/aggregation via formatted_read_group (Odoo 19+) or read_group (16-18). Supports sum, avg, min, max, count, count_distinct, array_agg, bool_and, bool_or.
  • chatter_post — post messages on mail.thread records. Two safety modes: default approval-token preview/execute flow, or direct mode via MCP_CHATTER_DIRECT=1. Supports message_type, subtype_xmlid, partner_ids, attachment_ids.
  • Smart field selection for search_records and read_record — when the caller omits fields, the server picks a curated subset (business identifiers + state + key relations) and excludes audit, message, activity, binary, and unstored-compute columns. Pass fields=[\"*\"] to opt out. Cap configured via ODOO_MCP_MAX_SMART_FIELDS (default 15).
  • ODOO_LOCALE — when set, every Odoo call gets context.lang injected automatically. Caller-supplied context.lang always wins.
  • Structured loggingsetup_logging() reads ODOO_MCP_LOG_LEVEL, ODOO_MCP_LOG_JSON, and ODOO_MCP_LOG_FILE. JSON formatter and rotating file handler use the standard library only.
  • Surfaced chatter_direct_enabled posture in runtime_security_report and health_check.
  • Extended JSON-2 positional argument mappings for read_group, formatted_read_group, and message_post.
  • Smithery server config (smithery.yaml) and GHCR multi-arch Docker publish workflow.

Changed

  • search_records and read_record responses now include smart_fields_applied and fields_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