Ce dépôt contient l'implémentation de la stack d'agents MCP démontrant un workflow de développement logiciel augmenté par l'intelligence artificielle.
🔗 Voir le schéma d'architecture dynamique sur Excalidraw
Le schéma présente une organisation où le Développeur IA-augmented travaille au sein de son IDE dans un cycle d'itération autonome (workflow/tests). Il collabore via le protocole MCP (Model Context Protocol) avec des agents spécialisés :
- 🔌 Gravity Oracle : Répond à "Comment je m'intègre ?" (connaissance des contrats API et mock de référence).
- 🧪 Gravity Shield : Répond à "Comment je teste ?" (connaissance des contraintes de qualité et validation de l'intégration continue).
- 🛠️ Gravity Deploy : Répond à "Comment je déploie ?" (connaissance des règles de déploiements et modélisation pour
dev/uat/prd). - 📋 Gravity Reports : Répond à "Comment je reporte ?" (connaissance des besoins, roadmap, ticketing, documentation).
Le projet est composé des conteneurs suivants orchestrés par docker-compose.yml :
-
agent-gravity-oracle(Le Registre & Mock) :- Expose une API REST sur le port
3000et un serveur MCP SSE sur le port3001. - Gère le mock dynamique de 10 microservices e-commerce.
- Expose une API REST sur le port
-
agent-gravity-shield(La Validation CI) :- Expose une API REST (Healthcheck) sur le port
3010et un serveur MCP SSE sur le port3011. - Analyse le code produit (via AST Python) pour valider la qualité, l'intégration des contrats (gestion du 404) et la sécurité.
- Expose une API REST (Healthcheck) sur le port
-
agent-gravity-deploy(Le Platform Engineer) :- Expose une API REST (Healthcheck) sur le port
3040et un serveur MCP SSE sur le port3041. - Permet de générer les configurations Docker et Helm Kubernetes standard, ainsi que de valider le déploiement sur les environnements cibles.
- Expose une API REST (Healthcheck) sur le port
-
agent-gravity-reports(La Roadmap et Documentation) :- Expose une API REST (Healthcheck) sur le port
3030et un serveur MCP SSE sur le port3031. - Met à jour le backlog/ticketing et documente l'état d'architecture globale du projet.
- Expose une API REST (Healthcheck) sur le port
-
services-simulator(Les Backends) :- Génère et enregistre les spécifications OpenAPI 3.0 des 10 microservices auprès de
agent-gravity-oracle.
- Génère et enregistre les spécifications OpenAPI 3.0 des 10 microservices auprès de
docker compose up --build -d- Gravity Oracle :
curl http://localhost:3000/services(doit lister les 10 services). - Gravity Shield :
curl http://localhost:3010/(doit retourner le statutonline). - Gravity Reports :
curl http://localhost:3030/(doit retourner le statutonline). - Gravity Deploy :
curl http://localhost:3040/(doit retourner le statutonline).
Pour connecter les agents à votre IDE (Cursor, Cline, Antigravity, etc.), ajoutez-les dans votre fichier de configuration MCP (mcp_config.json) :
{
"mcpServers": {
"gravity-oracle": {
"command": "/Users/sebastien.lavayssiere/Code/mcp-openapi-agent/run-gravity-oracle-bridge.sh"
},
"gravity-shield": {
"command": "/Users/sebastien.lavayssiere/Code/mcp-openapi-agent/run-gravity-shield-bridge.sh"
},
"gravity-deploy": {
"command": "/Users/sebastien.lavayssiere/Code/mcp-openapi-agent/run-gravity-deploy-bridge.sh"
},
"gravity-reports": {
"command": "/Users/sebastien.lavayssiere/Code/mcp-openapi-agent/run-gravity-reports-bridge.sh"
}
}
}N.B. : Assurez-vous d'installer les dépendances locales requises : pip install mcp fastapi uvicorn pydantic
Ouvrez le fichier demo/demo.py dans votre IDE et exécutez les étapes suivantes.
- Prompt :
"Je dois créer une fonction pour récupérer les points de fidélité de l'utilisateur 'user-123'. Cherche la bonne API interne et génère le client Python."
- Comportement : L'agent appelle
search_api_endpoints({ query: "points de fidélité" })puis récupère la spécification deLoyaltyServiceviaget_openapi_spec. Il écrit ensuite le client Python.
- Prompt :
"Génère un appel à notre serveur de mock dynamique pour cette route avec des données réalistes pour un client VIP."
- Comportement : L'agent écrit l'appel HTTP ciblant
http://localhost:3000/mocks/LoyaltyService/v1/loyalty/accounts/user-123?tier=VIP.
- Prompt :
"Génère la fonction Python pour créer un paiement."
- Comportement : L'agent cherche l'API de paiement, détecte la
v1(obsolète) et lav2(sécurisée 3DS), puis choisit et implémente automatiquement la spécificationv2.
- Prompt (Virtuel / Commande chat) :
/tests - Comportement (Intégration Continue) :
- Lecture : L'agent lit le code généré dans demo/demo.py.
- Validation : Il transmet le code à l'outil
run_integration_tests({ service_name: "LoyaltyService", code_snippet: ... })de l'agentgravity-shield. - Échec attendu : L'agent
gravity-shieldrenvoie un échec (FAILED) car le code client ne gère pas le retour HTTP404(scénario où l'utilisateur n'existe pas dans la base de fidélité). - Correction automatique : L'agent de codage analyse le retour de l'outil et modifie instantanément
demo.pypour y ajouter un bloctry/exceptinterceptant le404et retournant par exemple0point. - Validation finale : L'utilisateur relance la commande
/tests. L'agent ré-analyse le code et affiche un rapport vertPASSED.
- Prompt :
"Génère le Dockerfile, le requirements.txt, et le chart Helm (deployment + service ClusterIP) dans le dossier demo/ en utilisant les outils de l'agent gravity-deploy."
- Comportement : L'agent Gravity Deploy génère automatiquement un
Dockerfileoptimisé pour l'application Python et configure les manifestes Helm Kubernetes (y comprisdeployment.yamletservice.yaml) nécessaires au déploiement de l'application dans un conteneur standardisé.
- Prompt :
"Fait le déploiement de l'application en environnement de dev avec l'agent gravity-deploy."
- Comportement : L'agent fait appel à l'outil de simulation de déploiement en dev (
deploy_dev) pour s'assurer que l'image Docker est buildée avec succès, la release Helm mise à niveau, et vérifie la création correcte des pods et services au sein du cluster de développement.
- Prompt :
"Met à jour le ticket de la roadmap et la documentation pour indiquer que l'intégration du LoyaltyService et de PaymentService est terminée avec succès."
- Comportement : L'agent Gravity Reports met à jour le statut du ticket associé (
ticket-update) pour le marquer comme complété et met à jour la documentation d'architecture et de spécification (doc-update) afin de garantir que l'architecture réelle reflète fidèlement la roadmap projet.