Ai Oca Mcp

ai_oca_mcp
REPOSITORY
REPOSITORYOCA/ai
GIT
GIThttps://github.com/OCA/ai.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/ai/tree/16.0/ai_oca_mcp
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYUncategorized
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Dixmit
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Dixmit
COMMITTERS
COMMITTERSEnric Tobella, Weblate, OCA-git-bot, oca-ci
WEBSITE
WEBSITEhttps://github.com/OCA/ai
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:12:02
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/ai:
    - ai_tool
odoo/odoo:
    - mail
    - base
    - base_setup
    - web
    - bus
    - web_tour
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module exposes Odoo AI tools as an MCP (Model Context Protocol) server, 
allowing external AI clients such as n8n or custom agents to call Odoo functions 
via the standardized MCP protocol. Authentication is handled via per-client API keys.

Note: Claude Desktop requires OAuth 2.0, which is not supported directly by this module.
An extension could be required.

Code Analysis

Views touched (9)
XML IDNameModelTypeStatus
mcp_server_form_view mcp.server form New
mcp_server_key_add_form_view mcp.server.key.add form Inherits mcp_server_key_form_view
mcp_server_key_form_view mcp.server.key form New
mcp_server_key_tree_view mcp.server.key tree New
mcp_server_log_form_view mcp.server.log form New
mcp_server_log_search_view mcp.server.log search New
mcp_server_log_tree_view mcp.server.log tree New
mcp_server_search_view mcp.server search New
mcp_server_tree_view mcp.server tree New
Models touched (4)

New fields (7)
  • active Boolean
    default=True
  • description Text
  • key Char
    copy=False default=<expr> groups='base.group_system' required=True
  • key_ids One2many → mcp.server.key
    string='Access Keys' args: 'mcp.server.key', 'server_id'
  • name Char
  • tool_ids Many2many → ai.tool
    domain=[('kind', '=', 'generic')] string='Tools' args: 'ai.tool'
  • url Char
    compute='_compute_url' groups='base.group_system'
Public methods (0)

No public methods.

New fields (7)
  • expiration_date Datetime
  • expired_on Datetime
    readonly=True
  • hashed_key Char
    copy=False
  • name Char
    required=True
  • server_id Many2one → mcp.server
    ondelete='cascade' required=True args: 'mcp.server'
  • state Selection
    default='active' args: [('active', 'Active'), ('expired', 'Expired')]
  • user_id Many2one → res.users
    default=<expr> args: 'res.users'
Public methods (1)
  • expire_key(self)

New fields (3)
  • key Char
    readonly=True string='Key to use'
  • key_id Many2one → mcp.server.key
    ondelete='cascade' required=True args: 'mcp.server.key'
  • server_id Many2one → mcp.server
    ondelete='cascade' required=True args: 'mcp.server'
Public methods (2)
  • expire_key(self)
  • generate_key(self)

New fields (6)
  • date Datetime
    default=fields.Datetime.now index=True
  • error Text
  • request Text
  • response Text
  • server_id Many2one → mcp.server
    ondelete='cascade' required=True args: 'mcp.server'
  • server_key_id Many2one → mcp.server.key
    ondelete='cascade' required=True args: 'mcp.server.key'
Public methods (0)

No public methods.

STATUS
STATUSOpen migration PR - not merged yet for this version
REPOSITORY
REPOSITORYOCA/ai
PULL REQUEST
PULL REQUEST [18.0] [MIG] ai_oca_mcp (#76)
STATUS
STATUSOpen migration PR - not merged yet for this version
REPOSITORY
REPOSITORYOCA/ai
PULL REQUEST
PULL REQUEST[MIG] ai_oca_mcp: migration to 17.0 (#85)