Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
ODOO_URLNoOdoo server URLhttp://localhost:8069
ODOO_API_KEYYesAPI Key for Odoo authentication
ODOO_DATABASEYesThe name of the Odoo database to connect to
READONLY_MODENoEnable read-only mode to prevent write operations (true/false)false

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": true
}
logging
{}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
list_models

List all available Odoo models.

Args: name_filter: Optional filter for model name (e.g., 'sale' to find sale-related models)

Returns: JSON string with model names and descriptions

get_fields

Get field information for an Odoo model using ORM fields_get().

Args: model: Model name (e.g., 'res.partner') field_filter: Optional filter for field name (e.g., 'name' to find name-related fields) fields: Specific field names to retrieve (None = all fields) attributes: Field attributes to return (None = default attributes including type, string, help, required, readonly, store, selection, comodel_name, inverse_name, domain)

Returns: JSON array of field definitions. Each field includes: - name: Field name - type: Field type (char, integer, many2one, selection, etc.) - string: Human-readable label - required: Whether field is required - readonly: Whether field is readonly - selection: List of [value, label] pairs (for selection fields) - comodel_name: Related model name (for relational fields)

execute_method

Execute any method on an Odoo model.

Args: model: Model name (e.g., 'res.partner') method: Method name to execute args: Positional arguments for the method kwargs: Keyword arguments for the method

Returns: JSON string with the method result

Note: In READONLY_MODE, write methods (create, write, unlink, copy) are blocked.

search_records

Search for records in an Odoo model.

Args: model: Model name (e.g., 'res.partner') domain: Odoo search domain (list of conditions). Examples: - Simple: [["name", "=", "John"]] - Multiple (AND): [["is_company", "=", True], ["active", "=", True]] - OR condition: ["|", ["name", "ilike", "test"], ["email", "ilike", "test"]] - any (Odoo 19+): [["order_line", "any", [["product_uom_qty", ">", 5]]]] - Operators: =, !=, >, >=, <, <=, like, ilike, in, not in, child_of, any fields: Fields to return (None = auto-exclude dangerous fields like binary/image/html) limit: Maximum number of records offset: Number of records to skip order: Sort order (e.g., 'name asc', 'create_date desc')

Returns: JSON with records, total count, limit, and offset. Each record includes a '_url' field for direct browser access.

count_records

Count records in an Odoo model matching the domain.

Args: model: Model name (e.g., 'res.partner') domain: Odoo search domain (list of conditions). Examples: - Simple: [["active", "=", True]] - Multiple (AND): [["is_company", "=", True], ["country_id", "=", 1]] - OR condition: ["|", ["type", "=", "contact"], ["type", "=", "invoice"]] - any (Odoo 19+): [["order_line", "any", [["product_uom_qty", ">", 5]]]] - Operators: =, !=, >, >=, <, <=, like, ilike, in, not in, child_of, any

Returns: JSON string with the count

read_records

Read specific records by their IDs.

Args: model: Model name (e.g., 'res.partner') ids: List of record IDs to read fields: Fields to return (None = auto-exclude dangerous fields like binary/image/html)

Returns: JSON string with the records. Each record includes a '_url' field for direct browser access to that record.

create_record

Create new record(s) in an Odoo model.

Args: model: Model name (e.g., 'res.partner') values: Dictionary of field values, or list of dicts for batch creation

Returns: JSON string containing: - Single creation: {"id": int, "success": bool, "url": str} - Batch creation: {"ids": list[int], "count": int, "success": bool, "urls": list[str]}

The 'url' field provides direct browser access to the created record(s).

Note: In READONLY_MODE, this tool is hidden from LLM via tags.

update_record

Update existing records in an Odoo model.

Args: model: Model name (e.g., 'res.partner') ids: List of record IDs to update values: Dictionary of field values to update

Returns: JSON string with: - success: Boolean indicating operation result - updated_ids: List of record IDs - urls: List of browser URLs (only if success=True) - error: Error message (only if success=False)

Note: In READONLY_MODE, this tool is hidden from LLM via tags.

delete_record

Delete records from an Odoo model. IRREVERSIBLE operation.

IMPORTANT: You MUST first call with confirm=False to show the user what will be deleted. Only set confirm=True AFTER the user explicitly approves the deletion. NEVER set confirm=True on the first call.

Args: model: Model name (e.g., 'res.partner') ids: List of record IDs to delete confirm: Safety flag. Always call with False first, then True only after user approval.

Returns: JSON string with success status or pending confirmation

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription
list_models_resourceList all available Odoo models.
get_current_userGet current logged-in user information.
get_current_companyGet current user's company information.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/twtrubiks/odoo19-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server