Skip to main content

AI-OdooFinder MCP Server

Language: English | Español

MCP (Model Context Protocol) server for semantic search of Odoo modules in the OCA ecosystem.

Overview

This MCP server provides a tool called search_odoo_modules that enables LLMs to search through 16,494 indexed Odoo modules from OCA repositories using hybrid search (semantic + BM25).

Quick Start

For installation instructions, see the main project README.

Basic configuration:

{
  "mcpServers": {
    "ai-odoofinder": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/SantipBarber/ai-odoo-finder#subdirectory=mcp-server",
        "ai-odoofinder-mcp"
      ],
      "env": {
        "AI_ODOOFINDER_API_URL": "https://strategy-orchestrator-prod.tailf7d690.ts.net"
      }
    }
  }
}

Note: Requires uv package manager installed.


Features

  • Hybrid Search: Combines semantic search (embeddings) with BM25 full-text
  • Version Filtering: Only shows compatible modules (Odoo 10.0 to 19.0)
  • AI Enrichment: Descriptions, tags, and keywords generated by Grok-4-fast
  • Intelligent Flow: Smart clarifications, query expansion, confidence levels

Architecture

┌─────────────────┐
│   MCP Client    │ (Claude Desktop, Zed, Cursor, etc.)
│   (STDIO/HTTP)  │
└────────┬────────┘
         │
         │ JSON-RPC / SSE
         │
┌────────▼────────┐
│   MCP Server    │ (This component)
│  FastMCP + uv   │
└────────┬────────┘
         │
         │ HTTPS
         │
┌────────▼────────┐
│   Backend API   │ (FastAPI + PostgreSQL)
│   :8989         │
└─────────────────┘

Two modes:

  • STDIO: For local clients (Claude Desktop)
  • HTTP/SSE: For remote clients (Claude.ai Web, requires port 8080)

Tools

search_odoo_modules

Search for Odoo modules using natural language queries.

Parameters:

  • query (string, required): Search query in natural language
  • version (string, required): Odoo version (e.g., "16.0", "17.0")
  • limit (integer, optional): Max results (default: 10, max: 50)
  • dependencies (string, optional): Filter by dependencies (comma-separated)

Returns:

  • Structured JSON with modules, confidence level, and guidance

Example:

{
  "query": "electronic invoicing for Spain",
  "version": "16.0",
  "limit": 5
}

Intelligent Search Flow

The server implements an intelligent search flow:

  1. Clarification: Asks for details if query is generic or missing version
  2. Query Expansion: Adds ES/EN synonyms, localization prefixes (l10n_XX_)
  3. Structured Response: Returns results with confidence levels:
    • HIGH (score ≥80): Detailed format with recommendations
    • MEDIUM (50-79): Summary format with alternatives
    • LOW (<50): Suggestions to refine search
  4. Confirmation: Validates with user if found what they were looking for

Environment Variables

Variable Default Description
AI_ODOOFINDER_API_URL http://localhost:8989 Backend API URL
AI_ODOOFINDER_API_TIMEOUT 60 API timeout in seconds

Project Structure

mcp-server/
├── pyproject.toml           # Package configuration (uvx installable)
├── README.md                # This file
└── src/
    └── ai_odoofinder_mcp/
        ├── __init__.py
        └── server.py        # Main MCP server (FastMCP)

Development

Local Testing

# Install dependencies
cd mcp-server
uv sync

# Run server (STDIO mode)
uv run ai-odoofinder-mcp

# Test with MCP Inspector
npx @modelcontextprotocol/inspector uv run ai-odoofinder-mcp

HTTP Mode (for remote clients)

# Run with HTTP transport
uv run ai-odoofinder-mcp --http --port 8080

API Integration

The MCP server connects to the FastAPI backend at the URL specified in AI_ODOOFINDER_API_URL.

Backend endpoints used:

  • GET /api/v1/search - Hybrid search
  • GET /health - Health check

Search algorithm:

  1. Generate embedding for query (Qwen3-Embedding-4B)
  2. Vector search (pgvector HNSW)
  3. BM25 full-text search (PostgreSQL tsvector)
  4. Combine results with Reciprocal Rank Fusion (RRF)
RRF_score = 1/(k + rank_vector) + 1/(k + rank_bm25)

Where k=60 (standard RRF constant)


Troubleshooting

Server doesn't start

  1. Check uv is installed:

    uv --version
    
  2. Check Python version:

    python --version  # Should be 3.11+
    
  3. Reinstall dependencies:

    uv sync --reinstall
    

Connection to API fails

  1. Verify API is accessible:

    curl https://strategy-orchestrator-prod.tailf7d690.ts.net/health
    
  2. Check timeout settings:

    export AI_ODOOFINDER_API_TIMEOUT=120
    

MCP client doesn't see the tool

  1. Check MCP client logs for connection errors
  2. Verify JSON-RPC is working: Use MCP Inspector
  3. Restart MCP client completely

Publishing

The MCP server is installable via uvx directly from Git:

uvx --from git+https://github.com/SantipBarber/ai-odoo-finder#subdirectory=mcp-server ai-odoofinder-mcp

To publish to PyPI (future):

cd mcp-server
uv build
uv publish


License

MIT - See LICENSE

Metadata

Release files for ai-odoofinder-mcp 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ai-odoofinder-mcp 1.0.0
File Size Uploaded Provenance
ai_odoofinder_mcp-1.0.0.tar.gz 77.8 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for ai-odoofinder-mcp 1.0.0
File Interpreter ABI Platform
ai_odoofinder_mcp-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 88.6 kB

Release files / ai_odoofinder_mcp-1.0.0.tar.gz

Download URL ai_odoofinder_mcp-1.0.0.tar.gz
Size 77.8 kB
Tags Source
SHA-256 checksum
How to use checksums
e12522d6a30e8eb30132cea60bc3776ad7cf2df30acc90e753c6d4fcf7dc5668
BLAKE2b-256 checksum
How to use checksums
166ac8980d45f11e33becd0e90c95ee0df882f93b9424d4da15dd39343f7ea8d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.7

Release files / ai_odoofinder_mcp-1.0.0-py3-none-any.whl

Download URL ai_odoofinder_mcp-1.0.0-py3-none-any.whl
Size 10.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1b66fb7d9a9b75ddc7ad5cb9290a278d2b271d237fd650a48e06e1aced20146f
BLAKE2b-256 checksum
How to use checksums
67af6e40212bc8670f75b3d188654db15fe4652b5502d01dca382ac1bb4663ca
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.7

Security for ai-odoofinder-mcp 1.0.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page