All notable changes to the Odoo Rust MCP Server are documented here.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Fall back to Odoo's web-session authentication when legacy JSON-RPC authentication is rejected by request-context-dependent custom addons.
- Publish the fallback in the Windows, Linux, and macOS release builds.
- Add cached per-instance installed-module snapshots with TTL, explicit refresh, and stale-on-failure preservation.
- Add optional tool
packandrequiredModulesmetadata, per-instancedisabledPacks, module-aware discovery/call filtering, and metadata-only denial audit events. - Add an ignored live Odoo module-gating smoke test and a short developer scope ADR.
- Add
odoo_execute_capability, a closed HMAC-signed mutation envelope with exact registry/target binding, schema validation, crash-safe idempotency, runtime receipts, and post-write verification. - Add the version-neutral
oc_mcp_mutationOdoo helper for row-locked, ACL-aware allowed-field draft updates with stale-write rejection; correct quotation tax/UoM mappings for Odoo 17/18 versus 19. - Hide and reject generic mutation and cleanup tools when
ODOO_CAPABILITY_CONTROLLED_MODE=true. - Require both write and cleanup flags for cleanup tools, and default every cleanup path to dry-run.
- Propagate legacy JSON-RPC context and never retry transport-uncertain mutations on either Odoo protocol.
- Gate
odoo_executeseparately withODOO_ENABLE_EXECUTE_TOOL, require a per-instance allowlist, and honor instancereadOnlyfor mutating tools. - Log only model and record-id count alongside existing metadata; never tool arguments or results.
- Runtime tool catalog drift import support for Config UI tool management.
- Improved Config UI handling for tool catalog updates and persisted tool metadata.
- Best-practice Dependabot configuration (supporting GitHub Actions, Cargo, NPM, Docker, and Helm updates).
- Support for remote localhost/127.0.0.1 origins (port 3008) in default.json capability to allow Tauri API access.
- Fixed unclickable documentation sidebar link by unconditionally intercepting external links and delegating them to the system default browser.
- Fixed double-opening of external links in Tauri desktop app by rendering external navigation entries as plain buttons inside the webview.
- Native Windows Tauri desktop application packaging
- System tray integration with window toggle, docs, config folder, and server restart
- MCP client connectivity panel in Config UI Overview tab
- Clipboard-copy shortcut for MCP HTTP/SSE endpoints from system tray
- Fixed sidecar process restart bug where multiple instances could bind to the same port
- Display application version in the Config UI footer bar
- Version badge showing current release across all UI tabs
- Updated dependency versions across Rust and TypeScript stacks
- Config UI rewrite with Mantine 9, Vite, and React 19
- Operations Overview landing page with config summary metrics
- Dual-view instances management (card + table modes)
- Right-side drawer editing for instances and prompts
- Persisted collapsible sidebar (icon rail on collapse)
- Light/Dark/Auto theme selector (default: Auto)
- Keyboard shortcut panel (? shortcut)
- Runtime env sync status card in Server tab
- Documentation entry in sidebar (opens /docs/ in new tab)
- Rust Hexagon app mark as shared product identity
- Simplified Lite workflow profile as the default Agentic Kanban profile
- quieter UI typography with Geist Sans/Mono at 400–500 weight
- Tailwind removed from active Config UI runtime
- Windows shortcut launcher: serialize
cargo buildwith lock file to avoid contention install.ps1: copy shortcut files toProgram Filesso.lnkworks outside extracted ZIP
- Windows release ZIP now includes
install.ps1, native.lnk, and WSL shortcuts
- Migrated to new dual-instance sync mechanism via
ODOO_INSTANCES_JSONenv var
- Initial public release
- Config UI with React 18, Vite, Tailwind CSS
- Odoo 19+ JSON-2 API support (API key auth)
- Odoo <19 JSON-RPC support (username/password auth)
- Multi-instance connection pooling
- Guard-based tool access (write tools, cleanup tools)
- Rust backend with MCP stdio, HTTP, and WebSocket transports