Подключение MCP-сервера

MCP (Model Context Protocol) — способ отдать модели набор инструментов по сети. В Flow он встречается в двух противоположных направлениях, и их всё время путают, потому что называются они одинаково.

Шаг первый: подключение, а не нода

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

  1. Откройте НастройкиИнтеграции и нажмите Добавить интеграцию, вид MCP.
  2. Заполните URL сервера — адрес эндпоинта Streamable HTTP.
  3. Выберите Режим работы — от него зависит всё остальное (см. ниже).
  4. Если сервер требует авторизацию, задайте Тип аутентификации и Токен аутентификации.
  5. На холст поставьте ноду MCP-инструмент и выберите в ней созданное подключение.

MCP

Поля подключения вида MCP.

URL сервера*
https://tools.example.com/mcp
Режим работы
Как инструмент

Меняет и набор портов ноды, и то, кто решает вызвать инструмент.

Имя инструмента

Обязательно в исполняемом режиме; в режиме инструмента — необязательный дефолт.

Тип аутентификации
Bearer
Токен аутентификации
••••••••

Режим «Как инструмент»: сервер целиком отдаётся агенту

MCP-инструментT
Run

Значение по умолчанию. Нода показывает единственный порт tool_out, который тянется в порт расширений ai_agent связью link_extension — ровно так же, как любой другой инструмент агента.

Важная деталь: в этом режиме модель получает все инструменты, которые сервер объявил, а не один выбранный. Отдельного списка «какие включить» в форме нет. Поле Имя инструмента здесь необязательно и означает лишь инструмент по умолчанию для односоставных вызовов. Хотите сузить набор — либо поднимайте сервер, отдающий только нужное, либо берите исполняемый режим и вызывайте один инструмент явным шагом.

Вход
ИИ-агент
Выход
MCP-инструментT
LLM
  • Исполнение + данные
  • Расширение
  • LLM
MCP-сервер подключается к агенту так же, как встроенные инструменты: связью расширения, не проводом исполнения.

Список инструментов сервер отдаёт при подготовке запуска, один раз. Инструмент, появившийся на сервере посреди хода, в этом ходе не появится.

Режим «Исполняемый»: один инструмент как шаг графа

Здесь нода превращается в обычный шаг: у неё появляется вход запуска и выход успеха, а решает не модель, а вы. Обязательным становится ровно одно поле подключения — Имя инструмента: без него подключение не сохранится в этом режиме. Поле Аргументы инструмента (JSON) (JSON-объект аргументов) необязательно: оставленное пустым, оно означает вызов с пустым набором аргументов.

Что нода отдаёт дальше:

ПолеЧто внутри
tool_nameимя вызванного инструмента
resultтекст результата — MCP возвращает текст, а не типизированный объект
is_errorfalse; настоящая ошибка уходит в ветку ошибки, а не сюда

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

Когда сервер недоступен

Два режима ведут себя по-разному, и разница критична.

РежимЧто происходитКак заметить
ИсполняемыйНода падаетзапуск уходит в ветку ошибки или падает целиком — видно сразу
Как инструментЗапуск успешен, инструментов просто нетагент отвечает без них и обычно не говорит, что чего-то лишился

Второй случай — самый неприятный сорт сбоя: ничего не сломалось, всё «работает», просто бот перестал уметь то, ради чего его делали. Платформа не роняет ход из-за недоступного расширения намеренно — иначе один зависший сторонний сервер обрывал бы каждый диалог. Но знать об этом надо, поэтому:

  • если инструмент MCP критичен для сценария — берите исполняемый режим и явную ветку ошибки; молчаливая деградация тогда невозможна;
  • проверяйте, что доехало: в разделе Запуски у ноды агента видно, какие инструменты он вызывал;
  • сервер должен быть публично доступен. Исходящие запросы платформы отклоняются, если адрес попадает в приватный диапазон — MCP-сервер на localhost или в локальной сети недостижим. Это та же защита, что описана в HTTP и веб.

Что дальше