docs: define streaming mcp architecture

This commit is contained in:
a.tolmachev
2026-04-06 01:45:48 +03:00
parent d7e5ae95d6
commit 04ed704e94
12 changed files with 834 additions and 29 deletions
+39
View File
@@ -11,6 +11,8 @@
Решение:
- основной transport: `Streamable HTTP`;
- `POST` может завершаться `application/json` или `text/event-stream`;
- `GET` SSE stream поддерживается как server-to-client канал;
- отдельный `mcp-server` как сервис;
- `stdio` не является обязательной частью текущего scope.
@@ -40,6 +42,7 @@
- загрузить published agents и их bindings из registry;
- преобразовать их в MCP tool definitions;
- вести `Mcp-Session-Id` и `MCP-Protocol-Version`;
- принимать вызовы tools от MCP clients;
- валидировать вход;
- делегировать исполнение в runtime;
@@ -116,6 +119,12 @@
- `tools/list`
- `tools/call`
Дополнительно на transport уровне:
- `POST /mcp/v1/{workspace_slug}/{agent_slug}` как основной MCP endpoint;
- `GET /mcp/v1/{workspace_slug}/{agent_slug}` для SSE stream;
- `DELETE /mcp/v1/{workspace_slug}/{agent_slug}` для explicit session termination, если сервер разрешает client-side session close.
### Tool listing
1. клиент вызывает `tools/list`;
@@ -133,6 +142,34 @@
5. делегирует вызов в `crank-runtime`;
6. возвращает результат.
### Tool call и streaming
Поддерживаются четыре execution modes:
- `unary`
- `window`
- `session`
- `async_job`
Правила публикации:
- `unary` и `window` публикуются как один tool;
- `session` публикуется как `start/poll/stop` family;
- `async_job` публикуется как `start/status/result/cancel` family.
Transport-level SSE не отменяет bounded tool semantics. Даже если `POST` отвечает через `text/event-stream`, итогом вызова должен оставаться управляемый JSON-RPC lifecycle.
## 8.1. Multiple SSE connections
Crank должен корректно работать, если MCP client держит несколько SSE streams одновременно.
Правила:
- одно server message отправляется только в один stream;
- disconnect не считается cancel;
- cancel выражается отдельным MCP notification или session/job control tool;
- resumability допустима как будущая возможность, но не обязательна в MVP.
## 9. Обновление tools
После публикации новой operation version или agent version:
@@ -171,7 +208,9 @@
- `mcp-server` - отдельный сервис;
- transport - `Streamable HTTP`;
- `POST` и `GET` transport semantics соответствуют MCP spec `2025-06-18`;
- endpoint определяется парой `workspace + agent`;
- одна published operation = один MCP tool внутри agent;
- streaming operations публикуются как bounded tools или tool families;
- reload published tools без пересборки сервиса;
- никакой draft-логики или admin CRUD в MCP слое.