Ecco come eseguire il classico server e client HTTP in streaming, così come il server e client MCP in streaming utilizzando Python.
- Configurerai un server MCP che invia notifiche di avanzamento al client mentre elabora gli elementi.
- Il client mostrerà ogni notifica in tempo reale.
- Questa guida copre prerequisiti, configurazione, esecuzione e risoluzione dei problemi.
- Python 3.9 o versioni successive
- Il pacchetto Python
mcp(installalo conpip install mcp)
-
Clona il repository o scarica i file della soluzione.
git clone https://github.com/microsoft/mcp-for-beginners
-
Crea e attiva un ambiente virtuale (consigliato):
python -m venv venv .\venv\Scripts\Activate.ps1 # On Windows # or source venv/bin/activate # On Linux/macOS
-
Installa le dipendenze richieste:
pip install "mcp[cli]"
-
Vai nella directory della soluzione:
cd 03-GettingStarted/06-http-streaming/solution
-
Avvia il classico server HTTP in streaming:
python server.py
-
Il server si avvierà e mostrerà:
Starting FastAPI server for classic HTTP streaming... INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
-
Apri un nuovo terminale (attiva lo stesso ambiente virtuale e la stessa directory):
cd 03-GettingStarted/06-http-streaming/solution python client.py
-
Dovresti vedere i messaggi in streaming stampati in sequenza:
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 ---
- Vai nella directory della soluzione:
cd 03-GettingStarted/06-http-streaming/solution
- Avvia il server MCP con il trasporto streamable-http:
python server.py mcp
- Il server si avvierà e mostrerà:
Starting MCP server with streamable-http transport... INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
- Apri un nuovo terminale (attiva lo stesso ambiente virtuale e la stessa directory):
cd 03-GettingStarted/06-http-streaming/solution python client.py mcp
- Dovresti vedere le notifiche stampate in tempo reale mentre il server elabora ogni elemento:
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')]
- Crea il server MCP usando FastMCP.
- Definisci uno strumento che elabora una lista e invia notifiche usando
ctx.info()octx.log(). - Esegui il server con
transport="streamable-http". - Implementa un client con un gestore di messaggi per mostrare le notifiche appena arrivano.
- Il server utilizza funzioni async e il contesto MCP per inviare aggiornamenti di avanzamento.
- Il client implementa un gestore di messaggi async per stampare notifiche e il risultato finale.
- Usa
async/awaitper operazioni non bloccanti. - Gestisci sempre le eccezioni sia nel server che nel client per garantire robustezza.
- Testa con più client per osservare gli aggiornamenti in tempo reale.
- Se incontri errori, verifica la versione di Python e assicurati che tutte le dipendenze siano installate.
Disclaimer:
Questo documento è stato tradotto utilizzando il servizio di traduzione automatica Co-op Translator. Pur impegnandoci per garantire l’accuratezza, si prega di notare che le traduzioni automatiche possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa deve essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un umano. Non ci assumiamo alcuna responsabilità per eventuali malintesi o interpretazioni errate derivanti dall’uso di questa traduzione.