docs: define streaming mcp architecture
This commit is contained in:
@@ -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 слое.
|
||||
|
||||
Reference in New Issue
Block a user