Я пытаюсь создать сервер MCP на основе версии MCP Streamable-HTTP. Мой инструмент должен предоставить клиенту некоторые фрагменты информации (примитивы, объекты, что угодно). Но я не могу создать потоки этих объектов с сервера до клиента MCP. < /P>
Это мой минималистичный инструмент MCP: < /p>
from mcp.server.fastmcp import FastMCP, Context
from pydantic import Field
@mcp.tool()
async def number_stream(count: int, delay: int, ctx: Context):
for i in range(count):
await ctx.info(f"increment: {i}")
await asyncio.sleep(delay)
mcp.run(transport="streamable-http")
< /code>
Он работает нормально, он отправляет события журнала клиенту, это выглядит так, как TCP-Flow: < /p>
POST /mcp/ HTTP/1.1
host: localhost:8000
connection: keep-alive
accept: application/json, text/event-stream
content-type: application/json
accept-language: *
sec-fetch-mode: cors
user-agent: node
accept-encoding: gzip, deflate
content-length: 142
{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"_meta":{"progressToken":3},"name":"number_stream","arguments":{"count":3,"delay":2}}}
HTTP/1.1 200 OK
date: Wed, 25 Jun 2025 09:45:16 GMT
server: uvicorn
cache-control: no-cache, no-transform
connection: keep-alive
content-type: text/event-stream
x-accel-buffering: no
Transfer-Encoding: chunked
event: message
data: {"method":"notifications/message","params":{"level":"info","data":"increment: 0"},"jsonrpc":"2.0"}
event: message
data: {"method":"notifications/message","params":{"level":"info","data":"increment: 1"},"jsonrpc":"2.0"}
event: message
data: {"method":"notifications/message","params":{"level":"info","data":"increment: 2"},"jsonrpc":"2.0"}
event: message
data: {"jsonrpc":"2.0","id":3,"result":{"content":[],"isError":false}}
< /code>
Но я не вижу, как я мог бы отправлять последовательно сгенерированные объекты (в этом случае, но представьте, что вместо простых INT это Pojos) естественным потоковым способом. Хорошо, я полагаю, я мог бы сериализовать объекты на строки json один за другим и поместить их в поле данных Info-Message. Но это не выглядит аккуратно и красиво. И я не вижу никаких методов для класса контекста, которые предназначены для создания такого потока сгенерированных объектов с MCP -сервера.
Подробнее здесь: https://stackoverflow.com/questions/796 ... nerated-pi
Потоковой инструмент MCP (FastMCP Streamable-HTTP). Предоставление клиенту сгенерированным фрагментам данных на паряках ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение