
Security News
Axios Maintainer Confirms Social Engineering Attack Behind npm Compromise
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.
@symplessp/dendreo-mcp
Advanced tools
MCP server for Dendreo training management analytics with Claude Desktop
Serveur MCP (Model Context Protocol) pour l'intégration de Claude Desktop avec les données de formation Dendreo. Analysez vos statistiques financiÚres, marges commerciales et performances via une interface conversationnelle naturelle avec Claude.
Version : v2.6.0 | Date : 2025-12-04 | npm : @symplessp/dendreo-mcp@2.6.0 â
9 outils MCP désormais disponibles (nouveau : Quality Tracking)
| Fonctionnalité | Description | Outil |
|---|---|---|
| Projections date estimée signature | Prévisions CA 3-6 mois basées sur c_date_estime_de_signature_devis + pondération success_chance | Pipeline Forecast |
| Analyse devis par commercial | Nb devis créés/signés/perdus par commercial avec taux de signature | Commercial Performance |
| Détail modules devis | Affichage des modules/formations de chaque devis | Pipeline Forecast |
| Fonctionnalité | Description | Seuil |
|---|---|---|
| Taux complĂ©tude enquĂȘtes | Global + par formateur | > 80% |
| Satisfaction | Global + par formateur | > 7/10 |
| Auto-positionnement | Suivi questionnaires manquants | - |
Validation :
Utilisation :
Claude: "Projections CA sur 6 mois basées sur la date estimée de signature"
Claude: "Analyse des devis par commercial pour juillet 2025"
Claude: "Tableau de bord qualité formations juillet 2025"
Version : v2.5.4 | Date : 2025-10-18 | npm : @symplessp/dendreo-mcp@2.5.4
time_period ignoré dans Financial StatsVersion : v2.5.3 | Date : 2025-10-18 | npm : @symplessp/dendreo-mcp@2.5.3
ProblÚme corrigé :
actions_de_formation (formations programmées)/opportunites.php (opportunités/devis)Validation multi-périodes :
Version : v2.5.2 | Date : 2025-10-10
AVANT : Sans dates explicites, retourne octobre 2025 (vide) au lieu d'août 2025 (avec données)
APRĂS : Utilise pĂ©riode intelligente avec fallback sur mois rĂ©cent contenant donnĂ©es
Fix : getDefaultPeriodWithData() cherche 6 mois en arriÚre si période actuelle vide
Validation : Août 2025 correctement retourné (24,703⏠vs 0⏠avant)
AVANT : ParamÚtre commercial_id="2" retourne 0 résultats
APRĂS : Filtrage commercial fonctionnel avec rĂ©solution IDâNom
Fix : Mapping via /administrateurs.php, format "NOM Prénom" cohérent
Validation : 1/1 commercial filtré correctement (était 0/1 avant)
AVANT : Section "Cycle de Vente" affiche "Non attribué" pour 21/21 opportunités (100%)
APRĂS : Attribution correcte des 21/21 opportunitĂ©s aux commerciaux
Fix : Utilisation assigned_to (champ existant API) au lieu de commercial_id (inexistant)
Validation : 21/21 opportunités attribuées (était 0/21 avant)
AVANT : Module roi_canaux affiche "Aucune donnée de canal disponible"
APRĂS : Affichage par marge gĂ©nĂ©rĂ©e (Option A - donnĂ©es les plus fiables)
Fix : Suppression filtre roi_canal > 0 (API ne fournit pas coût acquisition), tri par marge décroissante
Validation : 1 canal affiché ("Déjà client" - 65,636.88⏠marge juillet)
Investigation : Cycles de vente à 0 jours (33-100% selon période) Conclusion : Comportement légitime - 4 indicateurs métier détectés
AVANT : Prévisions basées sur impayés passés (0⏠sur périodes récentes)
APRĂS : PrĂ©visions basĂ©es sur Ă©chĂ©ances FUTURES (39kâŹ/71kâŹ/134kâŹ)
Fix : Filtrage date_echeance > today dans cash-management.ts
ProblÚme : fetchFormationsForKPIs() (23 lignes jamais utilisées)
Fix : Suppression complĂšte du code mort
ProblÚme : analyzeROIFormation() + helpers (63 lignes jamais appelées)
Fix : Suppression complĂšte du code mort
Coverage massif : +361 points sur 5 outils
Validation API Multi-Périodes : Jan/Avr/Juin/Juil/Août 2025
| Rang | Outil | Score | Coverage |
|---|---|---|---|
| đ„ | Outil 3 (Cash Management) | 9.8/10 | 92.50% |
| đ„ | Outil 8 (Team Development) | 9.8/10 | 70.67% |
| đ„ | Outil 4 (Dashboard) | 9.7/10 | 90.00% |
| đ„ | Outil 6 (Pipeline) | 9.7/10 | 92.50% |
| đ„ | Outil 7 (Segmentation) | 9.5/10 | 58.90% |
Outil : 3 - cash-management
AVANT : Prévisions basées sur impayés passés (0⏠sur périodes récentes)
APRĂS : PrĂ©visions basĂ©es sur Ă©chĂ©ances futures (39kâŹ/71kâŹ/134kâŹ)
Fix : Filtrage date_echeance > today + calcul sur factures à échoir
Outil : 1 - financial-stats
AVANT : ParamÚtre time_period complÚtement ignoré (retourne toutes données)
APRĂS : Filtrage fonctionnel (today/week/month/quarter/year)
Fix : Fonction calculatePeriodDates() dans dates.ts
Outil : 4 - executive-dashboard AVANT : 7 valeurs hardcodĂ©es (formateurs:5, dĂ©lai:30j, marge:65%, conversion:35%) APRĂS : Calculs rĂ©els depuis API Fix : Formateurs actifs, dĂ©lai paiement moyen, marge calculĂ©e, taux conversion
Outil : 5 - commercial-performance
AVANT : Section "Activité Devis" analysait factures
APRĂS : Utilisation API /opportunites.php pour vrais devis
Fix : Statistiques devis correctes (créés/envoyés/signés/refusés)
Outil : 7 - segmentation-analysis
AVANT : Filtre uniquement created_after, oubli created_before
APRĂS : Filtrage exact par pĂ©riode (40 formations juillet, pas 268)
Fix : Ajout created_before dans URL API
Outil : 4 - executive-dashboard
AVANT : KPI "Formations ce mois" = 268 (toutes) au lieu de 40
APRĂS : Filtrage correct par pĂ©riode
Fix : Création actionsPeriode filtré utilisé partout
Outils : 2,4 - commercial-analytics, executive-dashboard
AVANT : Septembre 2025 vide = "0âŹ" affichĂ©
APRĂS : DĂ©tection mois avec donnĂ©es (fallback juillet si vide)
Fix : Fonction getDefaultPeriodWithData() cherche 6 mois max
Outils : 1,5 - financial-stats, commercial-performance Fix : Message "đ PĂ©riode analysĂ©e : ..." affichĂ© systĂ©matiquement
Outil : 2 - commercial-analytics
Fix : Fonction formatCommercialName() normalisant en "Prénom NOM"
Outil : 4 - executive-dashboard
Fix : Utilisation nb_places API au lieu de hardcodé 20
Outil : 6 - pipeline-forecast
Fix : ParamÚtres date_debut/date_fin ajoutés (cohérence 8/8 outils)
Outil : 2 - commercial-analytics Fix : Warning "â ïž PĂ©riode future dĂ©tectĂ©e" si demandĂ©e
Outil : 7 - segmentation-analysis Status : Limitation connue documentée (Dendreo crée entreprises au moment premiÚre formation)
Observation : Dans l'environnement sandbox Dendreo, 96.4% des formations sont marquées avec la source "Déjà client".
Détails (Audit Claude Desktop 2025-10-08) :
Distribution sources juillet 2025 (28 formations) :
- Déjà client : 27 formations (96.4%)
- Non renseigné : 1 formation (3.6%)
Cause :
Impact :
Validation code :
Source du CSV : correcte (ligne 193 sources-api.ts)Recommandation :
Date identification : 2025-10-19 Versions affectées : Toutes jusqu'à v2.5.5 Nature : Limitation de l'API Dendreo (pas un bug de notre code)
Pour une mĂȘme pĂ©riode (ex: Juillet 2025), les Outils 2 et 5 retournent des marges diffĂ©rentes par commercial :
| Commercial | Outil 2 (API REST) | Outil 5 (CSV Export) | Ăcart |
|---|---|---|---|
| Commercial A | 42 661⏠(18 form.) | 50 901⏠(24 form.) | +8 240⏠|
| Commercial B | 16 139⏠(12 form.) | 4 723⏠(4 form.) | -11 415⏠|
| TOTAL | 65 637⏠| 65 637⏠| 0⏠â |
Note : Marge totale identique, mais répartition par commercial divergente.
API Dendreo utilise des critÚres de filtrage différents selon l'endpoint :
API REST (/actions_de_formation.php) :
created_after/created_before â Filtre sur date de CRĂATIONExport CSV (/exports.php) :
date_debut/date_fin â Filtre sur date de DĂBUT (colonne "DĂ©but")ConsĂ©quence : Une formation créée en juillet 2025 mais dĂ©butant en janvier 2026 sera :
date_fin=2025-12-31)Source officielle Dendreo :
"For ActionDeFormation objects, you can filter on the start or end date using: started_after, started_before, ended_after, ended_before"
Tests empiriques :
demo/ROOT_CAUSE_FINALE_OUTIL5_VS_OUTIL2.md pour analyse complĂšteRecommandation :
Fix prévu : v2.6.0 - Uniformisation sur API REST pour les deux outils
demo/ROOT_CAUSE_FINALE_OUTIL5_VS_OUTIL2.md - Analyse technique complĂštedemo/BUG_CRITIQUE_OUTIL5_VS_OUTIL2.md - Investigation initiale/tmp/test-export-filtering-v2.js - Prouve CSV filtre sur "DĂ©but"AVANT : Jan/Jul/Aug retournaient donnĂ©es identiques APRĂS : Marges variables par pĂ©riode
Jan 2025 : 15k⏠(23 formations) â
Jul 2025 : 65k⏠(40 formations) â
Aug 2025 : 20k⏠(9 formations) â
Cause : ParamĂštres API date_add_after/date_add_before inexistants
Fix : created_after/created_before (paramĂštres officiels Dendreo)
AVANT : TOP 3 affichait noms entreprises (ex: "ABC COMPANY SAS") APRĂS : Noms rĂ©els des commerciaux
TOP 3 exemple :
1. Jean D. : 42k⏠(10 formations) â
2. Marie L. : 10k⏠(13 formations) â
3. Pierre M. : 9k⏠(11 formations) â
Cause : id_commercial non résolu (IDs numériques bruts)
Fix : Mapping /administrateurs.php pour rĂ©solution ID â Nom
AVANT : 63% opportunitĂ©s non catĂ©gorisĂ©es APRĂS : 0% non catĂ©gorisĂ© (100% prĂ©cision)
Exemple - 15 catégories détectées :
âą Management : 72kâŹ
âą Commerce : 58kâŹ
âą Digital Learning : 73kâŹ
âą Conseil RH : 25kâŹ
... (0⏠"Non catégorisé")
Cause : Parsing HTML c_programme_de_formation (souvent vide)
Fix : API include=devis_modules + mapping id_categorie_module
opp.montant â total_ht_dernier_devis (0⏠â valeurs rĂ©elles)api (15 fake â 84 rĂ©elles opps)!date_delete (64 â 62 personnes actives)Suite complĂšte : 33/33 tests PASS (100%)
â
kpi-1-2-marges-commerciaux.test.ts 6/6 PASS (Bug #1, Bug #2)
â
kpi-3-4-7-9-10-pipeline.test.ts 9/9 PASS (Bug #3, KPI 3-4-7-9-10)
â
kpi-5-6-8-segmentation.test.ts 11/11 PASS (KPI 5-6-8)
â
all-tools-business-validation.test.ts 7/7 PASS (Outils 1, 5, 8)
Fichiers preuves :
PREUVES_1_PAGE.md - SynthĂšse 1 minute (â commencer ici)PREUVES_METIER_BUGS_CORRIGES.md - Rapport dĂ©taillĂ© 5 minutesRAPPORT_TESTS_METIER_PREUVES.md - Analyse technique 10 minutesPREUVE_COMPLETE_*.txt - Outputs Jest bruts (3 fichiers)INDEX_PREUVES_METIER.md - Navigation complĂšteValeurs rĂ©fĂ©rence (exemple pĂ©riode) :
/tmp/preuves_audit_exhaustif/ + rapports completsPrérequis : Claude Desktop uniquement
Configuration Claude Desktop (~/claude_desktop_config.json) :
{
"mcpServers": {
"dendreo-analytics": {
"command": "npx",
"args": ["-y", "@symplessp/dendreo-mcp"],
"env": {
"DENDREO_API_KEY": "your-dendreo-api-key-here",
"DENDREO_BASE_URL": "https://pro.dendreo.com/your-account-name/api"
}
}
}
}
â ïž Important :
- Remplacez
your-dendreo-api-key-herepar votre vraie clé API Dendreo- Remplacez
your-account-namepar le nom de votre compte Dendreo (fourni par votre administrateur)
RedĂ©marrez Claude Desktop - C'est tout ! â
.env avec DENDREO_BASE_URL, DENDREO_API_KEY.out/kpi_export_YYYY-MM.json couvrant 10/10 KPI.Pour contribuer ou modifier le code :
git clone https://github.com/SymplesSSP/dendreo-mcp-analytics
cd dendreo-mcp-analytics
npm install
npm run build
Configuration locale
Copiez .env.example vers .env et configurez vos credentials.
Test local
npm run dev
Une fois configuré, vous pouvez utiliser Claude Desktop pour analyser vos données Dendreo :
Analyse financiĂšre globale
"Quel a été mon chiffre d'affaires ce mois-ci ?"
"Montre-moi mes recettes prévisionnelles"
Marges commerciales đ
"Montre-moi mes marges commerciales de septembre"
"Quelle est ma marge totale ce mois-ci ?"
"Analyse la rentabilité de mes formations"
Performance par client đ
"Montre-moi les statistiques de mon client ACME Corp"
"Analyse les marges du client ID 12345"
"Top 5 clients par marge"
"Quelle est la rentabilité du client Example SA ?"
Limites configurables đ NOUVEAU !
"Montre-moi TOUS mes clients (pas seulement le TOP 5)"
"Liste complĂšte des mauvais payeurs"
"Affiche les 10 meilleurs clients par CA"
"Analyse financiĂšre complĂšte sans limitation"
Analyse par type de client
"Analyse mes prospects non-clients"
"Performances de mes fournisseurs"
dendreo_get_financial_statsđ Statistiques financiĂšres globales des entreprises et formations.
dendreo_commercial_analyticsđ° Analyse commerciale avancĂ©e avec marges prĂ©cises depuis exports CSV.
dendreo_cash_managementđž Gestion de trĂ©sorerie avec analyse des impayĂ©s et prĂ©visions.
dendreo_executive_dashboardđ Dashboard exĂ©cutif avec KPIs stratĂ©giques et alertes business.
dendreo_commercial_performance đđŻ Performance commerciale par reprĂ©sentant avec marges, conversion, cycle de vente.
ParamĂštres :
periode : "semaine", "mois", "trimestre"metrics : "marge", "devis", "conversion", "cycle"commercial_id (optionnel) : Analyse d'un commercial spĂ©cifiquelimit : ContrĂŽle d'affichage (0 = tous)dendreo_pipeline_forecast đđź PrĂ©visions pipeline avec probabilitĂ©s de signature et analyse des risques.
ParamĂštres :
horizon : "1_mois", "3_mois", "6_mois"include_probabilities : Calculs de probabilitĂ© (dĂ©faut: true)seuil_risque : Seuil en % pour opportunitĂ©s Ă risque (dĂ©faut: 30)commercial_id (optionnel) : Filtrage par commerciallimit : Nombre max d'opportunitĂ©s par sectiondendreo_segmentation_analysis đđ Segmentation clients par taille d'entreprise, sources et thĂ©matiques.
Types d'analyses :
effectif : Segmentation par taille d'entreprise (TPE/PME/ETI)thematique : Analyse par domaines de formationsource : Performance par canaux d'acquisitionnouveau_client : Analyse des nouveaux clientsdendreo_team_development đđ„ Analytics Ă©quipe avec ROI formation, certifications et matrices de compĂ©tences.
Types d'analyses :
certifications : Ătat des certifications Ă©quipematrice_competences : Cartographie des compĂ©tencesroi_formation : ROI des formations internesplan_formation : Plans de dĂ©veloppement personnalisĂ©sDĂ©finir USE_MOCK_API=true dans .env pour utiliser des donnĂ©es simulĂ©es.
CRITIQUE : Toujours tester avec USE_MOCK_API=false avant déploiement.
# Vérifier données équipe réelles (noms authentiques, pas données mockées)
echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": {"name": "dendreo_team_development", "arguments": {"analysis_type": "matrice_competences"}}}' | USE_MOCK_API=false node dist/index.js
# Vérifier ROI réel (calculs variables, pas 900% uniforme)
echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": {"name": "dendreo_team_development", "arguments": {"analysis_type": "roi_formation"}}}' | USE_MOCK_API=false node dist/index.js
# VĂ©rifier segmentation rĂ©elle (montants rĂ©els, pas 0âŹ)
echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": {"name": "dendreo_segmentation_analysis", "arguments": {"analysis_type": "thematique"}}}' | USE_MOCK_API=false node dist/index.js
Tests standard :
npm test # Tests unitaires (206/206 tests - 100% PASS)
npm run validate # Build + tests + validation installation
npm run test-api # Test rapide connectivité API
Tests critiques business :
npm run test-critical # Tests d'exactitude financiĂšre
npm run test-financial-regression # Validation avec valeurs de référence
npm run validate-production # Suite complĂšte pour production
đ Important : Les tests garantissent la prĂ©cision des calculs financiers et la prĂ©sentation neutre des donnĂ©es (v1.6.2+).
src/
âââ index.ts # Point d'entrĂ©e MCP
âââ services/
â âââ api-interface.ts # Interface commune
â âââ dendreo-api.ts # Client API Dendreo
â âââ mock-dendreo-api.ts # DonnĂ©es simulĂ©es
âââ tools/
â âââ financial-stats.ts # Outil statistiques financiĂšres
âââ types/
âââ dendreo.ts # Types TypeScript
404 Not Found sur endpoints API
Permission denied
Serveur MCP ne démarre pas
npm run build pour compiler le TypeScriptActivez les logs détaillés en définissant :
export DEBUG=dendreo:*
npm test # 206/206 tests (100% PASS)
npm run test-critical # Tests business logic critiques
npm run validate-production # Validation complÚte avec API réelle
Prompt d'audit Claude Desktop pour validation complĂšte :
Audit complet serveur MCP Dendreo v2.1.4 - vérifier données 100% réelles :
1. Test financial stats avec top clients
2. Test analytics marges formations
3. Test cash management impayés
4. Test dashboard exécutif alertes
5. Test performance commerciale par représentant
6. Test pipeline forecast 3 mois
7. Test segmentation (4 types)
8. Test team development (4 analyses)
Confirmer : noms commerciaux réels, montants calculés, ROI authentique, zéro message "temporairement indisponible"
MIT - Voir LICENSE pour détails.
FAQs
MCP server for Dendreo training management analytics with Claude Desktop
The npm package @symplessp/dendreo-mcp receives a total of 58 weekly downloads. As such, @symplessp/dendreo-mcp popularity was classified as not popular.
We found that @symplessp/dendreo-mcp demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.

Security News
The Axios compromise shows how time-dependent dependency resolution makes exposure harder to detect and contain.