Odoo Index MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| LOG_LEVEL | No | Logging level (default: INFO). | |
| ODOO_PATH | Yes | Path to the Odoo installation directory. | |
| SQLITE_DB_PATH | No | Path to the SQLite database file (default: ./odoo_index.db). | |
| MAX_CONCURRENT_FILES | No | Maximum number of concurrent files to process (default: 8). | |
| MAX_CONCURRENT_MODULES | No | Maximum number of concurrent modules to index (default: 4). |
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": true
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| search_odoo_indexA | Search for indexed Odoo elements by name (returns CONCISE results). This tool returns minimal, essential information only:
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:
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:
Returns: Status information including database path, item counts and indexing state |
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 9 tools
Each tool targets a distinct operation: concise search, full details, module listing, stats, references, attribute-based search, XML ID search, index update, and status. No overlap in functionality.
All tools follow a consistent verb_noun snake_case pattern (e.g., search_odoo_index, get_item_details, find_references). No deviations.
With 9 tools, the set is well-scoped for an Odoo index server. Each tool serves a clear purpose without unnecessary bloat or gaps.
The tools cover all essential query types (search, details, stats, references, attribute search, XML ID search) and index management (update, status). Minor gap: no tool for deleting specific index items, but that's administrative.