odoo-safe-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ODOO_DB | Yes | Odoo database name | |
| ODOO_URL | Yes | URL of your Odoo instance, e.g. https://your-company.odoo.com | |
| ODOO_API_KEY | Yes | Odoo user API key used to connect to Odoo | |
| ODOO_DRY_RUN | No | Set to true to test and simulate YELLOW and RED policies locally with zero risk to your database. | false |
| ODOO_USERNAME | Yes | Odoo username/email for the AI bot user | |
| ODOO_SAFE_GUARD_KEY | No | Optional Pro license key for guarded write access. Without it, the server runs in Strict Read-Only Mode. |
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
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| odoo_execute_kwB | Safely execute an Odoo ORM method (execute_kw) via deterministic firewall rules. Args: model: Odoo technical model name (e.g. 'sale.order', 'res.partner', 'account.move'). method: ORM method name (e.g. 'search_read', 'read', 'create', 'unlink', 'action_post'). args: Positional arguments (e.g. search domains, list of record IDs, or record dictionaries). kwargs: Keyword arguments (e.g. {'fields': ['name', 'amount_total'], 'limit': 10}). Returns: JSON string or formatted message with query results or human approval status. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 1 tool
Only one tool is exposed, so there is no risk of confusing it with another tool. Its purpose—generic Odoo ORM execution—is broad but unambiguous within the set.
Single snake_case name odoo_execute_kw with a server-related prefix; no competing conventions to create inconsistency. The name is clear, though generic.
A single catch-all execute_kw tool is thinner than ideal for a broad Odoo domain; it works as a proxy but lacks granular operations. The count is borderline rather than clearly appropriate.
execute_kw can technically perform CRUD and actions, but the surface lacks discovery/introspection tools (e.g., list models, describe fields) needed for practical agent use. This is a notable gap.