Вот как запустить классический HTTP streaming сервер и клиент, а также MCP streaming сервер и клиент с использованием Python.
- Вы настроите MCP сервер, который отправляет уведомления о прогрессе клиенту во время обработки элементов.
- Клиент будет отображать каждое уведомление в реальном времени.
- В этом руководстве рассматриваются требования, настройка, запуск и устранение неполадок.
- Python 3.9 или новее
- Пакет
mcpдля Python (установить с помощьюpip install mcp)
-
Клонируйте репозиторий или скачайте файлы решения.
git clone https://github.com/microsoft/mcp-for-beginners
-
Создайте и активируйте виртуальное окружение (рекомендуется):
python -m venv venv .\venv\Scripts\Activate.ps1 # On Windows # or source venv/bin/activate # On Linux/macOS
-
Установите необходимые зависимости:
pip install "mcp[cli]"
-
Перейдите в каталог решения:
cd 03-GettingStarted/06-http-streaming/solution
-
Запустите классический HTTP streaming сервер:
python server.py
-
Сервер запустится и выведет:
Starting FastAPI server for classic HTTP streaming... INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
-
Откройте новый терминал (активируйте то же виртуальное окружение и каталог):
cd 03-GettingStarted/06-http-streaming/solution python client.py
-
Вы увидите последовательный вывод потоковых сообщений:
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 ---
- Перейдите в каталог решения:
cd 03-GettingStarted/06-http-streaming/solution
- Запустите MCP сервер с транспортом streamable-http:
python server.py mcp
- Сервер запустится и выведет:
Starting MCP server with streamable-http transport... INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
- Откройте новый терминал (активируйте то же виртуальное окружение и каталог):
cd 03-GettingStarted/06-http-streaming/solution python client.py mcp
- Вы увидите уведомления в реальном времени по мере обработки сервером каждого элемента:
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')]
- Создайте MCP сервер с помощью FastMCP.
- Определите инструмент, который обрабатывает список и отправляет уведомления с помощью
ctx.info()orctx.log(). - Run the server with
transport="streamable-http". - Implement a client with a message handler to display notifications as they arrive.
- The server uses async functions and the MCP context to send progress updates.
- The client implements an async message handler to print notifications and the final result.
- Use
async/awaitдля неблокирующих операций.** - Всегда обрабатывайте исключения как на сервере, так и на клиенте для надежности.
- Тестируйте с несколькими клиентами, чтобы видеть обновления в реальном времени.
- Если возникают ошибки, проверьте версию Python и убедитесь, что все зависимости установлены.
Prohlášení o vyloučení odpovědnosti:
Tento dokument byl přeložen pomocí AI překladatelské služby Co-op Translator. I když usilujeme o přesnost, mějte prosím na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho rodném jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Nejsme odpovědní za jakékoliv nedorozumění nebo nesprávné výklady vyplývající z použití tohoto překladu.