Un serveur MCP (Model Context Protocol) développé en Java pour tester les performances du client Discovery Intech.
- run_performance_test - Exécute un test de performance unique
- run_load_test - Exécute un test de charge avec plusieurs requêtes concurrent es
- analyze_test_results - Analyse et résume les résultats des tests
- monitor_costs - Surveille et suit les coûts de l'API
- benchmark_scenarios - Exécute des scénarios de benchmark prédéfinis
- export_results - Exporte les résultats vers différents formats
- Java 21 ou supérieur
- Maven 3.8+
- Le client Discovery Intech en cours d'exécution (par défaut sur http://localhost:8072)
- Cloner le projet
- Compiler avec Maven :
mvn clean compilejava -cp target/classes com.dicovery.performance.mcp.test.server.PerformanceTestServer --stdiojava -cp target/classes com.dicovery.performance.mcp.test.server.PerformanceTestServerjava -cp target/classes com.dicovery.performance.mcp.test.server.PerformanceTestServer --streamable-httpQuand le serveur fonctionne en mode HTTP :
- MCP endpoint : http://localhost:45451/
- SSE endpoint : http://localhost:45451/sse
- Health check : http://localhost:45451/api/health
{
"query": "Créez un dataset complet sur toutes les solutions Sage de Discovery Intech",
"targetUrl": "http://localhost:8072",
"testId": "test_sage_001"
}{
"queries": [
"Créez un dataset sur les solutions Sage",
"Générez un dataset sur les solutions QAD",
"Produisez un dataset sur Microsoft Dynamics 365"
],
"concurrentUsers": 5,
"requestsPerUser": 2,
"targetUrl": "http://localhost:8072"
}{
"scenarios": ["sage", "qad", "microsoft", "sap"],
"targetUrl": "http://localhost:8072"
}Scénarios disponibles :
sage: Solutions Sageqad: Solutions QADmicrosoft: Microsoft Dynamics 365sap: Solutions SAPsectors: Secteurs d'activitéservices: Services proposéscompany: Information sur l'entrepriseall: Tous les scénarios
{
"testIds": ["test_sage_001", "test_qad_002"],
"generateReport": true
}{
"timeframe": "day",
"modelName": "llama-3.1-8b-instant"
}Options de timeframe : hour, day, week
{
"format": "json",
"filepath": "/tmp/test_results.json",
"includeDetails": true
}Formats disponibles : json, csv, html
Pour chaque test, les métriques suivantes sont collectées :
- Temps de réponse (ms)
- Nombre de tokens utilisés (estimation)
- Coût estimé (basé sur le pricing Groq)
- Taille du dataset (nombre d'éléments)
- Nombre d'appels MCP effectués
- URLs récupérées
- Status de réussite/échec
- Messages d'erreur (si applicable)
{
"testId": "test_001",
"timestamp": "2025-01-XX:XX:XX",
"query": "Question de test",
"responseTime": 15000,
"tokensUsed": 1500,
"cost": 0.12,
"success": true,
"datasetSize": 25,
"mcpCallsCount": 8,
"urlsFetched": ["https://www.discoveryintech.com/..."],
"errorMessage": null
}{
"testId": "load_test_123",
"startTime": "2025-01-XX:XX:XX",
"endTime": "2025-01-XX:XX:XX",
"totalTests": 10,
"successfulTests": 9,
"failedTests": 1,
"averageResponseTime": 12500.5,
"totalTokens": 15000,
"totalCost": 1.25,
"concurrentUsers": 5,
"requestsPerUser": 2
}Le serveur utilise les ports suivants par défaut :
- HTTP/SSE : 45451
- Health check : 45451/api/health
Pour modifier la configuration, vous pouvez :
- Modifier les constantes dans le code source
- Utiliser des variables d'environnement
- Ajouter un fichier application.properties
Les logs sont affichés sur stderr pour ne pas interférer avec le protocole MCP sur stdout.
src/main/java/com/dicovery/performance/mcp/test/server/
├── PerformanceTestServer.java # Classe principale
└── README.md # Documentation
mvn clean compile
mvn spring-boot:run -Dspring-boot.run.arguments="--stdio"mvn test- Connexion refusée : Vérifiez que le client Discovery Intech est en cours d'exécution
- Timeout : Augmentez le timeout pour les requêtes longues
- Erreur de parsing JSON : Vérifiez le format des requêtes
Activez les logs détaillés en ajoutant :
-Dlogging.level.com.dicovery=DEBUG- Fork le projet
- Créez une branche feature
- Committez vos changements
- Pushez vers la branche
- Créez une Pull Request