odoo-mcp-server-unofficial
This project provides high-level, secure access to Odoo 18.0 through JSON-RPC and supports document extraction via the Odoo Extract API. It includes several tools for interaction with Odoo models and is equipped for local development with Docker Compose support. The project is accompanied by CI/CD workflows and is open source under the MIT license.
Odoo MCP Server
High-level, secure access to Odoo 18.0 (JSON-RPC) and Odoo Extract API for OCR document parsing.
๐ Quick Start with Cline
-
Clone the repo:
git clone https://github.com/onlybets/odoo-mcp-server-unofficial.git cd odoo-mcp-server-unofficial
-
Configure credentials:
cp .env.example .env # Edit .env and fill in your Odoo/Extract credentials
-
Run with Cline (no self-hosting needed):
- Cline auto-runs the server locally for you.
- Just open the repo in Cline and start using the tools!
๐ ๏ธ Tools & JSON Schemas
1. list_models
Returns models visible to the current user.
Input: none
Output:
[
{"model": "res.partner", "name": "Contact"},
{"model": "crm.lead", "name": "Lead"}
]
2. get_fields
Returns fields & metadata for a model.
Input:
{ "model": "res.partner" }
Output:
{
"id": {"string": "ID", "type": "integer", "required": true, "readonly": true},
"name": {"string": "Name", "type": "char", "required": true, "readonly": false}
}
3. search_read
Searches and reads records from a model.
Input:
{
"model": "res.partner",
"domain": [["is_company", "=", true]],
"fields": ["id", "name", "email"],
"limit": 10
}
Output:
[
{"id": 7, "name": "Acme Corp", "email": "info@acme.com"}
]
4. create_record
Creates a new record in a model.
Input:
{
"model": "res.partner",
"values": {"name": "New Partner", "email": "new@partner.com"}
}
Output:
{ "id": 42 }
5. update_record
Updates one or more records in a model.
Input:
{
"model": "res.partner",
"ids": [42],
"values": {"email": "updated@partner.com"}
}
Output:
{ "success": true }
6. delete_record
Deletes one or more records in a model.
Input:
{
"model": "res.partner",
"ids": [42]
}
Output:
{ "success": true }
7. extract_parse
Launches a document extraction job.
Input:
{
"document_base64": "<base64-encoded-pdf>",
"doc_type": "invoice",
"version": "18.0"
}
Output:
{ "document_token": "abc123", "status": "processing" }
8. extract_get_result
Fetches the result of a document extraction job.
Input:
{
"doc_type": "invoice",
"version": "18.0",
"document_token": "abc123"
}
Output:
{
"status": "done",
"data": { "invoice_number": "INV-001", "total": 123.45 }
}
๐ณ Docker Compose
- Run all services with:
docker-compose up --build
- Works out-of-the-box for local dev and testing.
๐งช CI/CD
- GitHub Actions workflow (
.github/workflows/ci.yml
) runs:pylint
(with odoo plugin if available)pytest
(runs smoke tests)
- Matrix for Python 3.11+.
๐ License
MIT License. See .
MCP Server โ Model Context Protocol
https://modelcontextprotocol.org/