← Все инструкции

РУКОВОДСТВО · ОБНОВЛЕНО 2026-10-04

MCP или function calling: как выбрать подключение инструментов

Сравниваем уровни интеграции: как модель запрашивает действие и как приложение подключается к внешнему серверу инструментов. Разбираем выбор и границы прав.

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

1. Нарисуйте путь одного действия

Начните с примера: пользователь спрашивает статус своего заказа. Модель получает описание доступной функции и возвращает её имя с аргументами. Приложение проверяет данные, обращается к разрешённому сервису и передаёт результат обратно. Это цикл function calling. Если обращение к сервису идёт через MCP, у приложения появляется MCP-клиент, который взаимодействует с сервером инструментов. Не считайте два понятия взаимозаменяемыми: протокол подключения сервера не устраняет необходимость обработать вызов модели, ограничения доступа и результат в конкретном API.

2. Выберите границу повторного использования

Для небольшого приложения с несколькими внутренними функциями прямой адаптер может быть проще в обслуживании. Если один набор инструментов должны использовать разные совместимые приложения, рассмотрите отдельный MCP-сервер и его жизненный цикл. Сравните требования к обнаружению возможностей, транспорту, авторизации и обновлению схем. Само слово MCP не доказывает совместимость всех клиентов и версий. Зафиксируйте конкретный клиент и поддерживаемый протокол, а затем проверьте минимальный обмен. Выбор должен следовать требованиям интеграции, а не обещанию автоматически сделать любой инструмент доступным любой модели.

3. Сопоставьте схемы и результаты

Проверьте, как описания инструментов попадают в tools выбранного модельного API. Обработайте неизвестное имя, неверный JSON, пропущенные аргументы и несколько последовательных вызовов. Результат инструмента связывайте с исходным вызовом по правилам протокола модели; MCP transport не меняет этот контракт. Отдельно задайте, какой текст попадёт обратно в контекст и как ограничить его размер. Не отправляйте модели секреты подключения. Для нескольких клиентов сохраните одну бизнес-проверку прав в сервисе, чтобы различия адаптеров не открыли обход ограничений.

4. Разделите чтение и изменения

Доступ к серверу не равен разрешению выполнить любую его операцию. Привязывайте вызов к пользователю, проверяйте объект и действие, используйте минимальные полномочия. Для удаления, отправки сообщения или оплаты предусмотрите явное подтверждение согласно правилам вашего продукта. Ответы инструментов рассматривайте как данные: найденная инструкция не должна расширять права агента. Добавьте ограничения шагов, времени и допустимых инструментов. Повторы операций с побочными эффектами требуют идемпотентности. Наличие стандартного протокола помогает организовать взаимодействие, но не заменяет эти проверки бизнес-логики.

5. Проверьте интеграцию по слоям

Без платной генерации используйте fixture-вызов функции и тестовый сервер чтения. Проверьте обнаружение, валидные аргументы, отказ чужому пользователю, таймаут, отмену и возврат результата в правильный call_id. Отдельно проверьте поведение при отключённом сервере и несовместимой схеме. Только после этого планируйте ограниченный тест с реальной моделью. В Tokenmost поддержка пользовательских функций в API не обещает управляемый MCP-сервер или автоматическое подключение к любому внешнему источнику. Сверьте опубликованный метод и реализуйте нужный клиент на стороне приложения, если это предусмотрено вашей архитектурой.

Частые вопросы

MCP заменяет function calling?

Не в описанном пути. Приложение может использовать вызов функции модели, а исполнение направлять через MCP-клиент к серверу инструмента.

Можно ли обойтись без MCP?

Да, если прямой адаптер удовлетворяет требованиям приложения. Обоснуйте дополнительный протокол потребностью в общей интеграции и поддержке клиентов.

Может ли модель сама исполнять функцию?

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

Достаточно ли разрешить подключение к серверу?

Нет. Проверяйте права на каждую операцию и объект, объём результата, таймауты и повторы. Учётная запись сервера не должна давать агенту лишние полномочия.

Источники

Калькулятор стоимости →