Протоколы и инструменты

MCP: двустороннее взаимодействие и асинхронность

Как проектировать сложные агентные циклы в MCP: делегирование инференса, Human-in-the-Loop и долгоживущие задачи

В статье про основы MCP мы разобрали базовую модель протокола: хост-клиент отправляет команды, а сервер пассивно отдает списки инструментов, читает ресурсы и подставляет шаблоны промптов. В этой схеме сервер остается простым исполнителем.

Однако при проектировании автономных агентных систем такой односторонней связи недостаточно:

  • Серверу нужен доступ к рассуждениям модели: серверу анализа кода или оптимизации SQL требуется запустить внутренний многошаговый цикл.
  • Инструменту нужно ограничить доступ к файлам: сторонний сервер не должен читать личные файлы пользователя или ключи ~/.ssh. Клиент должен явно задать папку проекта и обновлять ее при смене рабочей директории в Cursor или VS Code.
  • Требуется подтверждение человека (Human-in-the-Loop): при удалении таблиц или неоднозначных операциях сервер должен запросить решение пользователя прямо во время вызова инструмента.
  • Тяжелые задачи не укладываются в таймауты: сборка проекта или миграция данных занимают минуты, что приводит к обрывам HTTP-соединений.

Для решения этих задач спецификация MCP определяет продвинутые механизмы: делегирование инференса (Sampling), границы доступа (Roots), интерактивный опрос пользователя (Elicitation) и асинхронные задачи (Async Tasks), а также визуальное расширение интерактивных интерфейсов (MCP Apps).

Делегирование инференса: Sampling

Когда серверу требуется логика языковой модели (например, выделить главное из 50 файлов проекта или синтезировать промежуточный план), перед архитектором встает выбор: где брать доступ к LLM?

Перейдите на Premium, чтобы продолжить

Разблокируйте доступ к этой статье и всем остальным материалам с NowInterview Premium

Перейти на Premium