Security & Access

User Roles, Access Bundles, and Model Governance

Assign MCP User or Administrator access, expose exact Odoo models, and restrict permissions, fields, records, result sizes, and tools.

MCP permissions never replace Odoo security. The final result is always limited by the connected Odoo user and then reduced further by the MCP configuration.

Success: Recommended default Use a dedicated internal user, bundle enforcement, a read-only bundle, explicit model rows, and no export or write tools until the read workflow is validated.

MCP roles

RoleWhat the user can do
No AccessCannot use the MCP Server app or authenticate as an MCP user.
UserCan connect through approved authentication, use allowed tools, view own connections and audit logs, and manage owned prompts or dashboards subject to rules.
AdministratorCan configure settings, bundles, API keys, all connections and logs, public dashboards, and the safe module builder.

Assign the role from Settings > Users & Companies > Users > Access Rights > Niyu MCP.

Data-access modes

  • Use Each User's Odoo Access: the connected user receives only normal Odoo ACL and record-rule access. Access bundles are not enforced.
  • Restrict With MCP Access Bundles: users receive only models listed in assigned bundles, in addition to normal Odoo restrictions.

Create an access bundle

  1. Open MCP Server > Access Bundles and create a new record.
  2. Give it a purpose-specific name, for example Sales Assistant - Read Only.
  3. Assign the intended internal users.
  4. Choose the default model permission. Start with Read Only.
  5. Add exact installed Odoo models in Models & Permissions.
  6. Use Access Override on a model only to reduce the bundle default.
  7. Open a model row to configure field and record governance.
  8. Use Tool Controls to block tools such as export, chatter, create, write, or delete for this audience.

Permission presets

PresetReadUpdateCreateDelete
No AccessNoNoNoNo
Read OnlyYesNoNoNo
Read + UpdateYesYesNoNo
Read + Update + CreateYesYesYesNo
Full CRUDYesYesYesYes
CustomSelected individuallySelected individuallySelected individuallySelected individually

Model-level governance

  • Allowed Fields: optional allowlist. Empty means all non-sensitive fields the Odoo user may access.
  • Blocked Fields: hard deny list that remains hidden even if another assigned bundle is broader.
  • Forced Record Domain: JSON Odoo domain applied to reads, writes, deletes, analytics, exports, and chatter.
  • Maximum Records: per-model cap; zero uses the global MCP limit.
  • Tool Blocks: per-bundle hard deny applied during discovery and again during execution.

How multiple security layers combine

  1. Credential scope must allow the operation.
  2. The connected Odoo user must have the normal ACL and record-rule permission.
  3. The model must be available through the configured data-access mode.
  4. The effective bundle permission must allow the operation.
  5. The fields must survive allowlist, blocklist, and global sensitive-field filtering.
  6. Forced domains and record ceilings are applied, and the tool must not be blocked.