AI-OdooFinder MCP Server
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 languageversion(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:
- Clarification: Asks for details if query is generic or missing version
- Query Expansion: Adds ES/EN synonyms, localization prefixes (
l10n_XX_) - 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
- 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 searchGET /health- Health check
Search algorithm:
- Generate embedding for query (Qwen3-Embedding-4B)
- Vector search (pgvector HNSW)
- BM25 full-text search (PostgreSQL tsvector)
- 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
-
Check
uvis installed:uv --version -
Check Python version:
python --version # Should be 3.11+
-
Reinstall dependencies:
uv sync --reinstall
Connection to API fails
-
Verify API is accessible:
curl https://strategy-orchestrator-prod.tailf7d690.ts.net/health -
Check timeout settings:
export AI_ODOOFINDER_API_TIMEOUT=120
MCP client doesn't see the tool
- Check MCP client logs for connection errors
- Verify JSON-RPC is working: Use MCP Inspector
- 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
Related Documentation
- Main Project README - User installation guide
- Backend API Documentation - FastAPI backend REST API
- CHANGELOG - Version history
- MCP Protocol - Official MCP docs
- FastMCP - Framework used
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)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| ai_odoofinder_mcp-1.0.0.tar.gz | 77.8 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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.