Skip to main content
Glama
aadilakbar

MCP Odoo Bridge Server

by aadilakbar

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
ODOO_DBNoDatabase name (auto-detected if not set)
MCP_HOSTNoHost for HTTP transportlocalhost
MCP_PORTNoPort for HTTP transport8000
ODOO_URLYesYour Odoo instance URL (e.g., https://mycompany.odoo.com)
ODOO_USERNoUsername (if not using API key)
ODOO_YOLONoYOLO mode - bypasses MCP security (⚠️ DEV ONLY). Values: off, read, trueoff
ODOO_API_KEYNoAPI key for authentication (e.g., 0ef5b399e9ee9c11b053dfb6eeba8de473c29fcd)
ODOO_TIMEOUTNoRequest timeout in seconds30
MCP_TRANSPORTNoTransport type: stdio or streamable-httpstdio
ODOO_PASSWORDNoPassword (if not using API key)
ODOO_MAX_RECORDSNoDefault max records per query100

Capabilities

Features and capabilities supported by this server

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

Tools

Functions exposed to the LLM to take actions

NameDescription
search_records
Search for records in an Odoo model.

Args:
    model: The Odoo model name (e.g., 'res.partner', 'sale.order')
    domain: Search filter as Odoo domain list (e.g., [['is_company', '=', True]])
            Common operators: =, !=, >, <, >=, <=, like, ilike, in, not in
    fields: List of fields to return (empty = smart defaults)
    limit: Maximum records to return (default 80)
    offset: Number of records to skip (for pagination)
    order: Sort order (e.g., 'name asc, id desc')

Returns:
    JSON list of matching records

Examples:
    - Find all companies: model='res.partner', domain=[['is_company', '=', True]]
    - Find orders from this month: model='sale.order', domain=[['date_order', '>=', '2024-01-01']]
    - Find unpaid invoices: model='account.move', domain=[['payment_state', '!=', 'paid']]
get_record
Get a specific record by ID.

Args:
    model: The Odoo model name
    record_id: The ID of the record to retrieve
    fields: List of fields to return (empty = all accessible fields)

Returns:
    JSON object with the record data

Example:
    Get customer details: model='res.partner', record_id=5
count_records
Count records matching a domain.

Args:
    model: The Odoo model name
    domain: Search filter as Odoo domain list

Returns:
    Number of matching records

Example:
    Count unpaid invoices: model='account.move', domain=[['payment_state', '!=', 'paid']]
list_models
List all Odoo models available for MCP access.

Returns:
    List of models with their permissions (read, create, update, delete)
get_model_fields
Get field definitions for an Odoo model.

Args:
    model: The Odoo model name
    field_types: Optional list of types to filter (e.g., ['many2one', 'char'])

Returns:
    List of fields with their types and descriptions
create_record
Create a new record in Odoo.

Args:
    model: The Odoo model name
    values: Dictionary of field values for the new record

Returns:
    Success message with the new record ID

Example:
    Create customer: model='res.partner', values={'name': 'New Customer', 'email': 'new@example.com'}
update_record
Update an existing record in Odoo.

Args:
    model: The Odoo model name
    record_id: The ID of the record to update
    values: Dictionary of field values to update

Returns:
    Success message

Example:
    Update customer phone: model='res.partner', record_id=5, values={'phone': '123-456-7890'}
delete_record
Delete a record from Odoo.

Args:
    model: The Odoo model name
    record_id: The ID of the record to delete

Returns:
    Success message

⚠️ WARNING: This action is irreversible!
execute_method
Execute a custom method on an Odoo model.

Args:
    model: The Odoo model name
    method: The method name to call
    record_ids: Optional list of record IDs to call the method on
    args: Positional arguments for the method
    kwargs: Keyword arguments for the method

Returns:
    Method result

⚠️ Note: This requires special permission in Odoo settings.

Example:
    Confirm sale order: model='sale.order', method='action_confirm', record_ids=[5]
get_record_name
Get the display name of a record (useful for looking up references).

Args:
    model: The Odoo model name
    record_id: The record ID

Returns:
    Display name of the record
search_and_read_one
Search and return the first matching record (convenience method).

Args:
    model: The Odoo model name
    domain: Search filter as Odoo domain list
    fields: List of fields to return

Returns:
    The first matching record or a message if not found

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription
resource_modelsList all models enabled for MCP access

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/aadilakbar/ad-mcp-bridge-server'

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