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*
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues