Help

Troubleshooting and FAQ

Resolve endpoint, OAuth, tool-discovery, permission, CORS, key, export, and multi-database problems and answer common customer questions.

Troubleshoot from the outside inward: public URL and proxy, server enabled state, authentication, connected user, Odoo permissions, MCP bundle, fields and domain, limits, then the individual tool request.

Endpoint returns 404

  • Confirm niyu_mcp_server is installed in the selected database.
  • Restart Odoo after replacing module code.
  • Confirm Enable MCP Server is selected and saved.
  • Confirm the proxy forwards /mcp and does not route it to another service.
  • Open /mcp/docs and /mcp/api/v1/health from the public domain.

OAuth login succeeds but the client does not connect

  • Set Public Server URL to the exact HTTPS origin with no /mcp or trailing slash.
  • Verify discovery metadata uses the same issuer and resource URL throughout the flow.
  • Verify the reverse proxy sends the correct public host and protocol.
  • Check Audit Logs for oauth events and error descriptions.
  • Remove the client connection and reconnect after changing the public URL.

Client connects but sees no useful tools

  • Confirm the Odoo user has Niyu MCP User access.
  • In bundle mode, assign at least one active bundle containing exact model rows.
  • Confirm the user has normal Odoo read access to those models.
  • Check blocked tools and credential scopes.
  • Refresh or rescan the client after bundle or module changes.

A record or field is missing

  • Check the user company access, Odoo record rules, and the record in the normal Odoo UI.
  • Check the bundle allowed fields, blocked fields, forced domain, and per-model limit.
  • Sensitive fields are filtered even when not manually blocked.
  • Ask odoo_get_access_rights and odoo_model_fields for the effective explanation.

Write, create, or delete tools are absent or denied

  • The credential needs the matching scope.
  • The Odoo user needs the normal ACL permission.
  • The bundle default and model override must allow the operation.
  • The tool must not be blocked.
  • The target records must satisfy forced domains and record rules.

API key fails

  • Use the full secret beginning with niyu_mcp_ and send it as an Authorization Bearer value.
  • Check active, expiry, rotation grace, revocation, execution-user status, IP policy, and scope.
  • Generate a new key if the original was not copied when revealed.

CORS or browser-origin error

  • Add only the exact client origin needed under Allowed Browser Origins.
  • Do not confuse a browser origin with the Odoo MCP URL.
  • Restart or reconnect the client after changing origin policy.

Large request times out

  • Reduce fields, date range, domain, and result limit.
  • Use read_group, pivot, time-series, or top-N rather than loading raw records.
  • Use an asynchronous count or export job for larger bounded workloads.

Frequently asked questions

Does the MCP server bypass Odoo security?

No. Every request runs as an internal Odoo user and normal ACLs and record rules remain mandatory. MCP rules only reduce access further.

Does it require a separate cloud service?

No for the native server. It runs inside Odoo. Hosted AI clients still require a reachable public HTTPS endpoint. The local bridge is optional.

Can AI create, update, or delete records?

Yes only when credential scope, Odoo ACL, record rules, bundle permission, field policy, forced domains, limits, and tool controls all allow the operation.

Can it expose custom Odoo models?

Yes. Bundles select exact installed standard or custom models, except security-sensitive and MCP-internal models that are permanently blocked.

Which Odoo version does this guide cover?

This package and guide cover Odoo 19, module version 19.0.7.0.0.

Where is built-in server documentation?

Open MCP Server > Documentation or visit /mcp/docs. The JSON version is /mcp/docs.json.