odoo-readonly
Provides read-only access to Odoo via JSON-RPC across one or more configured Odoo server profiles. Includes tools to list profiles, check session/server version, explore models and fields, search and read records, count records, perform read groups, call whitelisted read-only methods, and list installed modules.
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
MCPOdoo — Odoo Read-Only MCP (Docker)
MCP server untuk cek data Odoo production/staging via JSON-RPC (read-only).
Proyek standalone di luar repo addon. Satu instance MCP bisa melayani beberapa server Odoo (beda URL/DB/versi) lewat profile.
Persiapan
Clone repo, lalu pilih salah satu mode di bawah. File profiles.json dan .env bersifat lokal (ada di .gitignore) — jangan di-commit.
Opsi A — banyak server (disarankan)
cp profiles.example.json profiles.json
# edit url / db / user per profile (tanpa password)
./scripts/keychain-store.sh prod password
./scripts/keychain-store.sh staging password
docker compose buildOpsional di .env: MCPO_ODOO_DEFAULT_PROFILE=staging dan limit RPC.
Opsi B — satu server (legacy)
cp .env.example .env
# ODOO_URL, ODOO_DB, ODOO_USER — password di Keychain: ./scripts/keychain-store.sh default password
docker compose buildUji image (opsional)
MCP memakai stdio — biasanya lewat Cursor:
docker compose run --rm -T mcp
# menunggu input JSON-RPC dari stdin; Ctrl+C untuk keluarRelated MCP server: mcp-mysql-server
Cursor IDE
Tambahkan di Settings → MCP (atau merge ke ~/.cursor/mcp.json):
{
"mcpServers": {
"odoo-readonly": {
"command": "/ABSOLUTE/PATH/TO/MCPOdoo/scripts/run-mcp.sh"
}
}
}Ganti path dengan lokasi clone Anda. Contoh lengkap: cursor-mcp.example.json.
Script run-mcp.sh menjalankan:
docker compose run --rm -T mcp
(-T = tanpa TTY, cocok untuk protokol MCP stdio.)
Penting: Build image dulu (docker compose build). Setiap ubah kode Python, build ulang.
MCP tidak aktif / error di Cursor
Di Settings → MCP, server odoo-readonly harus hijau. Jika Error / tool discovery gagal:
Penyebab | Perbaikan |
Docker Desktop mati | Buka Docker Desktop; tunggu “Running”. |
|
|
Image belum di-build |
|
Password Keychain |
|
Log MCP | Cursor: Output panel → dropdown MCP / odoo-readonly — lihat stderr ( |
Tes manual (harus tetap jalan, tidak exit 127):
/path/to/MCPOdoo/scripts/run-mcp.sh
# menunggu stdio; Ctrl+C
env -i HOME="$HOME" PATH="/usr/bin:/bin" /path/to/MCPOdoo/scripts/run-mcp.sh
# setelah fix PATH di script: tidak boleh "docker not found"Nama server di Cursor: odoo-readonly (bukan “MCPOdoo”). Tool muncul sebagai namespace user-odoo-readonly.
Akses Odoo dari container
Production HTTPS publik: cukup set
ODOO_URL=https://...di.env.Odoo di host lokal (macOS): gunakan
ODOO_URL=http://host.docker.internal:8069(compose sudah menambahextra_hosts).
Keamanan
Whitelist method ORM di MCP; denylist model sensitif (
ir.config_parameter, dll.).Buat user Odoo khusus read-only + API key; jangan pakai admin.
Jangan commit
.env,profiles.json, atau password/API key. Detail: SECURITY.md.
Menyimpan password di MacBook (lebih aman dari plain .env)
Cara | Kelebihan |
macOS Keychain (disarankan) | Terenkripsi, bisa Touch ID; |
1Password / Bitwarden CLI |
|
| Minimum; tetap plain text di disk (Time Machine, backup) |
Keychain (per profile):
./scripts/keychain-store.sh prod password
./scripts/keychain-store.sh staging password
# legacy single-server: ./scripts/keychain-store.sh default passwordAccount Keychain: prod.ODOO_PASSWORD, staging.ODOO_PASSWORD, atau ODOO_PASSWORD untuk profile default. Service: MCPOdoo.
Beberapa server Odoo (1 MCP)
Konsep | Keterangan |
| URL, DB, user per server — tanpa password |
| Contoh: |
| Daftar profile + versi setelah |
Versi Odoo berbeda | JSON-RPC ORM ( |
Contoh prompt Cursor:
“Panggil
odoo_list_profiles, laluodoo_session_infountukproddanstaging.”“
odoo_search_readprofileprod, modelhr.attendance, domain …”
1Password (opsional, tanpa simpan di .env):
op item get "<your-item>" --fields password --reveal
# atau op run -- docker compose run ...Cursor MCP cukup memanggil run-mcp.sh; rahasia tidak perlu ada di mcp.json.
Tool MCP
Tool | Fungsi |
| Daftar server yang dikonfigurasi |
| Cek koneksi & versi server (parameter |
| List record |
| Baca by id |
| Id / count |
| Eksplorasi model |
| Method whitelist lain |
| Modul terinstall |
Tanpa Docker (dev)
python3.12 -m venv .venv && source .venv/bin/activate
pip install -e .
export $(grep -v '^#' .env | xargs)
odoo-readonly-mcpStruktur
MCPOdoo/
Dockerfile
docker-compose.yml
odoo_readonly_mcp/ # server MCP
scripts/run-mcp.sh # entry untuk Cursor
profiles.example.json # template multi-server (salin → profiles.json)
.env.example
cursor-mcp.example.json
SECURITY.md
LICENSELisensi
MIT — lihat LICENSE.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
This server cannot be deployed
Maintenance
Related MCP Connectors
Query 40 databases from Claude, ChatGPT, or Cursor — on any device. Read-only, encrypted, audited.
Read-only MCP access to a documented IT fleet: state, changes, posture. 15 tools.
Odoo MCP Pack — ERP/CRM via Odoo's external JSON-RPC API.
Securely query and analyze business data, dashboards, projections, alerts, and knowledge.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA read-only MCP server that enables AI assistants to query Odoo instances via XML-RPC, supporting search, read, count, and field inspection without requiring custom modules.76 PyPI1Mozilla Public 2.0
- AlicenseNot gradedqualityDmaintenanceLocal Cursor plugin / MCP server for MySQL & MariaDB. Inspect schema, query data, and mutate safely with read-only by default.81 npmMIT
- FlicenseNot gradedqualityCmaintenanceEnables MCP clients to query, create, update, and delete records in a self-hosted Odoo instance, with tools automatically derived from live model introspection.-
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to query live ERP/CRM records through Odoo's external JSON-RPC API, covering contact and company lookups, sales orders and quotations, CRM leads and opportunities, customer invoices, and generic search_read access to any Odoo model. Runs either as a hosted gateway endpoint or a local stdio server.340 npmMIT