import asyncio import os import sys from dotenv import load_dotenv from langchain_google_genai import ChatGoogleGenerativeAI from langchain_mcp_adapters.client import MultiServerMCPClient from langgraph.prebuilt import create_react_agent from langchain_core.messages import HumanMessage # Chargement de la clé API load_dotenv() async def lancer_agent(): print("🤖 Initialisation de l'Agent Gemini...") llm = ChatGoogleGenerativeAI(model="gemini-2.5-flash") print("🔌 Configuration de la connexion au serveur MCP local...") # NOUVELLE SYNTAXE : On passe la configuration directement dans le client client = MultiServerMCPClient({ "serveur_taches": { "command": sys.executable, # 🌟 LA MODIFICATION EST ICI "args": ["serveur_mcp.py"], "transport": "stdio" } }) # On récupère les outils (attention, c'est maintenant une fonction asynchrone qui nécessite 'await') outils = await client.get_tools() print(f"✅ Outils détectés : {[outil.name for outil in outils]}") # 🌟 Création de l'Agent LangGraph agent = create_react_agent(llm, tools=outils) # --- LE TEST DE L'AGENT --- consigne = ( "1. Ajoute la tâche 'Acheter du pain'. " "2. Ajoute la tâche 'Appeler le client'. " "3. Fais-moi un résumé de toutes mes tâches actuelles." ) print(f"\n🗣️ Consigne donnée à l'Agent : {consigne}\n") print("⏳ L'Agent réfléchit et travaille en autonomie (patientez un peu)...\n") # On lance l'agent avec notre message resultat = await agent.ainvoke({ "messages": [HumanMessage(content=consigne)] }) # On affiche uniquement la réponse finale de l'agent reponse_finale = resultat["messages"][-1].content print("✅ RÉPONSE FINALE DE L'AGENT :") print("-" * 40) print(reponse_finale) print("-" * 40) if __name__ == "__main__": asyncio.run(lancer_agent())