Voici comment exécuter le serveur et le client de streaming HTTP classique, ainsi que le serveur et le client de streaming MCP en utilisant Python.
- Vous allez configurer un serveur MCP qui envoie des notifications de progression au client pendant qu'il traite des éléments.
- Le client affichera chaque notification en temps réel.
- Ce guide couvre les prérequis, la configuration, l'exécution et le dépannage.
- Python 3.9 ou une version plus récente
- Le package Python
mcp(installer avecpip install mcp)
-
Clonez le dépôt ou téléchargez les fichiers de la solution.
git clone https://github.com/microsoft/mcp-for-beginners
-
Créez et activez un environnement virtuel (recommandé) :
python -m venv venv .\venv\Scripts\Activate.ps1 # On Windows # or source venv/bin/activate # On Linux/macOS
-
Installez les dépendances nécessaires :
pip install "mcp[cli]" fastapi requests
-
Accédez au répertoire de la solution :
cd 03-GettingStarted/06-http-streaming/solution
-
Lancez le serveur de streaming HTTP classique :
python server.py
-
Le serveur démarrera et affichera :
Starting FastAPI server for classic HTTP streaming... INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
-
Ouvrez un nouveau terminal (activez le même environnement virtuel et répertoire) :
cd 03-GettingStarted/06-http-streaming/solution python client.py
-
Vous devriez voir les messages diffusés imprimés séquentiellement :
Running classic HTTP streaming client... Connecting to http://localhost:8000/stream with message: hello --- Streaming Progress --- Processing file 1/3... Processing file 2/3... Processing file 3/3... Here's the file content: hello --- Stream Ended ---
- Accédez au répertoire de la solution :
cd 03-GettingStarted/06-http-streaming/solution
- Lancez le serveur MCP avec le transport streamable-http :
python server.py mcp
- Le serveur démarrera et affichera :
Starting MCP server with streamable-http transport... INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
- Ouvrez un nouveau terminal (activez le même environnement virtuel et répertoire) :
cd 03-GettingStarted/06-http-streaming/solution python client.py mcp
- Vous devriez voir les notifications imprimées en temps réel pendant que le serveur traite chaque élément :
Running MCP client... Starting client... Session ID before init: None Session ID after init: a30ab7fca9c84f5fa8f5c54fe56c9612 Session initialized, ready to call tools. Received message: root=LoggingMessageNotification(...) NOTIFICATION: root=LoggingMessageNotification(...) ... Tool result: meta=None content=[TextContent(type='text', text='Processed files: file_1.txt, file_2.txt, file_3.txt | Message: hello from client')]
- Créez le serveur MCP en utilisant FastMCP.
- Définissez un outil qui traite une liste et envoie des notifications en utilisant
ctx.info()ouctx.log(). - Exécutez le serveur avec
transport="streamable-http". - Implémentez un client avec un gestionnaire de messages pour afficher les notifications dès leur arrivée.
- Le serveur utilise des fonctions asynchrones et le contexte MCP pour envoyer des mises à jour de progression.
- Le client implémente un gestionnaire de messages asynchrone pour imprimer les notifications et le résultat final.
- Utilisez
async/awaitpour des opérations non bloquantes. - Gérez toujours les exceptions dans le serveur et le client pour garantir la robustesse.
- Testez avec plusieurs clients pour observer les mises à jour en temps réel.
- En cas d'erreurs, vérifiez votre version de Python et assurez-vous que toutes les dépendances sont installées.
Avertissement :
Ce document a été traduit à l'aide du service de traduction automatique Co-op Translator. Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de faire appel à une traduction humaine professionnelle. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.