Odoo MCP Studio - AI React App, Module & EChart Builder
by Codemarchant https://codemarchant.com$ 352.64
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
Discuss (mail)
|
| Lines of code | 9887 |
| Technical Name |
odoo_remote_mcp |
| License | OPL-1 |
| Website | https://codemarchant.com |
| Versions | 16.0 17.0 18.0 19.0 |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
Discuss (mail)
|
| Lines of code | 9887 |
| Technical Name |
odoo_remote_mcp |
| License | OPL-1 |
| Website | https://codemarchant.com |
| Versions | 16.0 17.0 18.0 19.0 |
Odoo MCP Studio
AI React App, Module & EChart Builder — Powered by Remote MCP
Connect AI agents like Claude, Gemini, and ChatGPT to your Odoo instance. Build full-stack web applications, custom data modules, interactive dashboards, and automate workflows — all through natural conversation.
Four Powerful Pillars
Remote MCP Server
14 built-in tools with OAuth 2.1 security, granular access control, and comprehensive audit logging. No local installation required.
AI Web App Builder
AI generates complete multi-page React applications with routing, API endpoints, user storage, and public sharing — directly inside Odoo.
AI Module Builder
AI creates custom Odoo data modules with models, fields, views, and security rules — packaged as ZIP and installed via base_import_module.
EChart Dashboard Builder
Describe what you want to visualize and AI builds interactive Apache ECharts dashboards with live Odoo data — from bar charts to 3D globes.
modelcontextprotocol.io/docs/develop/connect-remote-servers
github.com/Codemarchant/odoo_mcp_app_library
Play Demo Games:
codemarchant.com/mcp/webapp/game-vault
AI Builds a Complete Game in Under 60 Seconds
Watch Claude create a fully playable Snake game — from prompt to playing in under a minute
Challenge mode: AI creates a full-featured Snake game with one prompt — under 60 seconds from start to playing
How It Works
Install Module
Install from Odoo Apps
Add MCP Users
From user access rights, assign MCP Admin to yourself, MCP User to others
Configure Access
Navigate to MCP Server menu, set tool allowlists and model restrictions
Connect AI Client
Add your Odoo /mcp URL in your AI client
See It in Action
Watch how AI agents interact with Odoo through the MCP Server
Quick Start: Connect Your AI Agent
Works with any remote OAuth MCP-compatible AI agent. Replace the example URL with your Odoo instance URL + /mcp
Claude Code CLI
Add MCP server:
claude mcp add odoo --transport http https://your-odoo.com/mcp
Within Claude CLI, use /mcp command and authenticate
Claude Desktop / Claude.ai
Settings → Connectors → Add Custom Connector
https://your-odoo.com/mcp
Browser opens for OAuth → Authorize → Ready
Gemini CLI
Edit ~/.gemini/settings.json:
{
"mcpServers": {
"odoo": {
"url": "https://your-odoo.com/mcp"
}
}
}
Within Gemini CLI, use /mcp command and authenticate
ChatGPT (Developer Mode)*
Settings → Apps → Advanced → Enable Developer Mode → Create App
https://your-odoo.com/mcp
platform.openai.com/docs/guides/developer-mode
Optional: Install ripgrep for faster code search
# Ubuntu/Debian
sudo apt install ripgrep
# macOS
brew install ripgrep
Testing without HTTPS (ngrok)
# Expose local Odoo (port 8069) via HTTPS tunnel
ngrok http 8069
Set ngrok URL as web.base.url in System Parameters
Feature Documentation
Explore each feature in detail
Seamless AI Integration
Once connected, AI agents naturally interact with your Odoo data through conversation. Ask questions, create records, run reports, and automate workflows — all through natural language.
"Find all open sales orders for customer X"
"Create 10 new dummy test contacts with this theme for a demo"
"Show me how sale order discounts are calculated in our pricing module using code search tool"
"What products are low on stock?"
"Confirm SO/00042, send a message to the customer, and reassign to salesperson Jane"
"Identify our top 10 customers by revenue and their most purchased products"
Claude using MCP tools to batch create contacts in Odoo
Configuration Dashboard
The main configuration page serves as your command center. Access all settings, monitor connections, and manage security from a dedicated app menu.
- Global enable/disable switch for the MCP server
- Smart buttons for quick navigation to clients, tokens, and execution logs
- Real-time connection status and endpoint URL display
- Configurable token expiry and session timeouts
- Execution logging with adjustable retention periods
- Automatic cleanup via scheduled actions
Main configuration page: Server settings, smart navigation buttons, and OAuth configuration
Tool Settings
Configure code execution limits, search result caps, and toggle detailed execution logging.
Tool Settings: Execution limits and logging options
Connection Settings
Self-documenting module with connection details and access token management.
Connection Settings: Token expiry and session configuration
Per-Tool Access Control
Precisely control which users can execute each tool, from safe read-only operations to powerful code execution.
Read Tools
Auto-enabled for all MCP users
Write Tools
Require explicit allowlist membership
Execute Tools
Restricted to trusted power users
Tool allowlists: Read tools (auto-enabled) and Write/Execute tools with user selection
Model & Field Restrictions
Create fine-grained restrictions at the model and field level. Protect sensitive business data
by blocking AI access to specific models or fields. Applies to:
list_models, get_model_schema, search_read,
read_record, create_record, update_record,
delete_record, and execute_method.
Does not restrict execute_orm, create_echart, manage_webapp,
or manage_module which execute arbitrary code.
Model Restrictions
- Create restriction groups for different user types
- Block specific CRUD operations per model
- Apply globally or to specific users
- Mass-add models via wizard
Field Restrictions
- Hide sensitive fields from AI responses
- Protect passwords, API keys, personal data
- Per-field CRUD control
- Works alongside Odoo's native ACLs
Model Access tab: Create and manage model restriction groups with user assignments
Model Group form: Configure restricted models with blocked CRUD operations
Model Group form: Configure restricted fields per toolset
Enterprise-Grade Security
OAuth 2.1 + PKCE
Proof Key for Code Exchange prevents authorization code interception.
Token Rotation
Refresh tokens rotated on each use, limiting stolen token windows.
Audience Binding
RFC 8707 resource indicators bind tokens to your MCP server URL.
Scope-Based Access
OAuth scopes (read, write, execute) plus offline_access for refresh tokens.
Model-Level Restrictions
Block AI access to sensitive models like accounting or HR.
Field-Level Restrictions
Hide passwords, API keys, or personal data from AI agents.
OAuth consent screen: Clear permission display with authorize/deny actions
Complete Audit Trail
Every tool invocation is captured with full parameter/result logging, timing metrics, and user attribution.
User & Client
Parameters
Results
Timing
Execution log: Full audit trail with tool name, parameters, results, timing, and IP address
Reusable Prompt Templates
Create standardized prompts that appear as selectable commands in AI clients.
Define argument placeholders with {{variable}} syntax and control visibility across your organization.
Template Features
- Argument placeholders with defaults
- Required and optional parameters
- Rich text prompt content
Sharing Options
- Private: Only you can see it
- Shared: Specific users
- Public: All MCP users
Prompt template form: Define prompts with arguments, descriptions, and visibility settings
Templates in Claude: Prompts appear as selectable commands with argument inputs
14 Powerful Tools
Everything AI agents need to interact with Odoo
Read Tools (Auto-enabled)
- list_models — Discover models with regex filtering
- get_model_schema — Get field definitions with filters
- search_read — Search records with domain filters
- read_record — Read single record by ID
Binary fields automatically returned as embedded resources
Write Tools (Allowlist Required)
- create_record — Create one or more records
- update_record — Bulk update with same or different values
- delete_record — Delete records by ID
- execute_method — Call model methods (action_confirm, etc.)
Protected by user allowlists and model restrictions
Code Tools (Allowlist Required)
- code_search — Search addon source with ripgrep
- code_read — Read source files with pagination
Ripgrep integration for blazing fast searches
Advanced Tools (Restricted)
- execute_orm — Execute Python code with safe_eval
- create_echart — Create persistent ECharts dashboards
- manage_webapp — Create and manage React web applications
- manage_module — Create and install custom Odoo data modules
Full ORM access — only for trusted users
Technical Details
MCP Protocol
Implements MCP 2025-11-25 with Streamable HTTP transport
OAuth Discovery
RFC 8414 authorization server and RFC 9728 protected resource metadata
Resource Templates
MCP resource templates for attachments and binary fields
Ripgrep Integration
Optional ripgrep for 10x faster code searches (Python fallback included)
Multi-Database Support
For environments with multiple databases on a single Odoo URL, use path-based routing.
Configuration Required
Add to odoo.conf:
server_wide_modules = web,base,odoo_remote_mcp
Connection URL Format
Include database name in path:
https://your-odoo.com/<database>/mcp
AI-Powered Web Application Builder
Describe what you want — AI builds complete, multi-page React web applications directly inside Odoo. From games to business dashboards, portals to internal tools. Full-stack applications with routing, API endpoints, persistent user storage, and granular access control — all generated through natural conversation. Organize apps with tags, track view counts, and create custom URL slugs for memorable, shareable links.
React 19 + Router 6
Multi-page SPAs with client-side routing
API Endpoints
Custom Python-powered REST APIs
Share Anywhere
Public, portal, or internal user access
Web Application Form View
Every AI-generated web application is stored as a fully editable Odoo record. Inspect and modify pages, endpoints, shared components, global state, CDN dependencies, and sharing settings — all from the familiar Odoo form view.
Neon Drift: Arcade Shooter — walkthrough of the webapp form view showing pages, endpoints, components, and settings
What You Can Build
Games, business apps, portals, dashboards — anything you can describe
Games & Interactive Apps
AI can build complete games with scoring, statistics tracking, and persistent high scores. The Snake game below was generated in a single prompt — complete with game statistics and graph visualizations.
Snake game: Full gameplay with statistics dashboard showing score history and performance graphs
Business Applications & Portals
Build complete business applications with multi-page navigation, live Odoo data, customer filtering, order management, and full CRUD operations through custom API endpoints.
Sales Dashboard: Multi-page navigation, sales statistics, customer browsing, order filtering, and creating a new sale order with dynamic product lines
Zero Build Step Architecture
Web applications require no build step, no compilation, and no bundling.
React 19 and React Router 6 are loaded via ESM from CDN, JSX is compiled in the browser by Babel Standalone,
and Tailwind CSS is included via CDN. This means AI-generated apps run immediately — no
npm install, no webpack, no CI/CD pipeline.
The entire application is stored as plain text fields in Odoo, making it fully portable,
exportable, and editable without any development tooling.
Configuration & Management
Full control over your web applications through Odoo's familiar interface. Export applications for deployment across instances, and open them directly from the form view.
Snake Game form view: Basic settings with Export and Open App buttons
Export & Deployment
Export
Generates a standard Odoo-formatted CSV file containing all app data — pages, endpoints, components, settings, and external IDs. CSV format supports unlimited code size (unlike XLSX which has cell limits).
Staging → Production: Export on staging, then import the CSV on production. External IDs allow Odoo to match and update existing records on subsequent imports — no need to delete and recreate.
Backup & Restore: Export regularly to save working versions. If something breaks, reimport the CSV to restore your application.
Note: Exports include app structure only (pages, endpoints, settings) — User Storage data is excluded, so production user data is never overwritten on reimport. If pages or endpoints were removed on staging, reimporting will not delete them on production — they remain as orphans and need manual cleanup. Do not delete the webapp record to avoid this, as that would destroy all User Storage data.
Custom API Endpoints
Each web application can define custom REST API endpoints with Python handlers. Support for GET, POST, PUT, and DELETE methods with dynamic route parameters — enabling full CRUD operations and complex business logic directly from the frontend.
Sales Dashboard API endpoints: Confirm orders, cancel orders, and more — each powered by server-side Python with full Odoo ORM access
Sharing & Public Access
Control who can access your web applications. Share with specific users, user groups, portal users, or make applications fully public. Public applications can be linked directly from your website for anyone to access without an Odoo login.
Ping Pong game sharing: "Shared with Groups" set to Public, making the app accessible to anyone with the link — add the URL to your website for public access
Embed Web Apps on Any Website
Embed any web application on your website, portal, or intranet using a simple iframe. A ready-to-use embed code with one-click copy is available in the Sharing tab of every web application.
One-Click Embed Code
Every web application includes a computed embed code in the Sharing tab. Simply copy the iframe snippet and paste it into your website HTML.
<iframe
src="https://your-odoo.com/mcp/webapp/my-app"
width="100%"
height="700"
style="border: none;"
loading="lazy">
</iframe>
Slug URLs — Use clean URLs like /mcp/webapp/my-app instead of numeric IDs
Public Access — Add the "Public" group in Sharing tab for external websites (no login required)
Key Capabilities
- Multi-page routing — React Router 6 with dynamic URL parameters
- Global state management — Shared state across all pages
- Persistent user storage — 5MB per user with offline fallback via localStorage
- Shared components — Reusable JSX functions across all pages
- Tailwind CSS — Built-in styling framework (optional)
- CDN dependencies — Import any npm library via ESM
- Server-side data — Python data fetching with full ORM access
- User context — Built-in user info (name, role, company) for personalization
- Export / Import — CSV export with external IDs for backup and cross-instance deployment
- Visitor permissions — All code executes with the end-user's access rights
Troubleshooting AI-Generated Apps
AI can occasionally make mistakes. If your app shows a blank page or error:
- Open browser developer tools (F12 → Console) to check for JavaScript errors
- Copy error messages and share them with your AI agent to diagnose and fix issues
- Use Export regularly to save working versions — restore anytime via Odoo import
AI-Powered Module Builder
Let AI create custom Odoo data modules through natural conversation. Define new models, fields, views, menus, security rules, and server actions — all packaged as installable ZIP modules using Odoo's native base_import_module framework. Modules persist across restarts and appear in the standard Apps menu.
Data-Only Modules
XML, CSV data files — no Python code execution
Auto ZIP Packaging
One-click package and install workflow
Full Lifecycle
Create, update, reinstall, and uninstall
odoo.com/documentation/17.0/developer/tutorials/importable_modules.html
No Server Restart. No Deployment Step. No Manual Upload.
AI creates, packages, and installs modules all in one step — entirely through conversation.
There is no server restart, no deployment pipeline, and no manual ZIP upload. The AI agent calls
manage_module to create the module files, automatically packages them into a ZIP,
and installs via Odoo's base_import_module — your new models, fields, views, and menus
are live immediately. Updates work the same way: AI modifies the files, repackages, and reinstalls
in a single operation.
How It Works
Describe Your Module
"Create a module that adds a delivery reference field to sale orders and partners"
AI Creates Files
Manifest, XML data files, CSV security rules — all generated via manage_module
Package & Install
Auto-packaged as ZIP and installed via base_import_module — no server restart
Live in Odoo
Module appears in Apps menu, fields and views active immediately
Module Form View
Every AI-created module is stored as a fully editable Odoo record. View all files, track state (Draft / Packaged / Installed), and manage the full lifecycle from a familiar Odoo form view. The chatter tracks all packaging and installation activity.
Customer Delivery Reference module: Files tab with manifest, data files, views, and security — chatter showing package and install history
File Editor
Each module file is editable with a code widget. AI generates the XML data files that define new models, fields, views, and security rules — all reviewable and editable before installation.
data/models.xml: Adding a Customer Delivery Reference field to sale orders and a Require Delivery Reference boolean to partners
Download & Backup
After packaging, download the module ZIP file for backup or manual deployment to other instances.
Download tab: Packaged ZIP file ready for download or manual import
Native Odoo Integration
Installed modules appear directly in Odoo's standard Apps menu as imported modules. This uses Odoo's built-in base_import_module framework — no custom installation mechanism.
Apps menu: AI-created module installed and visible alongside standard Odoo modules via the Import Module feature
Access Control
The manage_module tool is controlled via the same per-tool allowlist system as all other MCP tools. Only users explicitly added to the allowlist can create and install modules.
Tool allowlist: manage_module marked as High Risk — creates importable data modules with models, fields, views, and security rules
What Can Modules Contain?
- New models — Define custom models via
ir.modelXML records - New fields — Add fields to existing or new models via
ir.model.fields - Views — Form, list, search, and kanban views
- Menus & actions — Window actions and menu items
- Security rules — Access control lists via CSV and record rules
- Server actions — Automated actions and scheduled tasks
- Data records — Pre-populated reference data
- Static files — Icons, descriptions, and assets
Export & Deployment
Export
Click Export on the module record to generate a CSV posted to the chatter. This CSV contains all module files and metadata with external IDs — ready for import on another instance.
First Deployment (Staging → Production)
- On staging: develop, test, and install the module via AI
- Click Export → a CSV is posted to the chatter
- On production: go to MCP → Modules, use Odoo's Import records (list view → gear icon) to import the CSV
- Open the newly created module record and click Install / Upgrade
Subsequent Updates
- On staging: make changes and re-test
- Click Export to generate a fresh CSV
- On production: delete the existing MCP module record (this only removes the file container — the installed Odoo module is unaffected)
- Import the new CSV to recreate the module record with updated files
- Click Install / Upgrade to apply changes
Why delete first? Reimporting over an existing record may leave orphan files if any were removed on staging. Deleting and reimporting ensures the file list exactly matches the source.
Review & Control
Review Before Installing
By default, AI automatically installs after creating files. If you prefer to
review first, ask the AI to use skip_install=true —
this saves the files without triggering installation. Review in the Files tab,
then click Install / Upgrade when ready.
Uninstall & Reinstall
The AI can use uninstall_first=true to cleanly drop all module tables and
data before reinstalling. This permanently deletes all user data
in the module's custom models — only during initial development.
Once real data exists, use force=true to overwrite noupdate records
without dropping tables, or remove leftover fields manually via
Settings → Technical → Fields/Models.
Troubleshooting AI-Generated Modules
AI can occasionally produce errors in generated XML, CSV, or field definitions. Errors may surface during installation or later when opening views, menus, or server actions:
- Paste the full error message (traceback or validation error) back to your AI agent — it can usually diagnose and fix the issue in one step
- Post-install errors (e.g. a view or action fails to load) are common — copy the error dialog or server log and share it with the AI
- Review Odoo base code for patterns: Ask the AI to search existing Odoo modules for similar models, views, or security rules before generating new ones — this dramatically reduces errors
- Use skip_install=true to review generated files before installing, and Export regularly to save working versions
- Installation timeout: Module installation can take several minutes, especially for modules with many models and fields. The MCP tool call may time out before receiving a response — but the install is still running server-side and will usually complete successfully. If this happens, check the module state in Odoo (or ask the AI to search
ir.module.module) before retrying — duplicate installs while one is in progress can cause database locks
Best practice: Instruct the AI to study the target Odoo version's base addons for naming conventions, field types, and view structures before building your module. This produces cleaner, more compatible results.
Important Notes
- Data-only modules: These are data modules (XML/CSV), not Python code modules. They cannot contain Python model classes, but can define models, fields, views, and security rules through Odoo's data file mechanism.
- Computed fields and server actions use
safe_eval— same risk level asexecute_orm. - Schema changes persist: Installed modules affect the database schema and persist across server restarts. Use the uninstall feature to cleanly remove modules.
- Install duration: Module installation involves packaging files, importing via
base_import_module, and setting up models/fields — this can take several minutes for larger modules and may exceed the MCP client's default tool-call timeout. The install still completes server-side; verify module state before retrying.
Interactive ECharts Dashboards
Describe what you want to visualize — AI builds it for you
Vibe Coding for Dashboards
Simply describe what you want to see in natural language and AI generates the complete dashboard — data queries, chart configurations, and styling included. No coding required.
Powered by Apache ECharts, one of the most powerful and flexible charting libraries. Build everything from simple bar charts to complex multi-axis dashboards with drill-down capabilities.
echarts.apache.org/en/option.html
echarts.apache.org/examples/en/index.html
A Blank Canvas for AI
Unlike rigid dashboard builders, ECharts provides a blank canvas where AI has complete creative freedom. Any chart type, any layout, any data combination.
No Configuration Lock-in
Dashboards are stored as pure Python data code and JSON chart options — no proprietary formats. Easily inspect, modify, or migrate your visualizations.
How It Works
Describe Your Dashboard
"Show me monthly sales by product category for the past 6 months with a bar chart and trend line"
AI Generates Everything
Data queries, chart options, styling — all created using the create_echart tool
Share Instantly
Get a shareable link immediately, or share with specific users and groups
Claude using MCP tools to generate an interactive sales dashboard
Browse and manage all your dashboards from the kanban view
Featured: 3D Globe Command Center
Turn your Odoo data into a stunning global visualization
github.com/Codemarchant/odoo_mcp_app_library/tree/main/echart_global_sales_command_center
Try This Prompt
Use the built-in "3D Globe Command Center" prompt template, or paste this into your AI client:
Create a 3D globe dashboard titled "Global Sales Command Center" using echarts-gl.
Use this globe texture URL: https://raw.githubusercontent.com/mrdoob/three.js/master/examples/textures/planets/earth_atmos_2048.jpg
Data from Odoo:
- Customers grouped by country
- Sale orders from the last 30 days grouped by partner country
- Revenue per country
- Summary stats: countries, customers, revenue, orders
Layout:
- Compact header bar with title and small inline stat badges, globe visible without scrolling
- Revenue filter slider as a floating panel on the left side
Globe features:
- Scatter points sized by customer count, colored by revenue level
- 3D bar columns on the top 5 revenue countries
- Animated arcs from order countries to HQ
- Slow auto-rotation with atmosphere glow
- Clickable countries showing a detail panel, closes on click
Professional dark theme.
3D Globe: Real-time sales data with glowing points, 3D bars, and animated arcs
codemarchant.com/mcp/echart/public/1/UqbJ37CaC39UlJJ0RC6xWHbgwctDI956-yqcNeNpQh0
Dashboard Configuration
Data Code tab: Python code for data retrieval using safe_eval
Sharing tab: Generate public links or share with specific users and groups
The resulting interactive dashboard with multiple chart types
Embed Dashboards on Any Website
Embed any EChart dashboard on your website, portfolio, or intranet using a simple iframe. A ready-to-use embed code with one-click copy is available in the Sharing tab of every dashboard.
One-Click Embed Code
Every dashboard includes a computed embed code in the Sharing tab. Simply copy the iframe snippet and paste it into your website HTML.
<iframe
src="https://your-odoo.com/mcp/echart/public/1/token?embed=1"
width="100%"
height="700"
style="border: none;"
loading="lazy">
</iframe>
embed=1 — Automatically hides the header bar for a clean, seamless look
Public Link — Enable for external websites (no login required)
Full Data Isolation Support
With "Expose EChart Data in Tool Response" disabled, AI agents only generate dashboard code — all execution happens on your Odoo server. The AI never sees the actual data in your charts.
Best Practices
- Build on staging first: Test dashboards before sharing widely
- Validate before production: Verify data accuracy and performance
- Use descriptive names: Help others understand each dashboard
- Review data code: Data code uses safe_eval with full ORM access
Troubleshooting AI-Generated Dashboards
AI can occasionally make mistakes. If your dashboard shows a blank page or error:
- Open browser developer tools (F12 → Console) to check for JavaScript errors
- Copy error messages and share them with your AI agent to diagnose and fix issues
- Use Export regularly to save working versions — restore anytime via Odoo import
Advanced: Extensions & Custom JavaScript
ECharts Extensions
- echarts-gl — 3D charts, globes, WebGL
- echarts-wordcloud — Word clouds
- echarts-liquidfill — Liquid gauges
- echarts-stat — Statistical transforms
Pre-Init JavaScript
echarts.registerMap()echarts.registerTheme()echarts.registerTransform()
Post-Init JavaScript
chart.on('click', ...)- Drill-down navigation
- Export/download buttons
Export & Deployment
Export
Generates a standard Odoo-formatted CSV file containing all dashboard data — data code, chart options, settings, and external IDs. CSV format supports unlimited code size (unlike XLSX which has cell limits).
Staging → Production: Export on staging, then import the CSV on production. External IDs allow Odoo to match and update the existing record on subsequent imports — reimporting cleanly overwrites all fields.
Backup & Restore: Export regularly to save working versions. If something breaks, reimport the CSV to restore your dashboard.
Frequently Asked Questions
Why hasn't my tool list updated after changing the allowlist?
MCP clients cache the tool list at connection time. After changing tool allowlists, adding/removing prompt templates,
or modifying any MCP configuration, you must disconnect and reconnect your AI client for changes to take effect.
In Claude Code CLI, use /mcp to manage connections. In Claude Desktop/Claude.ai, remove and re-add the connector.
How do I create custom prompt templates?
Navigate to MCP Server → Prompt Templates and create a new template.
Use {{variable}} syntax for arguments and set visibility to Private, Shared, or Public.
Templates appear as selectable commands in connected AI clients.
Remember to disconnect and reconnect your AI client after creating new templates for them to appear.
Why can't my user access MCP tools?
Users need the "MCP User" group assigned in their access rights (Settings → Users → Access Rights). Additionally, write and execute tools require explicit allowlist membership in the MCP configuration. Read tools are auto-enabled for all MCP users.
How do I share a web application publicly?
In the webapp's Sharing tab, add the "Public" group to "Shared with Groups". The app URL can then be accessed without login. You can add a link to the app directly on your website for public accessibility. Portal users can be granted access the same way by adding the "Portal" group.
Why can't other users see the EChart or WebApp I created?
By default, ECharts and WebApps are only visible to the user who created them. To share with other users in your organization, go to the Sharing tab on the record and add users or groups to "Shared with Users" or "Shared with Groups". For example, add "Role / User" to share with all internal employees, or "Role / Portal" to share with portal users. You can also share with specific users individually.
Is my data safe when AI generates dashboards and web apps?
Yes. All code execution happens on your Odoo server, not on the AI provider's infrastructure. For EChart dashboards, disable "Expose EChart Data in Tool Response" in configuration so AI agents only generate code without ever seeing the actual data. Webapp data code and endpoint handlers also run server-side with the viewer's permissions — never exposing data to the AI agent.
Can I export and deploy my web apps and dashboards across instances?
Yes. Both web applications and EChart dashboards have an Export button that generates a CSV with external IDs. Import the CSV on any Odoo instance — first import creates the records, subsequent imports match on external IDs and update in place. This enables a clean staging → production workflow.
What AI clients are supported?
Any client supporting Remote MCP with OAuth 2.1 is compatible. This includes Claude (Desktop, CLI, claude.ai), Gemini CLI, ChatGPT (Developer Mode), Cursor, Windsurf, and more. The module implements standard MCP 2025-11-25 specification with Streamable HTTP transport.
How do I test without HTTPS?
Use ngrok to create an HTTPS tunnel to your local Odoo instance:
ngrok http 8069. Then set the ngrok URL as web.base.url in System Parameters
and use the ngrok URL as your MCP server address.
Does it work with multiple databases?
Yes. Add odoo_remote_mcp to server_wide_modules in your odoo.conf,
then use the URL format https://your-odoo.com/<database>/mcp to connect
AI agents to specific databases.
How do I enable faster code search?
Install ripgrep on your server for significantly faster code searches.
On Ubuntu/Debian: sudo apt install ripgrep.
On macOS: brew install ripgrep.
The module automatically detects and uses ripgrep when available, with a Python fallback.
Does the module builder require a server restart or deployment step?
No. The entire workflow — creating files, packaging the ZIP, and installing the module —
happens live through AI conversation with no server restart, no deployment pipeline,
and no manual file upload. AI calls the manage_module tool which automatically packages
and installs via Odoo's base_import_module. Your new models, fields, views, and menus
are active immediately. Updates work the same way: AI modifies files, repackages, and reinstalls
in a single operation.
Are AI-created modules locked to this app? Can I convert them to standard Odoo modules?
No lock-in. Modules created by the AI are standard Odoo importable modules —
they use the same base_import_module framework that Odoo itself provides.
The generated ZIP files contain a standard __manifest__.py and data files (XML, CSV)
that follow Odoo's conventions.
You can download the ZIP from the Download tab and use it independently — import it on any Odoo instance via Apps → Import Module, without needing this app installed. If you outgrow the data-module approach, a developer can convert the ZIP into a full Python-based Odoo addon by adding model classes and business logic. The AI-generated data files (views, security rules, menus) remain valid and reusable as-is.
My AI-generated app shows a blank page or error — what should I do?
AI can occasionally make mistakes when generating code. If your web application or dashboard doesn't display correctly:
- Open browser developer tools (F12 or right-click → Inspect → Console tab) to check for JavaScript errors
- Copy the error message and share it with your AI agent — it can usually diagnose and fix the issue
- Describe what you see (blank page, partial render, specific error) to help the AI understand the problem
Support & Documentation
Documentation
Built-in docs at /mcp/docs
Email Support
support@codemarchant.com
Website
codemarchant.com
Start Building with AI Today
Install Odoo MCP Studio and let AI build your next web app, data module, dashboard, or automation.
MCP Server for Odoo
Enable AI agents like Claude, Gemini, and ChatGPT to interact with your Odoo instance via the Model Context Protocol (MCP).
Setup
- Install the module
- Add users to the MCP User group
- Configure tool allowlists in MCP Server → Configuration
- Connect your AI client (see Quick Connect below)
Quick Connect
Replace https://your-odoo.com with your Odoo instance URL.
Claude Code CLI:
claude mcp add odoo --transport http https://your-odoo.com/mcp within claude cli use /mcp command and authenticate.
Claude Desktop / Claude.ai
Settings → Connectors → Add Custom Connector → Enter URL:
https://your-odoo.com/mcp
Browser opens for OAuth → Authorize → Ready
Guide: https://modelcontextprotocol.io/docs/develop/connect-remote-servers#connecting-to-a-remote-mcp-server
Gemini CLI
Edit ~/.gemini/settings.json:
{
"mcpServers": {
"odoo": {
"url": "https://your-odoo.com/mcp"
}
}
}
within gemini cli, use /mcp command and authenticate
ChatGPT (Developer Mode)
In chatgpt settings → Apps menu → Advanced settings → Enable Developer Mode → Create app and add MCP server URL:
https://your-odoo.com/mcp
Browser opens for OAuth → Authorize → Ready
Guide: https://platform.openai.com/docs/guides/developer-mode
Requirements
- HTTPS required for production
- ripgrep (optional) - Faster code search
Install ripgrep
# Ubuntu/Debian sudo apt install ripgrep # macOS brew install ripgrep # Windows choco install ripgrep
Testing without HTTPS (ngrok)
For local development without HTTPS:
# Expose local Odoo via HTTPS tunnel ngrok http 8069 # Use generated URL, set as web base url in system parameters: https://xxx.ngrok-free.app/mcp
Endpoints
- /mcp - MCP protocol endpoint
- /mcp/docs - Built-in documentation
- /.well-known/oauth-protected-resource - OAuth resource metadata
- /.well-known/oauth-authorization-server - OAuth server metadata
Multi-Database Support
For environments with multiple databases served from a single Odoo URL, the module supports path-based database routing.
Requirements
Add the module to server_wide_modules in your odoo.conf:
server_wide_modules = web,base,odoo_remote_mcp
Connection URLs
Use the database name in the URL path when connecting:
https://your-odoo.com/<database>/mcp
Examples
Claude Code CLI:
claude mcp add production --transport http https://your-odoo.com/production_db/mcp claude mcp add staging --transport http https://your-odoo.com/staging_db/mcp
Gemini CLI (~/.gemini/settings.json):
{
"mcpServers": {
"odoo_production": {
"url": "https://your-odoo.com/production_db/mcp"
},
"odoo_staging": {
"url": "https://your-odoo.com/staging_db/mcp"
}
}
}
Path-based Endpoints
All endpoints support the database path prefix:
- /<database>/mcp - MCP protocol endpoint
- /<database>/mcp/docs - Built-in documentation
- /<database>/oauth/authorize - OAuth authorization
- /<database>/oauth/token - Token endpoint
- /.well-known/oauth-protected-resource/<database>/mcp - Resource metadata
Changelog
- 16.0.4.0.0 — 2026-02-09 (AI Module Builder)
Create Custom Odoo Data Modules with AI
- New manage_module tool for creating and managing custom Odoo data modules
- Create models, fields, views, menus, security rules, and server actions via XML/CSV data files
- Automatic ZIP packaging and one-click installation via base_import_module
- Modules persist across restarts and appear in the standard Apps menu
- Full lifecycle management: create, package, install, update, and uninstall
- Download packaged ZIP files for backup or manual deployment
- Per-user allowlist access control for the manage_module tool
- Module form view with file editor, download tab, and chatter activity tracking
- Tool count increased from 13 to 14
- Major rebrand: "Odoo MCP Studio — AI React App, Module & EChart Builder"
- 16.0.3.2.0 — 2026-02-06 (Code Patches & Embed)
- Code patching for manage_webapp: surgical find/replace edits via *_patches fields (e.g. component_code_patches, shared_components_patches, handler_code_patches) instead of rewriting entire code fields — saves context and reduces errors
- Iframe embed code for web applications: one-click copy snippet in the Sharing tab
- Improved storage documentation in tool description: clarifies mcp.webapp.user.storage model is queryable server-side for cross-user features (leaderboards, aggregations)
- 16.0.3.1.0 — 2026-01-30 (Tags, Gallery and webapp slugs)
- Tags system for categorizing webapps/echarts with management view
- Webapp enhancements: thumbnail, view count, sequence ordering, webapp slug support
- EChart iframe embed option with one-click copy in Sharing tab
- 16.0.3.0.0 — 2026-01-20 (React Web Applications)
Build Full React Apps from Odoo
- New manage_webapp tool for creating and managing React 19 web applications
- Multi-page routing with React Router 6 (HashRouter or MemoryRouter)
- Tailwind CSS enabled by default for utility-first styling
- ESM import maps: add any library from esm.sh (Chart.js, Recharts, etc.)
- Browser-based JSX compilation with Babel — no server build step
- Python data binding: fetch Odoo data with Python, access via React props
- Custom API endpoints: define GET/POST/PUT/DELETE handlers with Python
- Persistent user storage: server-side (5MB) with localStorage cache
- User context in components: id, name, email, roles, company info
- Flexible sharing: public, portal, groups, or specific users
- Version control: export/import webapps as XLSX
- Tool count increased from 12 to 13
- Major rebrand: "Odoo MCP Studio — AI App & EChart Builder"
- 16.0.2.1.0 — 2026-01-12 (Advanced ECharts)
Extensions & Custom JavaScript Support
- ECharts extensions: 4 popular extensions loaded by default (echarts-gl, wordcloud, liquidfill, stat)
- Pre-init JavaScript: code that runs before chart renders (registerMap, registerTheme, registerTransform)
- Post-init JavaScript: code that runs after chart renders (event handlers, drill-down, exports)
- New prompt templates: "3D Globe Command Center" and "Word Cloud Dashboard"
- Advanced tab in EChart form view for extension and JavaScript configuration
- CORS-friendly texture URLs documented for 3D globe visualizations
- 16.0.2.0.0 — 2026-01-08 (Major Release)
ECharts Interactive Dashboards
- New create_echart tool for AI-generated dashboards using Apache ECharts
- Vibe coding for dashboards: describe what you want to visualize, AI builds it
- Blank canvas for AI: no rigid widgets, complete creative freedom
- No configuration lock-in: pure Python data code and JSON chart options
- Full data isolation support: toggle "Expose EChart Data in Tool Response" to keep data on server
- Flexible sharing: public links via secure tokens or internal user/group sharing
- Tool count increased from 11 to 12
- 16.0.1.1.1 — 2026-01-05
- Improved transaction handling: tool execution now uses savepoints to rollback partial changes on failure
- Added full traceback logging to execution logs for easier debugging
- Defensive user_id capture before tool execution
- 16.0.1.1.1
- Fixed "Invalid access mode" error affecting Calendar and other views
- 16.0.1.1.0
- Added support for multi-database environments
- Minor fixes
- 16.0.1.0.0 — 2026-01-03
- Added support for multi-database environments
- Minor fixes
- 16.0.1.0.0 — 2026-01-01
- Initial release
Odoo Proprietary License v1.0 This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Odoo Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file). You may develop Odoo modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Odoo Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one). It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software. The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Please log in to comment on this module