odoo-mcp-gateway
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ODOO_DB | Yes | Odoo database name | |
| MCP_HOST | No | HTTP host (streamable-http mode) | 127.0.0.1 |
| MCP_PORT | No | HTTP port (streamable-http mode) | 8080 |
| ODOO_URL | No | Odoo server URL | http://localhost:8069 |
| MCP_LOG_LEVEL | No | Logging level | INFO |
| MCP_TRANSPORT | No | Transport mode (stdio or streamable-http) | stdio |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| loginB | Authenticate with Odoo. Methods: 'api_key', 'password', or 'session'. |
| list_modelsB | List available Odoo models. Optionally filter by keyword. |
| get_model_fieldsB | Get field definitions for an Odoo model. |
| search_readC | Search and read records from any Odoo model. |
| get_recordC | Read a single record by ID from any Odoo model. |
| search_countB | Count records matching a domain in an Odoo model. |
| create_recordC | Create a new record in an Odoo model. |
| update_recordC | Update an existing record in an Odoo model. |
| delete_recordB | Delete a record from an Odoo model. |
| read_groupC | Read grouped/aggregated data from an Odoo model. |
| execute_methodC | Execute a method on an Odoo model. |
| check_inA | Record attendance check-in for the current user. |
| check_outA | Record attendance check-out for the current user. |
| get_my_attendanceC | Get attendance records for the current user. |
| get_my_leavesB | Get leave requests for the current user. |
| request_leaveB | Submit a leave request. |
| get_my_profileB | Get the current user's employee profile. |
| get_my_quotationsB | Get quotations/orders where the current user is the salesperson. |
| get_order_detailsB | Get full order details with lines, totals, and partner info. |
| confirm_orderB | Confirm a quotation, turning it into a sale order. |
| get_sales_summaryA | Get aggregated sales stats for the current user. |
| get_my_tasksB | Get tasks assigned to the current user. |
| get_project_summaryB | Get project stats: task counts by stage, overdue, recent activity. |
| update_task_stageC | Move a task to a different stage. |
| get_my_ticketsB | Get helpdesk tickets assigned to the current user. |
| create_ticketB | Create a new helpdesk ticket. |
| update_ticket_stageB | Move a helpdesk ticket to a different stage. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| analyze_model | Analyze an Odoo model's structure, fields, and relationships. Provides a comprehensive prompt for understanding any model. |
| explore_data | Explore data in an Odoo model based on a natural language question. |
| create_workflow | Guide through a workflow on an Odoo model. |
| compare_records | Compare two or more records from the same model. |
| generate_report | Generate an analytical report from Odoo data. |
| discover_custom_modules | Discover and understand custom Odoo modules installed. |
| debug_access | Debug access issues for a model. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| list_models_resource | List all accessible Odoo models. Returns JSON array of model objects with name, description, is_custom, and access_level. |
| categories_resource | List available model categories with counts. Returns JSON object mapping category names to model counts. |
TDQS
Scored across 27 tools
Most tools have distinct purposes, but some potential confusion exists between generic tools like create_record/update_record/delete_record and specific ones like create_ticket/update_ticket_stage. The generic tools could overlap with domain-specific operations, though descriptions help clarify their scope.
Tools follow a consistent snake_case pattern with clear verb_noun structure (e.g., get_my_tickets, update_task_stage). Minor deviations include 'login' (no noun) and 'read_group' (unusual verb order), but overall naming is predictable and readable.
With 27 tools, the count feels heavy for a single server, bordering on excessive. While Odoo is a broad ERP system, the toolset includes both generic (e.g., create_record) and specific operations, which could be streamlined or better organized.
The toolset provides comprehensive coverage for Odoo's core domains: attendance, sales, helpdesk, projects, and HR. It includes CRUD operations, specific workflows (e.g., confirm_order, request_leave), and utility tools (e.g., list_models, login), leaving no obvious gaps for agent interaction.