Repository
OCA/ai · module folder · Try on Runboat
Module version
1.0.0
Category
Uncategorized
Folder size
0.09 MB
License
AGPL-3
Application
No
Auto-installable
No
Website
https://github.com/OCA/ai
Last tracking update
2026-08-07 08:09:28
Authors
Odoo Community Association (OCA), Dixmit
Maintainers
Odoo Community Association (OCA), Dixmit
Committers
Enric Tobella, Weblate, OCA-git-bot, oca-ci
Odoo dependencies
OCA/ai:
odoo/odoo:
- web
- bus
Python dependencies
None
System dependencies
None
Required by
None
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
HTTP endpoints (1)
Route(s)HandlerAuthTypeMethodsFlags
/mcp/<string:key> McpController.mcp_endpoint none http POST csrf off sudo
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
Open migration PR — not merged yet for this version
CI status
checks failing
Open since
52 days ago
Last activity
52 days ago
Repository
OCA/ai
Pull request
[MIG] ai_oca_mcp: migration to 17.0 (#85)
Status
Open migration PR — not merged yet for this version
CI status
checks failing
Open since
76 days ago
Last activity
7 days ago
Repository
OCA/ai
Pull request
[18.0] [MIG] ai_oca_mcp (#76)
Status
Open migration PR — not merged yet for this version
CI status
green — ready to merge
Open since
7 days ago
Last activity
7 days ago
Repository
OCA/ai
Pull request
[19.0][MIG] ai_oca_mcp (#102)