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). |
Capabilities
Features and capabilities supported by this server
| 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 | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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