Протоколы и инструменты
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