---
title: "MCP maison VFG — guide d'installation et état machine FG (15 août 2026)"
subtitle: "Catalogue T1/T2/T3, Cursor workspace vs global, loopback vs VPS, règles agent, checklist next steps — sans secrets"
date: 2026-08-15
time: "13:13"
author: FG + Cursor
status: pub
tags: ["mcp", "workflows-agentiques", "cursor", "guide", "etat-des-lieux", "vps", "catalogue", "publication"]
---

# MCP maison VFG — guide d'installation et état machine FG (15 août 2026)

## TL;DR

- **MCP ici** = outils structurés que l'agent appelle avant de greper le disque : docs SSOT, bus fleet, actions gate, plus utilitaires (markdown, watts, commands, telemetry).
- **Catalogue usage** : T1 = docs / feed / gate ; T2 = markdown / neuralwatts ; T3 = commands / telemetry (+ Citadelle optionnelle).
- **Sur la machine FG (2026-08-15)** : trio T1 câblé dans le workspace `VFG_PT__` et **vivant** en public (HTTP 200) ; `~/.cursor/mcp.json` global = `{}` ; **aucun** Bearer T2/T3 ni `VFG_ADMIN_PASSWORD` en variables utilisateur ; ports loopback MCP **fermés**.
- Ce billet **synthétise** et pointe les SSOT existants — il ne remplace pas le catalogue ni les runbooks.

---

## 1. Qu'est-ce qu'un MCP « maison » ici ?

Un serveur MCP VFG expose une petite surface d'outils (boot, search docs, snapshot, wizz, publish…) que Cursor / OpenCode / Claude appellent via HTTP (SSE ou JSON-RPC). L'intérêt n'est pas « encore une API » : c'est **réduire le contexte** et **forcer un ordre** — lire la carte avant de fouiller le terrain.

Phrase agent (canon) :

> Lis **vfg-docs** avant grep local ; **vfg-feed** pour le bus ; **vfg-gate** seulement pour agir.

Deux grilles se croisent (ne pas les confondre) :

| Grille | Sens | Exemple |
|--------|------|---------|
| **Catalogue usage T1/T2/T3** | Priorité de charge côté agent | T1 always-on, T2 à la demande, T3 ponctuel |
| **Déploiement loopback / VPS** | Où tourne le process | `127.0.0.1:434x` vs `https://*.vfg.lol` / `gandalf.vfg.lol` |

La synthèse juin documente le catalogue ; le runbook juillet documente le déploiement et l'incident 502. Les deux restent valides.

---

## 2. Catalogue des 7 (+ Citadelle)

Placeholders uniquement. Les path-secrets et Bearer ne vont **jamais** dans un article, un commit, ou un chat.

| Tier | Serveur | Rôle | Auth | Endpoint (forme) | Ports loopback |
|------|---------|------|------|------------------|----------------|
| **T1** | `vfg-docs` | Boot, search SSOT, timeline, graphe | path-secret | `https://mcp-docs.vfg.lol/<path-secret>/mcp` | `4340` |
| **T1** | `vfg-feed` | Snapshot fleet, idées IdeaPit, events, hotfix runbook | path-secret | `https://gandalf.vfg.lol/vfg-feed-mcp/<path-secret>/mcp` (alt. `mcp-feed.vfg.lol`) | `4341` |
| **T1** | `vfg-gate` | Wizz / OSC / hotfix deploy (écriture) | path-secret | `https://gandalf.vfg.lol/vfg-gate-mcp/<path-secret>/mcp` (alt. `mcp-vfg.vfg.lol`) | `4342` |
| **T2** | `vfg-markdown` | Index plein-texte massif | path-secret | `https://gandalf.vfg.lol/vfg-markdown-mcp/<path-secret>/mcp` | `5197` |
| **T2** | `neuralwatts` | Télémétrie énergétique IA | Bearer `NEURALWATTS_AUTH_TOKEN` | `https://gandalf.vfg.lol/vfg-neuralwatts-mcp/mcp` | `5194` |
| **T3** | `vfg-commands` | CLI workspace + **`vfg_commands_devblog_publish`** | Bearer `MCP_COMMANDS_AUTH_TOKEN` | `https://gandalf.vfg.lol/vfg-commands-mcp/mcp` | `5199` |
| **T3** | `agent-telemetry` | Sessions / patterns agents | Bearer `TELEMETRY_AUTH_TOKEN` | `https://gandalf.vfg.lol/vfg-telemetry-mcp/mcp` | `5198` |
| opt. | `citadelle` | Bridge Citadelle (`didou.vfg.lol`) | `CITADELLE_TOKEN` | client local → URL Citadelle | — |

Health publics utiles (sans secret) : `https://mcp-docs.vfg.lol/healthz`, `https://mcp-feed.vfg.lol/healthz`, `https://mcp-vfg.vfg.lol/healthz`.

Inventaire outils T1 (rappel court) : docs ≈ 5 outils lecture ; feed ≈ 9 lecture ; gate ≈ 7 écriture — détail dans `.cursor/MCP-README.md`.

---

## 3. Install Cursor — workspace vs global

### 3.1 Workspace `D:\VFG_PT__\.cursor\mcp.json` (recommandé pour le metaprojet)

C'est la config **effective** sur FG aujourd'hui : trio T1 uniquement (`vfg-docs`, `vfg-feed`, `vfg-gate`), URLs VPS avec path-secret.

Avantage : scoped au workspace VFG ; pas de pollution des autres projets Cursor.

### 3.2 Global `C:\Users\FG\.cursor\mcp.json`

Aujourd'hui : `{"mcpServers": {}}`.

Pour avoir le trio T1 **dans tout Cursor** (hors workspace VFG_PT__) :

1. Copier le bloc T1 du workspace (ou générer via le kit catalogue / `generate-mcp-configs` quand dispo).
2. **Ne pas** coller de Bearer en clair — utiliser `${MCP_COMMANDS_AUTH_TOKEN}` etc. pour T2/T3.
3. Reload MCP dans Cursor.

### 3.3 Variables d'environnement (noms seulement)

| Variable | Pour |
|----------|------|
| `MCP_COMMANDS_AUTH_TOKEN` | `vfg-commands` (publish blog inclus) |
| `TELEMETRY_AUTH_TOKEN` | `agent-telemetry` |
| `NEURALWATTS_AUTH_TOKEN` | `neuralwatts` |
| `CITADELLE_TOKEN` | Citadelle (optionnel) |
| `VFG_ADMIN_BACKEND_URL` / `VFG_ADMIN_PASSWORD` | publish HTTP direct (`publish-local.mjs`) |

Définir au niveau **utilisateur Windows**, redémarrer Cursor. Ne jamais committer les valeurs.

Doc client multi-IDE : `RAPPORT-EXPERIENTIEL/docs/SETUP-MCP-BLOG-ARTICLES.md` et `docs/MCP-CROSS-IDE-SETUP.md` (attention : certains docs historiques peuvent contenir des secrets — les traiter comme hors-ligne, pas comme source à republier).

---

## 4. Variante loopback vs VPS

| Mode | Quand | Comment |
|------|-------|---------|
| **VPS (recommandé FG portable / always-on)** | Dev agent quotidien sans stack locale | Endpoints `*.vfg.lol` / `gandalf.vfg.lol` dans `mcp.json` |
| **Loopback** | Debug serveur, slice docs fraîche, hotfix local | Démarrer la stack locale (`START-ALL-MCP-SERVERS.ps1` / scripts VFVFGPT), pointer `http://127.0.0.1:4340|4341|4342/...` |

**Règle anti-doublon** : ne jamais charger **en même temps** le même serveur logique en local **et** en VPS — outils dupliqués, latence, confusion.

Sur FG au 15/08 : ports `4340–4342` et `5194/5197/5198/5199` = **closed** → mode VPS uniquement, cohérent avec le câblage workspace.

---

## 5. Règles d'usage agent

1. **docs avant grep** — `vfg_search_docs` / `vfg_boot_context` / `vfg_ssot_get` avant Read/Grep sur STATUS, handoffs, SSOT.
2. **feed pour le vivant** — idées `#N`, snapshot, events, runbook hotfix.
3. **gate seul pour agir** — wizz, OSC, deploy R3 (`confirmR3:true`) ; jamais en doublon ouvert.
4. **markdown = secondaire** — index lourd ; docs reste primaire SSOT-aware.
5. **publish blog** — outil `vfg_commands_devblog_publish` (T3) **ou** `node scripts/publish-local.mjs …` avec `VFG_ADMIN_*` ; un `git push` ne publie plus les articles.
6. **Hors MCP** — code `src/`, git dirty, tests : outils locaux.

Règle Cursor workspace : `.cursor/rules/vfg-mcp-docs.mdc`. Guide contexte : billet MCP-first (lien §7).

---

## 6. État machine FG — 2026-08-15

Sondage live (Windows FG), **sans** exposer de secrets :

| Contrôle | Résultat |
|----------|----------|
| Workspace `VFG_PT__\.cursor\mcp.json` | T1 présent : `vfg-docs`, `vfg-feed`, `vfg-gate` |
| Global `~\.cursor\mcp.json` | `mcpServers: {}` |
| `mcp-docs` / `mcp-feed` / `mcp-vfg` `/healthz` | **200** |
| Endpoints MCP T1 (path-secret) | **200** (SSE) |
| `gandalf…/vfg-commands-mcp/mcp` sans Bearer | **404** (route ou auth côté edge — pas utilisable sans token) |
| `gandalf…/vfg-telemetry-mcp/mcp` sans Bearer | **404** |
| `gandalf…/vfg-neuralwatts-mcp/mcp` sans Bearer | **401** (vivant, auth requise) |
| Env User/Process : `MCP_COMMANDS_AUTH_TOKEN`, `TELEMETRY_AUTH_TOKEN`, `NEURALWATTS_AUTH_TOKEN`, `CITADELLE_TOKEN`, `VFG_ADMIN_PASSWORD` | **ABSENT** |
| `.env` RAPPORT-EXPERIENTIEL | clés : `PORT` seulement |
| `.env` VFVFGPT | pas de `VFG_ADMIN_PASSWORD` |
| Ports loopback MCP | tous **closed** |
| MCP `vfg-commands` dans **cette** session Cursor (hors workspace VFG) | **non branché** → publish MCP indisponible ici |

**Ce qui marche** : lire docs / feed / gate depuis le workspace VFG_PT__ (si Cursor a chargé le projet). Santé publique T1 OK.

**Ce qui manque** : tokens T2/T3 ; password admin blog côté user ; câblage global ; stack loopback ; outil publish dans les sessions hors workspace.

---

## 7. Liens SSOT (ne pas dupliquer)

| Sujet | Lien |
|-------|------|
| Tag MCP live | https://blog.vfg.lol/?tag=mcp |
| Mes 3 MCP (carte / bus / wizz) | `/devblog/posts/vfvfgpt/2026-06-16-mcp-audit-pratique.md.html` |
| Synthèse hiérarchie 3 tiers (juin) | `/devblog/posts/metaprojet/29-06-26-0313-synthese-mcp-hierarchie.md.html` |
| Runbook architecture juillet | `/devblog/posts/workflows-agentiques/2026-07-08-architecture-mcp-trois-tiers-runbook-juillet.md.html` |
| Guide MCP-first (contexte) | `/devblog/posts/workflows-agentiques/2026-07-08-reduire-contexte-agent-guide-mcp-first.md.html` |
| PR #42 catalogue v3 | `/devblog/posts/metaprojet/2026-07-09-pr42-catalogue-mcp-v3.md.html` |
| Câblage 3 configs | `/devblog/posts/workflows-agentiques/2026-07-09-cablage-mcp-3-configs-anomalie.md.html` |
| Workflow publish local/prod/MCP | `/devblog/posts/workflows-agentiques/2026-07-09-2023_workflow-publication-blog-local-prod-mcp.md.html` |
| Comment publier (recette courte) | article du jour « Comment publier sur blog.vfg.lol » |
| Guide agent publish | `/devblog/posts/workflows-agentiques/2026-07-17-2001_guide-agent-publier-article-blog-vfg-environnement.md.html` |
| MCP-README workspace | `D:\VFG_PT__\.cursor\MCP-README.md` |
| Setup clients blog | `RAPPORT-EXPERIENTIEL/docs/SETUP-MCP-BLOG-ARTICLES.md` |
| Workflow publication | `RAPPORT-EXPERIENTIEL/docs/WORKFLOW-PUBLICATION-BLOG.md` |

---

## 8. Checklist next steps (FG)

- [ ] **Copier le trio T1** workspace → `C:\Users\FG\.cursor\mcp.json` (Reload MCP).
- [ ] Poser les variables User : `MCP_COMMANDS_AUTH_TOKEN`, `TELEMETRY_AUTH_TOKEN` (et optionnel `NEURALWATTS_AUTH_TOKEN`, `CITADELLE_TOKEN`).
- [ ] Ajouter T2/T3 dans le `mcp.json` choisi (workspace **ou** global — pas les deux pour le même serveur).
- [ ] Poser `VFG_ADMIN_PASSWORD` (+ `VFG_ADMIN_BACKEND_URL=https://blog.vfg.lol`) pour publish CLI.
- [ ] Smoke : `vfg_boot_context` + `vfg_gate_health` ; puis draft via `vfg_commands_devblog_publish` ou `publish-local.mjs`.
- [ ] Ne **pas** démarrer loopback en parallèle du VPS tant que le câblage n'est pas explicitement « local-only ».
- [ ] Traiter les docs cross-IDE qui contiennent encore des secrets en clair : rotation + purge des copies republables.

### Commande publish (quand le secret admin est dispo)

```bash
cd D:\VFG_PT__\RAPPORT-EXPERIENTIEL
# dry-run
node scripts/publish-local.mjs devblog/posts/workflows-agentiques/2026-08-15-guide-mcp-maison-vfg-etat-machine-fg.md --dry-run

# prod
set VFG_ADMIN_BACKEND_URL=https://blog.vfg.lol
set VFG_ADMIN_PASSWORD=<secret-local-jamais-commité>
node scripts/publish-local.mjs devblog/posts/workflows-agentiques/2026-08-15-guide-mcp-maison-vfg-etat-machine-fg.md
```

URL attendue après publish :

`https://blog.vfg.lol/devblog/posts/workflows-agentiques/2026-08-15-guide-mcp-maison-vfg-etat-machine-fg.md.html`

---

## 9. Méthode de ce sondage

- Boot VFG : `node scripts/dev-meta.js boot --project blog` (VFVFGPT).
- Croisement blog `?tag=mcp`, MCP-README, SETUP-MCP-BLOG-ARTICLES, MCP-CROSS-IDE-SETUP, WORKFLOW-PUBLICATION-BLOG, articles juillet (runbook, MCP-first, câblage, PR#42).
- Probes HTTP status-only ; inventaire env **noms** ; inspection `mcp.json` sans recopier les path-secrets.

_Fin — guide opérationnel + rapport d'état, 2026-08-15._