Files
crank/docs/mcp-interface.md
T
2026-03-25 12:20:42 +03:00

5.2 KiB
Raw Blame History

MCP Interface

1. Назначение документа

Этот документ фиксирует, как именно платформа публикует operations в виде MCP tools и какой transport используется в MVP.

Главная цель - убрать неопределенность вокруг вопроса "каким именно будет MCP server" до начала реализации.

2. Архитектурное решение

Для MVP mcp-server должен публиковать tools через network-oriented MCP transport.

Рекомендуемое решение:

  • основной transport: Streamable HTTP;
  • отдельный mcp-server как сервис;
  • stdio не является обязательной частью MVP.

Причина:

  • проект задуман как MCPaaS, а не как локальный single-process adapter;
  • нужен удаленный доступ к опубликованным tools;
  • published tools должны обновляться без пересборки и без локального обертывания каждого клиента.

3. Модель публикации tools

Каждая published operation превращается в один MCP tool.

Соответствие:

  • одна published version;
  • один tool name;
  • одна input schema;
  • один результат.

Публикация tool основана на:

  • operation.name
  • tool_description
  • input_schema
  • published runtime view

4. Что делает mcp-server

mcp-server должен:

  • загрузить published operations из registry;
  • преобразовать их в MCP tool definitions;
  • принимать вызовы tools от MCP clients;
  • валидировать вход;
  • делегировать исполнение в runtime;
  • возвращать нормализованный output.

5. Что не делает mcp-server

mcp-server не должен:

  • читать draft-конфигурации;
  • управлять versioning;
  • импортировать YAML;
  • выполнять CRUD;
  • заниматься protobuf discovery;
  • содержать бизнес-логику admin UI.

6. Published runtime view

mcp-server должен работать не с полной admin-конфигурацией, а с runtime-ready view.

В published runtime view остаются:

  • operation_id
  • protocol
  • target
  • input_schema
  • output_schema
  • input_mapping
  • output_mapping
  • execution_config
  • tool_description

В published runtime view не должны попадать:

  • raw uploaded samples;
  • generated draft metadata;
  • YAML import metadata;
  • UI-specific helper fields.

7. Transport для MVP

Поддерживается

  • Streamable HTTP

Не обязательно в MVP

  • stdio
  • дополнительные transport adapters

Если позже понадобится локальная интеграция, stdio можно добавить как отдельный transport layer поверх того же runtime.

8. MCP lifecycle

Tool listing

При старте и после reload:

  1. mcp-server читает список published operations.
  2. Строит in-memory registry tools.
  3. Отдает их через MCP list tools.

Tool call

  1. MCP client вызывает tool.
  2. mcp-server находит published runtime view.
  3. Валидирует input относительно schema.
  4. Делегирует вызов в mcpaas-runtime.
  5. Возвращает результат.

9. Обновление tools

После публикации новой версии:

  1. admin-api фиксирует published version в registry.
  2. registry обновляет published_operations.
  3. mcp-server получает reload signal или выполняет controlled refresh.
  4. Новый tool contract становится доступен MCP clients.

10. Именование tools

Рекомендуется использовать стабильные tool names:

  • crm_create_lead
  • user_get_profile
  • inventory_list_items

Требования:

  • имя уникально в пределах платформы;
  • имя не зависит от внутреннего numeric version;
  • rename operation должен считаться отдельным осознанным изменением.

11. Ошибки MCP слоя

На MCP слое нужно различать:

  • schema validation error;
  • mapping error;
  • adapter execution error;
  • external service error;
  • internal runtime error.

mcp-server не должен терять стадию ошибки при трансляции ответа клиенту.

12. Практический итог

Для MVP достаточно следующей фиксации:

  • mcp-server - отдельный сервис;
  • transport - Streamable HTTP;
  • одна published operation = один MCP tool;
  • reload published tools без пересборки сервиса;
  • никакой draft-логики или admin CRUD в MCP слое.