Skip to main content
Glama
saidaitsalah03-stack

BorneFlow MCP Server

README.md
# BorneFlow MCP Server

> Serveur Model Context Protocol simulant un Maximo fictif pour le POC IBM Bob (PFE CGI).

Ce serveur expose les données métier de BorneFlow (bornes de recharge, ordres de maintenance, techniciens) à un agent IA via le protocole MCP. Il permet à Bob (ou Claude Code / Cursor) d'interroger un faux Maximo en langage naturel, et surtout d'**analyser les dépendances du codebase avant toute modification**.

⚠️ **100 % synthétique.** Aucune donnée réelle SNCF / CGI / client. Domaine fictif (bornes de recharge électrique).

---

## Prérequis

- Python 3.10+ (testé sur 3.12)
- `pip`

---

## Installation (Windows 11)

```powershell
# 1. Se placer dans le dossier du serveur
cd C:\chemin\vers\borneflow-mcp-server

# 2. (Recommandé) Créer un environnement virtuel isolé
python -m venv .venv
.\.venv\Scripts\Activate.ps1

# 3. Installer les dépendances
pip install -e .

# 4. Générer les données synthétiques (30 bornes, 100 ordres, 20 techniciens)
python -m borneflow_mcp.generate_data
```

Sortie attendue :
```
  stations.json                    30 enregistrements
  maintenance_orders.json         100 enregistrements
  technicians.json                 20 enregistrements
```

---

## Vérifier que le serveur démarre

```powershell
python -m borneflow_mcp.server
```

Sortie attendue :
```
INFO [borneflow_mcp] Démarrage du serveur MCP borneflow v0.1.0
INFO [borneflow_mcp] Données chargées : 30 stations, 100 ordres, 20 techniciens
```

Le serveur attend alors des messages MCP sur stdin (c'est normal qu'il "se bloque" : il attend que Bob lui parle). `Ctrl+C` pour arrêter.

---

## Connexion à IBM Bob

Crée (ou complète) le fichier `.bob/mcp.json` **à la racine du projet `borneflow`** (pas du serveur) :

```json
{
  "mcpServers": {
    "borneflow": {
      "command": "C:\\chemin\\vers\\borneflow-mcp-server\\.venv\\Scripts\\python.exe",
      "args": ["-m", "borneflow_mcp.server"],
      "cwd": "C:\\chemin\\vers\\borneflow-mcp-server"
    }
  }
}
```

Points importants :
- `command` doit pointer vers le `python.exe` **du venv** (sinon les dépendances `mcp` ne seront pas trouvées)
- `cwd` doit être le dossier du serveur (pour qu'il trouve `data/`)
- Les `\` doivent être doublés (`\\`) en JSON

Après modification, recharge la fenêtre VS Code (`Ctrl+Shift+P` → "Reload Window"). Bob devrait alors lister les 8 outils `borneflow` dans son panneau MCP.

---

## Capacités exposées

### 8 Tools (outils interrogeables)

| Outil | Usage |
|---|---|
| `query_stations` | Liste/filtre les bornes (statut, ville, puissance) |
| `get_station` | Détail d'une borne par externalId |
| `list_maintenance_orders` | Liste/filtre les ordres de maintenance |
| `get_maintenance_order` | Détail d'un ordre |
| `find_technician_by_matricule` | Recherche technicien (lecture seule) |
| `get_orders_statistics` | Statistiques agrégées |
| `stations_needing_maintenance` | Bornes sans maintenance depuis N jours |
| `analyze_dependencies` | **Graphe de dépendances d'un composant (analyse d'impact)** |

### 3 Resources (données contextuelles)

| URI | Contenu |
|---|---|
| `borneflow://schema/data-model` | Schéma des entités métier |
| `borneflow://docs/architecture` | Architecture en couches du codebase |
| `borneflow://components/graph` | Graphe des composants (JSON) |

### 3 Prompts (templates réutilisables)

| Prompt | Usage |
|---|---|
| `analyze_impact_before_change` | Analyse d'impact avant modification |
| `security_review_pre_commit` | Revue de sécurité pré-commit |
| `diagnose_station` | Diagnostic complet d'une borne |

---

## Tout est en lecture seule

Cette version n'expose **aucun outil d'écriture** (pas de création/modification/suppression). C'est un choix de sécurité conforme aux garde-fous du POC : un agent IA ne peut que lire le faux Maximo, jamais le modifier. Une éventuelle branche `with-write` (avec validation humaine) pourra être ajoutée ultérieurement.

---

## Tester sans Bob (validation rapide)

```powershell
python -m pytest tests/
```

---

## Structure

```
borneflow-mcp-server/
├── pyproject.toml
├── README.md
├── data/                          # Données synthétiques générées
│   ├── stations.json
│   ├── maintenance_orders.json
│   └── technicians.json
├── src/borneflow_mcp/
│   ├── __init__.py
│   ├── server.py                  # Serveur MCP (tools/resources/prompts)
│   ├── data_store.py              # Chargement + requêtes en mémoire
│   ├── dependencies.py            # Graphe de dépendances (analyse d'impact)
│   └── generate_data.py           # Générateur de données fictives
└── tests/
    └── test_data_store.py
```

---

*POC IBM Bob — Stage CGI — version 0.1.0*

Maintenance

ActivityMaintained
ResponsivenessNo issues