Odoo MCP Server
by SalimaTerbah
README.md
# Odoo MCP Server
An **MCP (Model Context Protocol) server** that exposes an **Odoo 19 ERP** as a set of standard tools — so **any** MCP-compatible AI agent (Claude Desktop, an IDE, a custom agent) can query and act on the ERP without writing a single line of custom integration.
MCP is the open standard adopted in 2026 by Anthropic, OpenAI, Google and Microsoft — often described as *"the USB-C of AI"*. It turns the M×N integration problem into M+N: one server per data source, usable by every client.
## Exposed tools
| Tool | What it does |
|------|--------------|
| `contar_leads` | Counts CRM leads, optionally filtered by AI temperature |
| `listar_leads` | Lists leads with company and expected revenue |
| `crear_lead` | Creates a new lead in the CRM |
| `buscar_semantico` | Semantic search over lead notes (RAG with pgvector) |
## Architecture MCP client ──JSON-RPC/stdio──> Odoo MCP Server ──XML-RPC──> Odoo 19
(any agent) (this repo) + pgvector
The server runs as a **separate process** from Odoo and talks to it through Odoo's official external API (XML-RPC) — the same interface any third-party system would use. This keeps a clean client/server separation, as the protocol intends.
`buscar_semantico` reuses the RAG layer implemented in the companion module
[odoo_ai_agent](https://github.com/SalimaTerbah/odoo_ai_agent) (local embeddings + pgvector).
## Tech stack
- **Python 3.12**, `fastmcp`
- **Transport:** stdio (JSON-RPC)
- **Odoo 19** external API (XML-RPC)
- **PostgreSQL + pgvector** for the semantic layer
## Setup
```bash
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
```
Create a `.env` file (never committed):
ODOO_URL=http://localhost:8069
ODOO_DB=your_database
ODOO_USER=your_odoo_user
ODOO_PASSWORD=your_odoo_password
## Usage
Run the test client to list and call the published tools:
```bash
python3 test_client.py
```
Or register the server with any MCP client by pointing it to `server.py`.
## Security notes
- Credentials are loaded from environment variables / `.env`, never hardcoded.
- The server only exposes explicitly declared tools — no arbitrary ORM access.
## Author
**Salima Terbah** — Multiplatform App Developer (DAM), specializing in applied AI for Odoo.
## License
LGPL-3