Date de dernière mise à jour: 2025-05-11 (TDD Wave 8 - Post-MCP generateBacklog fixes)
Ce document décrit les caractéristiques et optimisations qui permettent à Agile Planner MCP Server de fonctionner de manière optimale avec différents modèles de langage (LLMs), conformément à la spécification du Model Context Protocol.
Agile Planner MCP Server a été optimisé pour les LLMs suivants, par ordre de priorité :
- Windsurf (PRIORITÉ 1)
- Claude.ai (PRIORITÉ 2)
- Cursor (PRIORITÉ 3)
| Fonctionnalité | Description | Windsurf | Claude.ai | Cursor |
|---|---|---|---|---|
| Format JSON-RPC 2.0 | Respect strict de la spécification JSON-RPC 2.0 | ✅ | ✅ | ✅ |
| Gestion requêtes string | Capacité à traiter des requêtes sous forme de chaîne JSON | ✅ | ✅ | ✅ |
| Normalisation des paramètres | Gestion intelligente des paramètres manquants ou incomplets | ✅ | ✅ | ✅ |
| Format d'erreur standardisé | Codes d'erreur et messages conformes à JSON-RPC 2.0 | ✅ | ✅ | ✅ |
| Sérialisabilité complète | Garantie que toutes les réponses sont parfaitement sérialisables | ✅ | ✅ | ✅ |
| Réponses adaptatives | Adaptation du format selon le LLM détecté | ✅ | ✅ | ✅ |
- Format JSON-RPC 2.0 rigoureux
- Respect strict de la spécification protocolaire
- Codes d'erreur standardisés conformes à JSON-RPC 2.0
- Gestion robuste des erreurs avec codes et messages explicites
- Traitement des requêtes au format string (caractéristique spécifique à Claude)
- Amélioration de la sérialisation/désérialisation des objets JSON complexes
- Normalisation des détails d'erreur pour garantir la lisibilité
- Détection automatique du format Claude
- Tolérance aux champs manquants dans les requêtes
- Normalisation automatique des paramètres incomplets
- Simplification des structures complexes pour éviter les erreurs de parsing
- Fallbacks intelligents pour les paramètres optionnels
La compatibilité avec chaque LLM est validée par des tests spécifiques :
// Test pour la compatibilité Windsurf
test('Format JSON-RPC 2.0 validé pour Windsurf', async () => {
const result = await handleToolsCall({
params: {
name: 'generateBacklog',
arguments: {
projectName: 'Test Project',
projectDescription: 'Description du projet test'
}
}
});
expect(result).toHaveProperty('content');
});
// Test pour la compatibilité Claude.ai
test('Gestion des requêtes JSON sous forme de string pour Claude', async () => {
const result = await handleToolsCall({
params: JSON.stringify({
name: 'generateBacklog',
arguments: {
projectName: 'Test Project',
projectDescription: 'Description du projet test'
}
})
});
expect(result).toHaveProperty('content');
});
// Test pour la compatibilité Cursor
test('Gestion des requêtes avec champs manquants pour Cursor', async () => {
// Cursor peut omettre certains champs optionnels
const result = await handleToolsCall({
params: {
name: 'generateBacklog',
arguments: {
projectName: 'Test Project'
// projectDescription omis intentionnellement
}
}
});
expect(result).toHaveProperty('content');
});Agile Planner MCP Server est parfaitement compatible avec Windsurf sans configuration spéciale. Toutes les requêtes et réponses suivent strictement la spécification JSON-RPC 2.0.
Pour utiliser Agile Planner MCP Server avec Claude.ai, aucune configuration supplémentaire n'est nécessaire. Le serveur détecte automatiquement le format de requête Claude et adapte sa réponse en conséquence.
Pour une compatibilité optimale avec Cursor, le serveur normalise automatiquement les requêtes incomplètes. Aucune configuration supplémentaire n'est requise.
Si vous rencontrez des problèmes de compatibilité avec un LLM spécifique, vérifiez les points suivants :
- Format de requête : Assurez-vous que la requête suit le format JSON-RPC 2.0 de base.
- Paramètres requis : Vérifiez que les paramètres obligatoires sont bien présents.
- Erreurs spécifiques : Consultez les codes d'erreur et messages pour identifier le problème précis.
- Tests Jest 29.7.0 : Si vous développez de nouveaux tests, assurez-vous d'utiliser la syntaxe correcte pour Jest 29.7.0 :
- Utilisez
.mockResolvedValue()au lieu de.resolves()(obsolète) - Utilisez
.mockReturnValue()au lieu de.returns()(obsolète)
- Utilisez
Pour tout problème persistant, reportez-vous aux tests spécifiques dans tests/mcp-validation/ et aux exemples dans tests/critical/jest-mock-example.ultra-minimal.test.js qui démontrent l'utilisation correcte avec chaque LLM.
Les priorités pour les futures versions sont :
- Support de nouveaux LLMs émergents
- Optimisations de performance spécifiques par LLM
- Détection automatique plus avancée du LLM utilisateur
Une approche ultra-minimale a été adoptée pour garantir la compatibilité multi-LLM de base, conformément à notre stratégie TDD Wave 8. Cette méthode a permis de résoudre des problèmes de compatibilité critiques avec Jest 29.7.0 et d'assurer une base solide de tests.
Tests ultra-minimaux implémentés et passants :
- ✅
errors.ultra-minimal.test.js- 5 tests - ✅
validators-factory.ultra-minimal.test.js- 1 test - ✅
backlog-validator.ultra-minimal.test.js- 3 tests - ✅
feature-validator.ultra-minimal.test.js- 3 tests - ✅
mcp-router.ultra-minimal.test.js- 4 tests - ✅
epic-formatter.ultra-minimal.test.js- 4 tests - ✅
backlog-generator.minimal.test.js- 3 tests - ✅
markdown-generator.ultra-minimal.test.js- 3 tests - ✅
jest-mock-example.ultra-minimal.test.js- 2 tests (preuve de concept) - ✅
multi-llm-compatibility.ultra-minimal.test.js- 3 tests (Windsurf, Claude, Cursor)
- ✅ Syntaxe Jest 29.7.0 :
.resolves()→.mockResolvedValue()et.returns()→.mockReturnValue() - ✅ Correction de l'erreur
truncatedOutput is not defineddans le scriptrun-final-tests.js - ✅ Correction du bug dans
feature-generator.jsqui causait des erreurs en cascade - ✅ Amélioration de la robustesse de
generateBacklogvia l'interface MCP stdio (gestion des erreurs et génération markdown).
| Catégorie | Statut | LLMs supportés |
|---|---|---|
| Tests critiques | ✅ Corrigés (10 tests) | Windsurf, Claude, Cursor |
| Tests MCP | ✅ Corrigés | Windsurf, Claude, Cursor |
| Tests d'intégration | ✅ Corrigés | Tous |
| Tests formatters | ✅ Corrigés | Tous |
| Tests validators | ✅ Corrigés | Tous |
| Tests générateurs | 🔄 En cours | Windsurf, Claude |
Consultez le fichier TEST-ROADMAP.md pour un aperçu détaillé de l'avancement des tests.