Перейти к основному содержимому

Частые вопросы о dbt MCP и устранение неполадок

Здесь вы найдёте ответы на частые вопросы о сервере dbt Model Context Protocol (MCP) и способы устранения распространённых проблем с настройкой. Инструкции для конкретных клиентов см. в разделах об устранении неполадок на страницах Начало работы и Установка и настройка.

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

Инструмент execute_sql на сервере dbt MCP позволяет вашему ИИ-ассистенту выполнять SQL-запросы в вашем хранилище данных. В этом разделе описано, как он работает и какие у него есть ограничения.

 Что делает execute_sql?

execute_sql позволяет вашему ИИ-ассистенту выполнить SQL-запрос к вашему хранилищу данных и прочитать результаты. Он входит в набор инструментов SQL и работает на dbt platform, поэтому устанавливать dbt локально не нужно.

Вот что происходит, когда ассистент вызывает этот инструмент:

  1. Ассистент составляет SQL-запрос и вызывает execute_sql.
  2. Сервер dbt MCP передаёт запрос в dbt platform вместе с вашим токеном, ID среды разработки и ID пользователя.
  3. dbt platform компилирует SQL (включая конструкции Jinja, например ref()) и выполняет его в вашем хранилище данных, используя ваши учётные данные для разработки.
  4. Результаты возвращаются ассистенту в виде таблицы.
ИИ-ассистент вызывает execute_sql. Сервер dbt MCP передаёт запрос в dbt platform, которая компилирует SQL, выполняет его в хранилище данных с вашими учётными данными для разработки и возвращает результаты ассистенту.ИИ-ассистент вызывает execute_sql. Сервер dbt MCP передаёт запрос в dbt platform, которая компилирует SQL, выполняет его в хранилище данных с вашими учётными данными для разработки и возвращает результаты ассистенту.
 execute_sql — это то же самое, что dbt show?

Нет. dbt show выполняется через инструменты CLI dbt platform и позволяет предварительно просмотреть результат модели во время разработки. execute_sql отправляет SQL в dbt platform, которая выполняет его в вашем хранилище данных.

 Чьи учётные данные для хранилища данных использует execute_sql?

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

Если подходящие учётные данные не настроены, запрос завершится ошибкой. Подробности настройки см. в разделе Пользователи с доступом только для чтения и учётные данные хранилища данных.

 Работает ли execute_sql только в режиме чтения?

Нет. execute_sql не блокирует операторы записи. Возможности запроса зависят от разрешений учётных данных хранилища, с которыми он выполняется. Если эти учётные данные позволяют создавать или удалять таблицы, ваш ассистент тоже сможет это делать.

Для безопасной работы:

  • Используйте роли хранилища данных с минимальными привилегиями. Предоставьте учётным данным для разработки каждого пользователя доступ только для чтения к данным, аналогичным производственным, а доступ на запись — только к его собственной схеме разработки.
  • Не отключайте запросы подтверждения вызовов инструментов. Тогда ассистент будет запрашивать разрешение перед выполнением SQL, и вы сможете сначала проверить запрос.
  • Не полагайтесь на отключение инструмента как на меру безопасности. Вы можете отключить execute_sql с помощью заголовка x-dbt-disable-tools, но его задаёт тот, кто настраивает MCP-клиент, поэтому администраторы не могут принудительно обеспечить его использование. Надёжный механизм контроля — разрешения в хранилище данных.
 Кто может использовать execute_sql?

Любой пользователь с лицензией разработчика или лицензией только для чтения, если он подключается через OAuth или с помощью персонального токена доступа (PAT). Сервисные токены не подходят, поскольку учётные данные для разработки принадлежат конкретному пользователю.

Пользователи с лицензией только для чтения могут выполнять обычный SQL. Для SQL с конструкциями Jinja, такими как ref() или source(), нужна лицензия разработчика.

Подробности настройки см. в разделе Настройка удалённого MCP.

 Почему ref() не ссылается на мои таблицы разработки?

Хотя запрос выполняется с вашими учётными данными для разработки, ref('model') разрешается в объект производственной среды. Эта функция не может ссылаться на таблицу, которую вы создали в собственной схеме разработки.

Чтобы запросить данные из таблицы разработки, укажите её полное имя, например my_dev_schema.my_model. Также избегайте source() и используйте полные имена таблиц или ref().

 Есть ли ограничения на объём запроса или время выполнения?

Да. Длительные запросы прерываются по тайм-ауту, а dbt ограничивает размер больших наборов результатов. Добавляйте фильтры и предложения limit, чтобы запросы оставались небольшими и выполнялись быстро.

 Можно ли просматривать результаты в виде диаграммы или таблицы?

Да! Ваш ИИ-инструмент может запросить отображение результатов в виде диаграммы или таблицы в интерфейсе. В противном случае результаты видит только ассистент.

 Когда стоит использовать что-то другое вместо execute_sql?
Если вы хотите...Используйте
Задавать бизнес-вопросы на основе согласованных определений метрикИнструменты Semantic Layer, например query_metrics
Предварительно просматривать результат модели во время разработкиИнструменты CLI dbt platform, например show, build и run
Преобразовать вопрос в SQL, не выполняя егоtext_to_sql

Устранение неполадок​

 Почему я могу подключиться к удалённому MCP, но вызов инструмента отклоняется?

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

  1. Убедитесь, что запрашиваемый ресурс принадлежит аккаунту, к которому вы подключились.
  2. Попросите администратора проверить необходимые разрешения пользователя или сервисного токена для этого ресурса. PAT наследуют разрешения своего пользователя.
  3. При использовании OAuth также проверьте области доступа и проекты, одобренные при предоставлении согласия. Если необходимый доступ не был включён, подключитесь заново и обновите своё согласие.
  4. Для execute_sql даже обычный SQL требует наличия среды разработки и учётных данных хранилища. Для SQL с конструкциями dbt Jinja также нужны права на разработку; для перенаправления ссылок на производственную среду необходим доступ на чтение метаданных.
 Почему удалённый MCP отклоняет выбранный проект или среду?

Используйте положительные числовые ID, а не URL. Убедитесь, что заголовки среды разработки и производственной среды указывают на среды соответствующих типов и что эти среды принадлежат одному проекту. Аргументы инструмента должны соответствовать настроенной целевой среде, за исключением явно указанного project_id для list_jobs, который переопределяет настроенный фильтр по среде.

Если при вызове сообщается о недопустимых аргументах инструмента, проверьте схему входных данных инструмента, укажите обязательные аргументы и удалите неподдерживаемые.

Если при автоматическом обнаружении сред сообщается, что в проекте более 1 000 сред, задайте заголовок с точным указанием среды для используемого инструмента, вместо того чтобы полагаться на обнаружение сред по проекту.

Не удаётся найти исполняемый файл uvx
Вход через OAuth не запускается
Сервер не запускается
Конфигурация не работает в WSL (VS Code)
Инструмент execute_sql не работает
Набор инструментов недоступен или отображается как отключённый
Вставка полных URL вместо идентификаторов
Проблемы с подключением к аккаунту в multi-cell или со статическим поддоменом
Ошибки Claude Desktop
Claude Code не может подключиться к серверу dbt MCP
Коннектор не проходит авторизацию или процесс OAuth завершается с ошибкой
Агент не возвращает метрики или возвращает пустые результаты
Ошибки прав доступа при создании интеграции или MCP-сервера

Нашли ошибку?

0
Loading