Интерфейсы инструментов ИИ-агентов: MCP, function calling, CLI, skills

Автоматический перевод Эта статья была автоматически переведена с оригинальной английской версии.

Используйте function calling, когда одно приложение предоставляет одной модельной API небольшой типизированный набор инструментов. Используйте Model Context Protocol (MCP), когда нескольким совместимым клиентам нужно обнаруживать и вызывать переиспользуемый сервер. Используйте CLI, когда стабильная команда уже существует, а текст или файлы подходят в качестве границы взаимодействия. Используйте skill, когда переиспользуемые инструкции, скрипты и справочные материалы должны обучать агента выполнению рабочего процесса.

Эти интерфейсы можно комбинировать. Skill может сообщать агенту, когда вызывать MCP-инструмент, MCP-сервер может оборачивать CLI, а модель может выбирать вызов через function calling. Однако граница безопасности по-прежнему определяется харнессом и рантаймом, а не описанием интерфейса.

Последняя проверка: 2026-08-10. В сравнении учитываются ясность схемы, повторное использование разными клиентами, стоимость транспорта и деплоя, принцип минимальных привилегий, observability и зона ответственности за поддержку.

Таблица решений

ПотребностьС чего лучше начатьОсновной нюанс
Небольшой типизированный набор инструментов внутри одного приложенияFunction callingВалидная схема не авторизует действие и не делает аргументы безопасными.
Переиспользуемые инструменты для совместимых клиентовMCP toolsИдентичность сервера, учётные данные, изменения инструментов и возвращаемый контент требуют отдельных контролей.
Существующая команда для разработки или эксплуатацииCLIПарсинг текста, shell-инъекции, состояние окружения и широкие полномочия могут сделать границу взаимодействия уязвимой.
Переиспользуемые инструкции и ресурсы рабочего процессаAgent SkillsИнструкции могут направлять использование инструментов, но не предоставляют транспорт или границу разрешений.
Стабильная логика внутри процессаТипизированная функция или библиотечный APIНе добавляйте протокол, если обе стороны принадлежат одной кодовой базе.

Function calling

Function calling предоставляет модели именованные операции со структурированными аргументами. Он подходит для харнесса, которым владеет продукт, когда инструменты, проверки политик, учётные данные и выполнение находятся в одном приложении. Делайте схемы узкими, валидируйте каждый аргумент и оценивайте как выбор инструмента, так и результирующий побочный эффект.

MCP

MCP разделяет клиентов и переиспользуемые серверы, а также стандартизирует обнаружение и вызов. Он полезен, когда одна и та же интеграция должна работать с несколькими совместимыми агентами или приложениями. MCP не решает, разрешён ли tool call. Аутентифицируйте сервер, ограничивайте токены по области действия, проверяйте изменения в описаниях инструментов, изолируйте недоверенные серверы и рассматривайте результаты как недоверенный ввод.

CLI-инструменты

CLI часто является самым коротким путём к зрелым возможностям, таким как Git, пакетные менеджеры, облачные инструменты и системы сборки. Предпочитайте структурированный вывод, явно заданные рабочие директории, non-interactive-флаги, ограниченные таймауты и учётные данные с узкой областью действия. Не создавайте shell-строки из недоверенного текста.

Skills

Skill объединяет процедурные инструкции и может включать скрипты, справочные материалы или шаблоны. Он полезен, когда главная сложность заключается в знании рабочего процесса, а не в создании нового удалённого инструмента. Делайте skill достаточно небольшим для ревью, фиксируйте внешние предположения и явно обозначайте деструктивные действия и действия во внешних системах.

Чеклист выбора

  • Кто владеет клиентом, интерфейсом и реализацией?
  • Нужно ли переиспользовать его нескольким клиентам?
  • Является ли входная схема узкой и версионируемой?
  • Где обеспечиваются авторизация и подтверждение?
  • Может ли недоверенный контент получить доступ к учётным данным или сетевому выходу?
  • Можно ли отследить вызовы, аргументы, результаты и решения политик?
  • Может ли типизированный вызов библиотеки решить задачу с меньшей поверхностью атаки?

Дополнительные материалы

Ссылки