Top.Mail.Ru
Разработка
Архитектура
От REST к MCP: как LLM меняют принципы проектирования API и архитектуры систем
2 октября
10.10-10.50
Green 8

- Классические REST и gRPC-контракты уже недостаточны для динамики микросервисов и автономных LLM-агентов.

- Model Context Protocol вводит единый формат обмена с самоописанием инструментов, динамическим обнаружением, stateful-сессиями и двусторонними сообщениями.

- Крупнозернистые инструменты MCP сокращают количество сетевых вызовов и упрощают оркестрацию на стороне клиента.

- Разбор того, где MCP улучшает наблюдаемость, безопасность и масштабируемость, а где традиционные API остаются предпочтительнее.

- Опыт продакшен-внедрения MCP: переработка API, сложности и рабочие решения.

---

Более детально:

1. Проблемы

- В микросервисной среде при появлении нового клиента приходится писать адаптер к каждому из N сервисов, а при добавлении очередного сервиса требуется адаптировать его ко всем M клиентам, что приводит к квадратичному росту связей и усложнению версионирования.

- LLM-клиенты формируют запросы автономно, и чем разнообразнее эндпоинты, тем выше вероятность некорректного или «галлюцинированного» вызова.

2. MCP — что меняется

- Протокол вводит единый метод `tools/call` с аргументами в одном JSON-объекте и стандартизированным форматом ответа, что избавляет от множества ручных коннекторов.

- Метод `tools/list` позволяет клиенту динамически получать актуальный набор инструментов без пересборки SDK.

- Handshake при установлении соединения создаёт stateful-сеанс, в котором сервер объявляет ресурсы и шаблоны промптов и хранит их на протяжении диалога.

3. MCP vs классические API

- Один инструмент MCP покрывает целую бизнес-операцию, сокращая число сетевых переходов, необходимых при цепочке CRUD-вызовов в REST или gRPC.

- Контекст и кэш ресурсов живут на сервере сеанса, поэтому клиенту не нужно повторно передавать одни и те же данные.

- Унифицированные логи и коды ошибок облегчают трассировку: на каждый инструмент формируется один span вместо нескольких для связки мелких эндпоинтов.

- Политики доступа привязываются к инструменту, а не к URL, что проще согласовать с логикой работы LLM-агента и позволяет реализовать подтверждение опасных действий через diff.

4. Инфраструктурный слой

- AI Gateway принимает MCP-трафик, применяет лимиты частоты, валидирует аргументы, ведёт аудит вызовов и передаёт легитимные запросы в MCP-серверы.

- Safeguards включают квоты на количество вызовов, троттлинг повторяющихся ошибок, sandbox-проверки на prompt-инъекции и контроль размера контекста.

5. Системный дизайн с MCP

- Архитектура получает новый компонент: AI-агент с MCP-клиентом устанавливает 1:1 соединения с несколькими MCP-серверами, каждый из которых предоставляет доступ к конкретному ресурсу или сервису.

- Открывать через MCP следует лишь критически важные функции (поиск знаний, ограниченные транзакции), оставив остальные операции на REST/gRPC.

- Двухслойный подход позволяет внешним и ручным интеграциям продолжать использовать классические API, а внутренним AI-ассистентам — стандартизированный MCP-интерфейс.

- Часть оркестрации передаётся в логику LLM, но высокоуровневые правила и ограничения остаются в коде MCP-серверов; разработчику необходимо настроить tracing инструментальных вызовов, лимит времени сессии и fallback-механику на случай ошибок агента.

6. Архитектурные рекомендации

- Низкоуровневые CRUD-методы следует группировать в крупные инструменты, чтобы агенту было проще решать бизнес-задачи без длинных цепочек вызовов.

- Политики доступа нужно формулировать на уровне инструмента и роли пользователя, чтобы ограничить LLM в выполнении опасных операций.

- MCP-трейсы стоит интегрировать в существующий observability-стек, настроив алерты на аномальные паттерны вызовов и превышение квот.

Может заинтересовать
#похожие доклады