Skip to main content
Glama
letzdoo

Odoo Index MCP

by letzdoo

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
LOG_LEVELNoLogging level (default: INFO).
ODOO_PATHYesPath to the Odoo installation directory.
SQLITE_DB_PATHNoPath to the SQLite database file (default: ./odoo_index.db).
MAX_CONCURRENT_FILESNoMaximum number of concurrent files to process (default: 8).
MAX_CONCURRENT_MODULESNoMaximum number of concurrent modules to index (default: 4).

Capabilities

Features and capabilities supported by this server

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

Tools

Functions exposed to the LLM to take actions

NameDescription
search_odoo_indexA

Search for indexed Odoo elements by name (returns CONCISE results).

This tool returns minimal, essential information only:

  • name, type, module, file, line number

  • Key attributes (description, field_type, etc.)

Results are sorted by relevance (exact matches first, then by dependency depth). The most relevant results are typically in the first 5 items.

Use get_item_details() if you need full details about a specific item.

PAGINATION: Results include 'has_more' and 'next_offset' fields. If has_more=true, call again with offset=next_offset to get more results.

Args: query: Search term (supports SQL LIKE patterns with %) item_type: Filter by type (model/field/function/view/menu/action/etc) module: Filter by module name parent_name: Filter by parent (e.g., model name for fields/methods) limit: Maximum results per page (default: 5, max: 50) offset: Number of results to skip for pagination (default: 0)

Returns: { total: Total matching items, returned: Number of items in this page, has_more: Whether more results are available, next_offset: Offset to use for next page (null if no more), results: Array of concise item data }

get_item_detailsA

Get FULL details for a specific Odoo element.

WARNING: This returns ALL information including ALL references, ALL fields, ALL methods, ALL views, etc. for models. Use search_odoo_index() for quick lookups.

Use this ONLY when you specifically need:

  • All references (inheritance, overrides, usages)

  • All fields/methods of a model

  • All views/actions related to a model

  • Full attribute details

Args: item_type: Type of item (model/field/function/view/menu/action/etc) name: Item name (e.g., 'sale.order' for model, 'partner_id' for field) parent_name: Parent name (required for fields/methods - the model name) module: Module name (optional, helps disambiguate)

Returns: Complete item details with all references and related items

list_modulesA

List all indexed Odoo modules.

Args: pattern: Filter by module name pattern (optional)

Returns: List of modules with item counts

get_module_statsA

Get detailed statistics for a specific Odoo module.

Args: module: Module name (e.g., 'sale', 'account', 'stock')

Returns: Module statistics including counts by item type

find_referencesB

Find all references to a specific Odoo element across the codebase.

Args: item_type: Type of item (model/field/function/view/etc) name: Item name reference_type: Filter by reference type (definition/inheritance/override/reference/modification)

Returns: All file locations where this item is referenced

search_by_attributeA

Search Odoo elements by their attributes (advanced filtering).

Args: item_type: Type of item to search (model/field/view/action/etc) attribute_filters: Dict of attribute filters (e.g., {"field_type": "Many2one", "required": true}) module: Filter by module (optional) limit: Maximum results per page (default: 20, max: 100) offset: Number of results to skip for pagination (default: 0)

Returns: Matching items with their details and pagination info

Examples: - Find all Many2one fields: item_type="field", attribute_filters={"field_type": "Many2one"} - Find all transient models: item_type="model", attribute_filters={"model_type": "transient"} - Find all form views: item_type="view", attribute_filters={"view_type": "form"}

search_xml_idA

Search for XML IDs by name pattern.

This tool searches across all Odoo elements that have XML IDs (views, actions, menus, rules, scheduled actions, report templates, and other data records).

Args: query: Search term (supports SQL LIKE patterns with %, e.g., 'action_view_%') module: Filter by module name (optional) limit: Maximum results per page (default: 20, max: 100) offset: Number of results to skip for pagination (default: 0)

Returns: XML IDs with their details including item type, model, file location, line numbers, and pagination info

Examples: - Find all action views: query="action_view_%" - Find specific action: query="action_view_sale_order" - Find form views: query="%_form_view"

update_indexA

Update the Odoo index by scanning and parsing the codebase.

This tool triggers a re-indexing of the Odoo codebase in the background. By default, it performs incremental indexing (only re-parsing changed files). The function returns immediately while indexing continues in the background.

Args: incremental: If True, skip unchanged files (default: True). Set to False for full re-index. modules: Comma-separated list of module names to index (e.g., "sale,account,stock"). If not provided, all modules will be indexed. clear_db: If True, clear the entire database before indexing (default: False). WARNING: This will delete all existing index data!

Returns: Status message confirming indexing has started

Examples: - Incremental update: update_index() - Full re-index: update_index(incremental=False) - Index specific modules: update_index(modules="sale,account") - Clear and re-index: update_index(clear_db=True, incremental=False)

get_index_statusA

Get the current status of the index and any ongoing indexing operations.

Returns information about:

  • Database location

  • Whether indexing is currently running

  • Total number of indexed items

  • Number of modules indexed

  • Breakdown by item type

  • Indexing progress (if running)

Returns: Status information including database path, item counts and indexing state

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

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/letzdoo/odoo-indexer-mcp'

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