---
tags: [MCP]
description: "Bilan draw.io : MCP v1.10.1, CLI 32.6.1 headless et skill dédié ; le SSO reste non bloquant."
nature: documentation
projects:
  - [[03_PROJETS/VPS-IA]]
type: note
---
# VPS-IA — Mise en place MCP draw.io (2026-11-03)

Installation complète du support draw.io pour les agents OpenCode du VPS. Session close le 03/11 — bilan consolidé.

## Outillage installé

| Composant | Emplacement / config |
|---|---|
| Serveur MCP `@drawio/mcp` v1.10.1 (officiel JGraph) | binaire `/var/lib/opencode/.npm-global/bin/drawio-mcp` ; config `~/.config/opencode/opencode.json` → `mcp.servers.drawio` (`type: local`, env `DRAWIO_BASE_URL=https://draw.datagrandest.net/`) |
| CLI draw.io Desktop 32.6.1 (exports, Mermaid→drawio, layout) | extraction locale sans root : `/var/lib/opencode/.local/opt/drawio/` ; wrappers `~/.local/bin/drawio` (--no-sandbox) et `~/.local/bin/drawio-cli` (headless Xvfb auto) |
| Skill `drawio` | page source [[80_CONFIG/IA_SKILLS/Drawio]] → `~/.opencode/skills/drawio/SKILL.md` ; script `scripts/find-shapes.js` posé localement (le sync ne copie que les .md) |
| Dossier schémas | [[07_DIAGRAMMES]] : `VPS-OVH_Architecture.drawio` + `.png` |

## Points clés

- **SSO = non bloquant** pour le MCP : le schéma voyage dans le fragment `#` de l'URL (jamais transmis au serveur) ; seul le navigateur authentifié ouvre draw.datagrandest.net.
- **Deux flux** : MCP rapide (`open_drawio_xml`/`_csv`/`_mermaid`, `search_shapes`, `list_pages`/`get_page`/`set_page`) ; flux fichier persistant + exports via `drawio-cli`.
- **Fichiers archivés en `.drawio` non compressé** (pas de XML/compressé : le plugin SB Draw.io se déclenche sur l'extension `.drawio` ; version compressée refusée par le CLI).

## Pièges / leçons (validés par tests)

- URL `#R` trop longue → tronquée par le canal de chat → « invalid distance too far back » → préférer le flux fichier pour un schéma à conserver (URL ok sous ~500 chars).
- Mermaid → PNG direct (`-e`) cassé → toujours `mmd → drawio` puis export.
- **Ne pas archiver une sortie layout ELK** : le ré-arrangement automatique déforme les containers → archiver l'original (positions maîtrisées).
- **« Open from URL » vers SB impossible** : fetch cross-origin sans cookies → 401 + CORS, même SSO partagé entre draw. et sb. (même origine requise).
  → Option écartée : app statique sur draw.datagrandest.net — (a) exigerait une sync bi-directionnelle SB/draw.io selon les éditions ; (b) draw.io est à la racine du domaine, pas de place pour une autre app ce stade. **Décision : rester sur téléchargement + File → Open.**
- Ouverture draw.io : File → Open / glisser-déposer le `.drawio` ; le `.png` (XML embarqué) s'ouvre aussi.

## Tests effectués

- Exports PNG/SVG, Mermaid → drawio → PNG embarqué ✅
- `open_drawio_xml` → URL draw.datagrandest.net (DRAWIO_BASE_URL appliqué) ✅
- `find-shapes.js` ✅ · Plugin SB Draw.io : rendu conforme au PNG ✅

## Fichiers de référence

- `.deb` source supprimé ; test locaux en `/tmp/opencode` nettoyés. CLI = 344 Mo sur disque (`~/.local/opt/drawio`, disque à 62 %).
