Mode développeur (Projet Power BI)
Créer un serveur MCP avec Claude
1- Créer un dossier sur votre poste :
mkdir pbix-mcp-server
cd pbix-mcp-server2- Y placer ces deux fichiers :
3- Installer les “requis” :
pip install -r requirements.txt4- Saisir dans Windows + R :
%APPDATA%\Claude\claude_desktop_config.json5- Dans le fichier JSON, coller
{
"mcpServers": {
"pbix-server": {
"command": "python",
"args": ["C:\\pbix-mcp-server\\pbix_server.py"]
}
}
}6- Redémarrer Claude
7- Vérifier dans Fichier > Paramètres > Développeur :

Je mets ici le “Guide” produit par Claude, lors du passage du projet PBIX vers PBIP :
📊 Guide du serveur MCP PBIP
🎯 Qu'est-ce que PBIP ?
PBIP (Power BI Project) est le nouveau format de fichier pour Power BI Desktop qui remplace progressivement PBIX.
Différences PBIX vs PBIP
| Structure | Archive ZIP binaire | Dossier avec fichiers JSON/texte |
| Contrôle de version | ❌ Difficile (fichier binaire) | ✅ Facile (Git friendly) |
| Modification directe | ❌ Très complexe | ✅ Simple (édition JSON) |
| Collaboration | ❌ Conflits fréquents | ✅ Fusion Git possible |
| Lisibilité | ❌ Format propriétaire | ✅ JSON lisible |
🚀 Avantages du serveur MCP PBIP
- ✅ Modification directe des mesures DAX sans outils externes
- ✅ Lecture simple du modèle de données
- ✅ Import/Export de mesures en JSON
- ✅ Sauvegardes automatiques avant modifications
- ✅ Compatible Git - idéal pour le contrôle de version
- ✅ Pas besoin de Power BI Desktop pour les modifications simples
📋 Structure d'un projet PBIP
MonProjet.pbip/ # Dossier du projet
├── MonProjet.pbip # Fichier principal (métadonnées)
├── MonProjet.Report/ # Dossier du rapport
│ ├── report.pbir # Définition du rapport
│ └── definition/ # Visuels et pages
│ ├── pages/
│ └── ...
└── MonProjet.SemanticModel/ # Dossier du modèle sémantique
├── definition.pbidataset # 🎯 Modèle de données (Tables, Mesures)
├── model.bim # Modèle Analysis Services
└── ...Fichier clé : definition.pbidataset contient toutes les tables, colonnes et mesures DAX en JSON !
🔧 Outils disponibles
Le serveur MCP PBIP offre 12 outils :
📂 Gestion de projet
- load_pbip - Charge un projet PBIP
- list_pbip_structure - Liste la structure du projet
- backup_pbip - Crée une sauvegarde
📊 Lecture du modèle
- read_datamodel_definition - Lit le modèle de données
- list_tables - Liste toutes les tables
- list_dax_measures - Liste les mesures DAX (avec filtre optionnel)
- read_report_definition - Lit la définition du rapport
✏️ Modification des mesures DAX
- add_dax_measure - Ajoute une nouvelle mesure
- update_dax_measure - Modifie une mesure existante
- delete_dax_measure - Supprime une mesure
📥📤 Import/Export
- export_measures_to_json - Exporte toutes les mesures en JSON
- import_measures_from_json - Importe des mesures depuis JSON
💡 Exemples d'utilisation
Charger un projet
load_pbip C:\Projets\MonProjet.pbipOu charger le dossier directement :
load_pbip C:\Projets\MonProjet.pbip\Lister les mesures DAX
list_dax_measuresFiltrer par table :
list_dax_measures table_filter="Ventes"Ajouter une mesure DAX
add_dax_measure
measure_name="Total Ventes"
dax_expression="SUM(Ventes[Montant])"
table_name="Mesures"
description="Somme totale des ventes"
format_string="#,##0.00 €"
display_folder="KPI Ventes"Modifier une mesure
update_dax_measure
measure_name="Total Ventes"
table_name="Mesures"
new_expression="SUMX(Ventes, Ventes[Quantité] * Ventes[PrixUnitaire])"
new_description="Calcul actualisé du total"Supprimer une mesure
delete_dax_measure
measure_name="Mesure Obsolete"
table_name="Mesures"Exporter les mesures
export_measures_to_json C:\Projets\mes_mesures.jsonImporter des mesures
import_measures_from_json C:\Projets\mes_mesures.json📝 Format JSON pour l'import/export
{
"measures": [
{
"table": "Mesures",
"name": "Total Ventes",
"expression": ["SUM(Ventes[Montant])"],
"description": "Somme totale des ventes",
"formatString": "#,##0.00 €",
"displayFolder": "KPI Ventes"
},
{
"table": "Mesures",
"name": "Nombre Clients",
"expression": ["DISTINCTCOUNT(Ventes[ClientID])"],
"description": "Nombre de clients uniques",
"formatString": "#,##0",
"displayFolder": "KPI Clients"
}
]
}🔄 Workflow recommandé
1. Développement collaboratif avec Git
# Clone du projet
git clone https://github.com/team/powerbi-project.git
cd powerbi-project
# Charger le projet
load_pbip MonProjet.pbip
# Ajouter des mesures
add_dax_measure ...
# Commit et push
git add .
git commit -m "Ajout de nouvelles mesures DAX"
git push2. Réutilisation de mesures entre projets
# Exporter depuis le projet source
load_pbip ProjetSource.pbip
export_measures_to_json mesures_communes.json
# Importer dans le projet cible
load_pbip ProjetCible.pbip
import_measures_from_json mesures_communes.json3. Sauvegarde avant modifications
# Charger le projet
load_pbip MonProjet.pbip
# Créer une sauvegarde manuelle
backup_pbip
# Faire des modifications
add_dax_measure ...
update_dax_measure ...
# Une sauvegarde auto est créée avant chaque modification🎓 Bonnes pratiques
Organisation des mesures
- ✅ Créer une table dédiée "Mesures" pour toutes les mesures
- ✅ Utiliser display_folder pour organiser par catégorie
- ✅ Toujours ajouter une description claire
- ✅ Définir le format d'affichage approprié
Nommage des mesures
// ✅ BON
Total Ventes
CA par Client
Croissance % YoY
// ❌ MAUVAIS
tv
chiffre_affaires_divise_par_nombre_clients
croissanceGestion de version
- ✅ Utiliser Git pour versionner le projet PBIP
- ✅ Exporter les mesures en JSON pour la documentation
- ✅ Créer des branches pour tester de nouvelles mesures
- ✅ Faire des commits atomiques par fonctionnalité
⚠️ Limitations et précautions
Limitations
- ❌ Format PBIP uniquement - Ne fonctionne pas avec PBIX
- ⚠️ Pas de validation DAX - Le serveur ne vérifie pas la syntaxe
- ⚠️ Modification manuelle - Power BI doit recharger le fichier
- ⚠️ Pas de gestion des relations - Seulement les mesures DAX
Précautions
- Toujours créer une sauvegarde avant modifications importantes
- Tester les mesures dans Power BI après ajout
- Fermer Power BI avant de modifier le fichier manuellement
- Rouvrir Power BI après les modifications pour recharger
🔧 Configuration du serveur
Installation
pip install mcp pydanticConfiguration Claude Desktop
Windows : %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"pbip-server": {
"command": "python",
"args": ["C:\\chemin\\vers\\pbip_server.py"]
}
}
}Mac : ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"pbip-server": {
"command": "python3",
"args": ["/chemin/vers/pbip_server.py"]
}
}
}🆚 Comparaison avec PBIX
| Lecture structure | ✅ | ✅ |
| Lecture mesures | ⚠️ Complexe | ✅ Simple |
| Ajout mesures | ❌ Génère script seulement | ✅ Modification directe |
| Modification mesures | ❌ | ✅ |
| Suppression mesures | ❌ | ✅ |
| Import/Export | ❌ | ✅ |
| Git friendly | ❌ | ✅ |
| Besoin outils externes | ✅ Tabular Editor | ❌ |
🎯 Cas d'usage avancés
1. Migration PBIX → PBIP
# 1. Ouvrir le PBIX dans Power BI Desktop
# 2. Fichier > Enregistrer sous > Format PBIP
# 3. Charger le PBIP avec le serveur MCP
load_pbip MonProjet.pbip2. Templates de mesures
Créer un fichier template_mesures.json :
{
"measures": [
{
"table": "Mesures",
"name": "Total {METRIC}",
"expression": ["SUM({TABLE}[{COLUMN}])"],
"formatString": "#,##0.00 €"
}
]
}Utiliser pour créer rapidement des mesures similaires.
3. Tests automatisés
# Script de test des mesures
import json
# Exporter les mesures
export_measures_to_json("measures.json")
# Vérifier la syntaxe, conventions de nommage, etc.
with open("measures.json") as f:
measures = json.load(f)
for measure in measures["measures"]:
# Vérifications...
assert measure["description"], f"Pas de description: {measure['name']}"📚 Ressources
🎉 Conclusion
Le serveur MCP PBIP révolutionne la façon de travailler avec Power BI en permettant :
- ✅ Modifications programmatiques directes
- ✅ Collaboration facilitée via Git
- ✅ Automatisation des tâches répétitives
- ✅ Réutilisation de composants entre projets