Skip to main content
Glama
Alberto-Cabale

odoo-mcp-bridge

README.md
# Pont MCP Odoo ↔ Claude — guide de déploiement

Ce petit projet fait le lien entre votre instance Odoo (`via-italia.odoo.com`) et
Claude, pour que je puisse lire/écrire directement dans Odoo (stock, factures,
clients, relances) sans que vous ayez à cliquer dans l'interface.

Il tourne en continu sur un hébergeur cloud (Render, gratuit pour commencer).
Claude s'y connecte via une authentification en bonne et due forme (OAuth) :
la première fois, une page de connexion vous demande votre jeton secret ;
ensuite Claude reste connecté automatiquement, sans que le secret n'apparaisse
jamais dans une URL.

Aucune ligne de commande Git n'est nécessaire : tout se fait dans le navigateur.

---

## Étape 0 — ce dont vous avez besoin avant de commencer

- La **clé API Odoo** générée dans via-italia.odoo.com (Mes préférences → Sécurité
  du compte → Nouvelle clé API). Gardez-la de côté, vous la collerez à l'étape 3.
- Un **jeton secret** pour protéger l'accès. Générez-en un maintenant (ne le
  partagez qu'avec Render, jamais ailleurs) :
  - Sur Mac : ouvrez Terminal et tapez `openssl rand -hex 24`, copiez le résultat.
  - Sinon : n'importe quel générateur de mot de passe donnant ~40 caractères
    aléatoires fait l'affaire.

## Étape 1 — mettre ces fichiers sur GitHub (sans Git)

1. Allez sur [github.com](https://github.com) et créez un compte gratuit si vous
   n'en avez pas.
2. Cliquez sur **New repository**. Nom : `odoo-mcp-bridge` (ou ce que vous
   voulez). Laissez-le **Public** (nécessaire pour le déploiement Render sans
   lier de compte). Ne cochez rien d'autre. **Create repository**.
3. Sur la page du nouveau dépôt vide, cliquez **uploading an existing file**.
4. Glissez-déposez les 6 fichiers de ce dossier (`Dockerfile`, `proxy.py`,
   `oauth_provider.py`, `requirements.txt`, `start.sh`, `README.md`) dans la
   zone de dépôt.
5. **Commit changes**.

Notez l'URL du dépôt, du type `https://github.com/VOTRE-COMPTE/odoo-mcp-bridge`.

## Étape 2 — créer le service sur Render

1. Allez sur [render.com](https://render.com) et créez un compte gratuit.
2. **New +** → **Web Service**.
3. Choisissez **Public Git Repository** et collez l'URL du dépôt GitHub de
   l'étape 1. **Connect**.
4. Nom du service : `via-italia-odoo-mcp` (ou autre).
5. Render détecte le `Dockerfile` automatiquement — laissez le mode **Docker**.
6. Type d'instance : **Free** pour commencer (suffisant pour tester).

## Étape 3 — variables d'environnement

Toujours sur cette page de création, dépliez **Advanced** → **Add Environment
Variable**, et ajoutez :

| Clé | Valeur |
|---|---|
| `BRIDGE_SECRET` | le jeton généré à l'étape 0 |
| `ODOO_URL` | `https://via-italia.odoo.com` |
| `ODOO_API_KEY` | la clé API Odoo générée à l'étape 0 |
| `ODOO_YOLO` | `read` pour commencer (lecture seule, sans risque) |

(`ODOO_DB` n'est pas nécessaire, Odoo la détecte automatiquement.)

Cliquez **Create Web Service**. Le premier déploiement prend 2-3 minutes —
vous verrez les logs de build défiler.

## Étape 4 — vérifier que ça tourne

Une fois le déploiement marqué "Live", votre service a une adresse du type
`https://via-italia-odoo-mcp.onrender.com`.

Testez d'abord `https://via-italia-odoo-mcp.onrender.com/healthz` dans un
navigateur : vous devez voir `ok`.

Votre adresse de connecteur (celle à donner à Claude) est simplement :

```
https://via-italia-odoo-mcp.onrender.com/mcp
```

Pas de jeton dans cette URL-là — elle peut être partagée sans risque, la
protection se fait à l'étape suivante.

## Étape 5 — connecter Claude

Dans Claude : **Customize → Connectors → "+" → Add custom connector**, collez
l'URL de l'étape 4, **Add**, puis cliquez **Connecter**.

Une page de connexion s'ouvre et vous demande votre `BRIDGE_SECRET` (le jeton
généré à l'étape 0) — entrez-le et validez. Claude reste ensuite connecté ;
vous n'aurez plus à le refaire sauf si vous redéployez le service (ce qui
efface la session en mémoire).

Revenez ensuite dans la conversation avec Claude et demandez-lui de vérifier
la connexion (par exemple : "liste mes derniers devis Odoo").

## Étape 6 — passer en lecture/écriture

Une fois que la lecture fonctionne et que vous êtes à l'aise, repassez dans
Render → votre service → **Environment**, changez `ODOO_YOLO` de `read` à
`true`, et redéployez (Render le fait automatiquement après un changement de
variable). Claude pourra alors aussi créer des factures, mettre à jour des
stocks, etc. — à activer seulement quand vous êtes prêt à ce que ça écrive
réellement dans Odoo.

## Limites à connaître

- Le plan **Free** de Render met le service en veille après 15 minutes sans
  trafic : la première requête après une pause prend 30-60 secondes le temps
  qu'il se réveille. Pour un usage quotidien plus fluide, un plan payant
  (~7 $/mois) supprime cette mise en veille.
- Les sessions (jetons OAuth émis) sont gardées en mémoire par le service, pas
  sur disque : un redéploiement ou un redémarrage les efface, et il faudra
  refaire "Connecter" côté Claude (juste retaper le `BRIDGE_SECRET`, rien de
  plus).