Skip to content

Module 2 — Démarrage rapide en mode YOLO

Ce module met en place, pour de vrai, la stack la plus rapide à obtenir : Odoo 16, PostgreSQL, et le serveur MCP en mode YOLO (voir Module 1). Toutes les commandes ci-dessous ont été exécutées telles quelles ; les sorties affichées sont réelles.

Le projet complet est disponible sur GitHub — mcp-odoo-toolkit. Sa structure :

mcp-odoo-toolkit/
├── docker/
│ └── Dockerfile # image du serveur MCP
├── docker-compose.yml # Odoo + PostgreSQL + serveur MCP
├── .env.example # variables à copier en .env
├── src/mcp_odoo_toolkit/ # client Python réutilisable (SDK MCP officiel)
├── examples/demo.py # démo bout en bout
└── tests/ # tests unitaires (pytest)
Terminal window
git clone https://github.com/Julionores/mcp-odoo-toolkit.git
cd mcp-odoo-toolkit
docker compose up -d db odoo

Sortie obtenue (première exécution, avec téléchargement de l’image odoo:16) :

Image odoo:16 Pulled
Container mcp-odoo-toolkit-db-1 Started
Container mcp-odoo-toolkit-odoo-1 Started

Vérification :

Terminal window
docker compose ps
NAME IMAGE STATUS PORTS
mcp-odoo-toolkit-db-1 postgres:16 Up 47 seconds 5432/tcp
mcp-odoo-toolkit-odoo-1 odoo:16 Up 47 seconds 0.0.0.0:8069->8069/tcp

2. Créer une base Odoo avec données de démonstration

Section titled “2. Créer une base Odoo avec données de démonstration”

Odoo n’a, à ce stade, aucune base de données. On en crée une via l’API du gestionnaire de bases (/web/database/create), avec demo=true pour charger les données de démonstration (contacts, produits…) — utile pour avoir de vraies données à interroger avec MCP :

Terminal window
curl -s -X POST http://localhost:8069/web/database/create \
-F "master_pwd=admin" \
-F "name=mcp_demo" \
-F "login=admin" \
-F "password=admin" \
-F "lang=fr_FR" \
-F "country_code=fr" \
-F "demo=true" \
-o /tmp/create_db_response.html -w "HTTP %{http_code}\n"
HTTP 303

Un code 303 (redirection vers /web) indique que la création a réussi. Confirmation via l’API JSON-RPC de listage des bases :

Terminal window
curl -s http://localhost:8069/web/database/list -X POST \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"call","params":{}}'
{"jsonrpc": "2.0", "id": null, "result": ["mcp_demo"]}

3. Configurer et démarrer le serveur MCP en mode YOLO

Section titled “3. Configurer et démarrer le serveur MCP en mode YOLO”

Copiez .env.example en .env :

Terminal window
cp .env.example .env
ODOO_DB=mcp_demo
ODOO_USER=admin
ODOO_PASSWORD=admin
# Mode YOLO : fonctionne sans le module Odoo mcp_server, mais sans controle
# d'acces par modele. A reserver aux environnements de demonstration/test.
ODOO_YOLO=true

Puis construisez et démarrez le conteneur du serveur MCP :

Terminal window
docker compose up -d --build mcp-server

Les logs du conteneur confirment la connexion et le mode actif :

2026-09-12 04:55:29 - Initialized Odoo MCP Server v0.8.0
2026-09-12 04:55:29 - Starting MCP server with HTTP transport on 0.0.0.0:8000...
2026-09-12 04:55:29 - WARNING - YOLO FULL-ACCESS MODE IS ENABLED: unauthenticated
clients could read, write and delete ANY record.
2026-09-12 04:55:30 - Successfully authenticated with username/password for user ID 2
2026-09-12 04:55:30 - Successfully connected to Odoo at http://odoo:8069
2026-09-12 04:55:30 - access_control - WARNING - YOLO mode (FULL ACCESS):
Access control bypassed! All models accessible, MCP security disabled.
INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)

C’est exactement la mise en garde évoquée au Module 1 : le serveur fonctionne, mais tout ce que l’utilisateur admin peut voir dans Odoo est accessible à quiconque atteint ce port, sans distinction de modèle.

Terminal window
docker compose ps
NAME IMAGE STATUS PORTS
mcp-odoo-toolkit-db-1 postgres:16 Up 5432/tcp
mcp-odoo-toolkit-mcp-server-1 mcp-odoo-toolkit-mcp-server Up 0.0.0.0:8000->8000/tcp
mcp-odoo-toolkit-odoo-1 odoo:16 Up 0.0.0.0:8069->8069/tcp

Les trois services tournent. Le serveur MCP est joignable en transport streamable-http sur http://localhost:8000/mcp.

La stack est prête, mais nous n’avons encore rien demandé au serveur MCP lui-même. Le Module 3 écrit un vrai client Python avec le SDK officiel MCP et exerce ses tools sur les données de démonstration que nous venons de charger.

👉 Module 3 : Explorer les tools MCP