Most Odoo MCP integrations I came across follow the same pattern: a separate Python process running on your machine (or in a Docker container), talking to Odoo over XML-RPC or JSON-RPC from the outside. It works, but you end up with credentials in env files, a second thing to deploy and keep alive, and no real visibility into what the AI did from inside Odoo.
I wanted something different, so I built muk_mcp — an open-source addon (LGPL-3) that makes Odoo itself the MCP server. No extra process, no middleware, no RPC bridge. The /mcp endpoint lives inside the registry and runs through the same ORM as everything else.
Install it, generate an MCP key from your user preferences, paste the URL into Claude Code, Claude Desktop, Cursor, Windsurf, Codex CLI, or OpenCode. The model gets 15 typed tools covering the full ORM lifecycle — model discovery, schema introspection, search, read, create, update, delete, grouped aggregation, chatter, and method execution.
Per-key scopes, rate limits, and audit log
Each key supports model-level scopes with separate read / write / create / delete permissions. Configurable rate limit per key (default 60 req/min). Every call lands in an audit log with method, tool, model, duration, and status.
Custom tools without leaving the UI
Custom tools can be added directly from the backend UI — name, description, JSON Schema for inputs, and Python in a sandboxed safe_eval context. No code deployment, no server restart. The connected client gets notified when the tool list changes.
Sessions are stateful per the MCP spec and clean themselves up after the configured timeout. Users can revoke their own sessions from preferences.
MCP-tagged chatter
Every chatter message authored by an MCP tool is tagged with a small MCP badge next to the author name, so it is immediately obvious which comments, status changes, and tracking entries came from an AI client and which came from a human.
Links
- GitHub: muk-it/odoo-modules — muk_mcp
- Download: apps.odoo.com/apps/modules/19.0/muk_mcp
- Watch: youtu.be/zpBTT46tJZ0
Would love feedback — what would you want from this kind of integration?



Top comments (0)