OpenAI
Эта страница была переведена машинным переводом. Открыть оригинальную статью на английском.

Настройка шаблона приложения Snowflake в ChatGPT

Узнайте, как администраторы рабочей области ChatGPT и пользователи ChatGPT Plus или ChatGPT Pro могут подключить ChatGPT к управляемому Snowflake серверу MCP.

Обновлено: 12 days ago

Это руководство предназначено для администраторов рабочих областей ChatGPT и пользователей ChatGPT Plus или Pro, которые хотят подключить ChatGPT к Snowflake через MCP-сервер под управлением Snowflake.

Большая часть настройки выполняется в Snowflake. Подготовив Snowflake, завершите подключение шаблона Snowflake в ChatGPT, а затем включите плагин Snowflake, который использует этот шаблон.

  • Встроенный OAuth: если этот вариант доступен для вашего аккаунта Snowflake и в ChatGPT, используйте партнёрское приложение ChatGPT, включённое администратором Snowflake. Войдите в Snowflake, используя единую аутентификацию (SSO) вашей организации, если она настроена. Вводить идентификатор и секрет клиента в ChatGPT не нужно. Следуйте инструкциям в разделе «Встроенный OAuth» ниже.

  • Собственный клиент OAuth: используйте этот вариант, если ваша организация требует использовать собственный клиент OAuth или встроенный OAuth недоступен. Следуйте инструкциям в разделе «Собственный клиент OAuth» ниже.

Для обоих вариантов OAuth необходимо выполнить описанные ниже общие шаги: настроить MCP-сервер, предоставить права на используемые объекты и обеспечить сетевой доступ. Перед настройкой OAuth выполните общие шаги вплоть до раздела «Введите данные сервера Snowflake в ChatGPT» включительно.

Что вы настраиваете

Вы создаёте MCP-сервер под управлением Snowflake, который служит конечной точкой коннектора для ChatGPT. MCP-сервер определяет:

  • Какие действия доступны ChatGPT.

  • К каким данным или объектам Snowflake имеют доступ эти инструменты.

  • Какую роль Snowflake каждый пользователь использует для авторизации.

  • Какие база данных, схема и имя MCP-сервера Snowflake определяют конечную точку.

Затем вы настраиваете Snowflake — Официальный шаблон в ChatGPT, указав полный URL управляемого MCP-сервера. На экране настройки шаблона URL может быть представлен четырьмя отдельными полями:

  • Префикс хоста Snowflake.

  • База данных.

  • Схема.

  • Имя MCP-сервера.

ChatGPT может обнаруживать и использовать только те инструменты, которые доступны через MCP-сервер и разрешены ролью Snowflake, используемой пользователем для авторизации.

Перед началом

Вам понадобятся:

  • Права администратора или владельца рабочей области ChatGPT либо доступ к ChatGPT Plus или Pro.

  • Доступ к Snowflake с правами на создание объектов MCP-сервера и предоставление разрешений.

  • База данных и схема Snowflake, в которых будет размещён MCP-сервер.

  • Решение о том, какие возможности разрешить ChatGPT: например, Cortex Search, Cortex Analyst, SQL только для чтения или определённую процедуру либо функцию.

  • Роль Snowflake с минимально необходимыми правами, которую пользователи будут использовать при авторизации приложения.

  • Префикс хоста аккаунта Snowflake, включая суффиксы региона или облачной платформы, если они есть.

Если доступ к вашему аккаунту Snowflake ограничен сетевой политикой или списком разрешённых IP-адресов, попросите администратора Snowflake разрешить входящие подключения из актуальных диапазонов исходящих IP-адресов коннекторов ChatGPT. Этот список меняется, и его необходимо поддерживать в актуальном состоянии.

Какие значения нужно подготовить

  • Префикс хоста Snowflake: часть имени хоста перед .snowflakecomputing.com в URL аккаунта Snowflake.

  • База данных: база данных, содержащая MCP-сервер.

  • Схема: схема, содержащая MCP-сервер.

  • Имя MCP-сервера: имя объекта MCP-сервера Snowflake.

  • Полный URL управляемого MCP-сервера, если экран настройки ChatGPT запрашивает URL.

  • Роль Snowflake: роль, которую пользователи должны использовать при авторизации приложения.

  • Список инструментов: объекты и действия Snowflake, которые вы хотите сделать доступными для ChatGPT.

Определите, что сможет делать ChatGPT

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

  • Поиск ответов в проиндексированных данных или материалах Snowflake с помощью Cortex Search.

  • Ответы на вопросы с помощью Cortex Analyst на основе одобренного семантического представления.

  • SQL только для чтения с контролируемым доступом к выполнению запросов.

  • Агент Snowflake, хранимая процедура или пользовательская функция (UDF) для конкретного рабочего процесса.

Если вы включаете SQL, оставьте режим только для чтения, если ваша организация не рассмотрела и не одобрила доступ на запись.

Откройте рабочий лист Snowflake

  1. Войдите в приложение Snowflake.

  2. Переключитесь на роль, позволяющую создавать MCP-сервер и предоставлять доступ.

  3. Перейдите в раздел Рабочие области.

    Snowflake navigation menu showing Workspaces selected during MCP server setup.
  4. Создайте рабочую область с SQL-файлом.

    Snowflake workspace with a SQL file open for MCP server setup.
  5. В контексте рабочей области выберите базу данных и схему, в которых будет создан MCP-сервер.

    Snowflake worksheet context picker showing the role, warehouse, database, and schema.

Создайте MCP-сервер Snowflake

Войдите в Snowflake с ролью, позволяющей создавать MCP-сервер и предоставлять доступ. Откройте рабочий лист в базе данных и схеме, где нужно создать MCP-сервер.

Выполните команду по следующему примеру. Замените имена на свои: укажите базу данных, схему, сервисы, представления, виртуальное хранилище и имя сервера Snowflake.

CREATE MCP SERVER CHATGPT_SNOWFLAKE_MCP
FROM SPECIFICATION $$
tools:
- name: "support-search"
type: "CORTEX_SEARCH_SERVICE_QUERY"
identifier: "CHATGPT_APPS.TOOLS.SUPPORT_SEARCH_SERVICE"
title: "Support Search"
description: "Search support content for relevant customer issues."
- name: "revenue-analyst"
type: "CORTEX_ANALYST_MESSAGE"
identifier: "CHATGPT_APPS.TOOLS.REVENUE_SEMANTIC_VIEW"
title: "Revenue Analyst"
description: "Answer revenue questions using the approved semantic view."
- name: "sql-readonly"
type: "SYSTEM_EXECUTE_SQL"
title: "Read-only SQL"
description: "Run read-only SQL queries against approved Snowflake data."
config:
read_only: true
query_timeout: 600
warehouse: "CHATGPT_WH"
$$;

Snowflake result confirming that the MCP server was successfully created.

Имена инструментов и объекты Snowflake в этой команде приведены для примера:

  • support-search предоставляет доступ к указанному сервису Cortex Search.

  • revenue-analyst предоставляет доступ к указанному семантическому представлению. При необходимости добавьте инструменты для других представлений.

  • sql-readonly позволяет выполнять SQL-запросы только для чтения с использованием указанного виртуального хранилища.

Используйте постоянные, информативные имена инструментов, чтобы ChatGPT мог выбрать подходящий. Создание MCP-сервера не предоставляет автоматически доступ к используемым объектам Snowflake.

Дополнительные параметры спецификации описаны в разделе «Создание MCP-сервера под управлением Snowflake».

Предоставьте необходимые разрешения в Snowflake

Выберите роль Snowflake, которую пользователи будут использовать для авторизации, и предоставьте ей доступ к следующим объектам:

  1. База данных и схема.

  2. MCP-сервер.

  3. Все объекты, используемые инструментами, например поисковый сервис, семантическое представление или виртуальное хранилище.

Пример:

GRANT USAGE ON DATABASE CHATGPT_APPS TO ROLE CHATGPT_CONNECTOR_ROLE;
GRANT USAGE ON SCHEMA CHATGPT_APPS.TOOLS TO ROLE CHATGPT_CONNECTOR_ROLE;
GRANT USAGE ON MCP SERVER CHATGPT_APPS.TOOLS.CHATGPT_SNOWFLAKE_MCP TO ROLE CHATGPT_CONNECTOR_ROLE;

GRANT USAGE ON CORTEX SEARCH SERVICE CHATGPT_APPS.TOOLS.SUPPORT_SEARCH_SERVICE TO ROLE CHATGPT_CONNECTOR_ROLE;
GRANT SELECT ON SEMANTIC VIEW CHATGPT_APPS.TOOLS.REVENUE_SEMANTIC_VIEW TO ROLE CHATGPT_CONNECTOR_ROLE;
GRANT USAGE ON WAREHOUSE CHATGPT_WH TO ROLE CHATGPT_CONNECTOR_ROLE;

Если MCP-сервер предоставляет доступ к UDF, хранимой процедуре или агенту Cortex, предоставьте необходимые права и на этот объект.

Убедитесь, что Snowflake готов к работе

Выполните:

SHOW MCP SERVERS IN SCHEMA CHATGPT_APPS.TOOLS;

Затем выполните:

DESCRIBE MCP SERVER CHATGPT_APPS.TOOLS.CHATGPT_SNOWFLAKE_MCP;

Убедитесь, что:

  • Сервер существует в нужной базе данных и схеме.

  • Список инструментов соответствует вашему замыслу.

  • Параметр identifier каждого инструмента указывает на правильный объект Snowflake.

  • У роли, используемой для подключения, есть право USAGE на MCP-сервер.

  • У роли, используемой для подключения, есть необходимые права на каждый используемый объект.

Введите данные сервера Snowflake в ChatGPT

Для настройки рабочей области откройте admin.openai.com, выберите нужную рабочую область ChatGPT и откройте раздел «Плагины». О навигации по рабочей области и доступе к приложениям прежнего формата см. в статье «Администрирование, безопасность и соответствие требованиям для плагинов и приложений».

  1. В ChatGPT переключитесь на аккаунт или рабочую область, где должно быть доступно приложение.

  2. Для личного аккаунта перейдите в Настройки > Плагины, а для рабочей области — в Консоль администратора > Плагины с правами администратора рабочей области.

  3. Найдите Snowflake.

  4. Включите Snowflake — Официальный шаблон.

  5. Откройте Snowflake — Официальный шаблон, введите понятное имя подключения и выберите Подключить.

  6. Введите полный URL управляемого MCP-сервера:

https://<snowflake_host_prefix>.snowflakecomputing.com/api/v2/databases/{database}/schemas/{schema}/mcp-servers/{server}

Пример:

https://myorg-myaccount.azure.snowflakecomputing.com/api/v2/databases/CHATGPT_APPS/schemas/TOOLS/mcp-servers/CHATGPT_SNOWFLAKE_MCP

ChatGPT Snowflake Template connection form with name, managed MCP server URL, and OAuth settings.

Если на экране настройки параметры Snowflake представлены отдельными полями, укажите в них соответствующие значения из URL:

Префикс хоста Snowflake

Используйте часть имени хоста перед .snowflakecomputing.com в URL вашего аккаунта Snowflake, включая суффиксы региона или облачной платформы, если они есть.

Например, если URL аккаунта начинается с:

https://myorg-myaccount.azure.snowflakecomputing.com

Префикс хоста:

myorg-myaccount.azure

База данных

Введите имя базы данных, содержащей MCP-сервер, например:

CHATGPT_APPS

Схема

Введите имя схемы, содержащей MCP-сервер, например:

TOOLS

Имя MCP-сервера

Введите имя объекта MCP-сервера Snowflake, например:

CHATGPT_SNOWFLAKE_MCP

Настройте OAuth

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

В обоих вариантах OAuth при использовании session:role:all Snowflake выбирает роль каждого пользователя по умолчанию. Роль по умолчанию должна входить в список разрешённых ролей интеграции OAuth, если он настроен, и не должна быть заблокирована. Если у вас есть другая одобренная роль, она не выбирается автоматически.

Встроенный OAuth

Прежде чем продолжить, выполните общие шаги из разделов выше: создайте MCP-сервер, предоставьте разрешения, проверьте сервер и введите его данные в ChatGPT. Это необходимо, даже если вы перешли сразу к этому разделу.

Используйте этот вариант, только если партнёрское приложение ChatGPT доступно для вашего аккаунта Snowflake, а встроенный OAuth доступен в окне настройки ChatGPT.

  1. Попросите администратора Snowflake включить партнёрскую интеграцию ChatGPT в том же аккаунте Snowflake, где размещён MCP-сервер. Используйте уже существующую включённую партнёрскую интеграцию ChatGPT.

  2. В окне настройки ChatGPT выберите встроенный OAuth. Вводить идентификатор или секрет клиента и регистрировать URL обратного вызова не нужно.

  3. Перейдите к разделу «Подключите Snowflake и настройте доступ» ниже, чтобы войти в аккаунт, предоставить согласие и настроить доступ. Затем выполните шаги из раздела «Проверьте приложение», в том числе проверки с участниками без прав администратора, которым разрешён доступ.

Описанные выше правила для роли по умолчанию, списка разрешённых ролей и заблокированных ролей действуют и для этого варианта.

Собственный клиент OAuth

Прежде чем продолжить, выполните общие шаги из разделов выше: создайте MCP-сервер, предоставьте разрешения, проверьте сервер и введите его данные в ChatGPT. Это необходимо, даже если вы перешли сразу к этому разделу.

Для собственного клиента OAuth вам понадобятся идентификатор и секрет клиента из Snowflake. Описанные выше правила для роли по умолчанию, списка разрешённых ролей и заблокированных ролей действуют и для этого варианта.

  1. В окне настройки ChatGPT выберите Расширенные настройки OAuth > Пользовательский клиент OAuth и скопируйте без изменений указанный в ChatGPT URL обратного вызова.

  2. Создайте собственную интеграцию безопасности OAuth с параметром OAUTH_CLIENT_TYPE = 'CONFIDENTIAL' и задайте для OAUTH_REDIRECT_URI в точности этот URL обратного вызова.

  3. Выполните следующую команду в Snowflake, указав имя интеграции в верхнем регистре:

    SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('YOUR_INTEGRATION_NAME');

  4. Из результата в формате JSON скопируйте значение oauth_client_id в поле Идентификатор клиента OAuth, а oauth_client_secret — в поле Секрет клиента OAuth в ChatGPT.

  5. Для параметра Метод аутентификации конечной точки токена выберите client_secret_basic.

После ввода учётных данных собственного клиента перейдите к разделам «Подключите Snowflake и настройте доступ» и «Проверьте приложение» ниже.

Подключите Snowflake и настройте доступ

  1. Для любого из вариантов OAuth в том же окне настройки ChatGPT выберите Продолжить, войдите в Snowflake и разрешите подключение. Вы можете использовать единую аутентификацию (SSO) вашей организации, если она настроена.

  2. Для рабочей области настройте политику установки плагинов и доступ по ролям или группам для участников, которым нужен этот плагин. Убедитесь, что включены и Snowflake, и Snowflake — Официальный шаблон.

  3. Администраторы рабочей области отвечают за настройку раздела Доступ пользователей для ролей, которым нужен Snowflake.

  4. Администраторы рабочей области отвечают за проверку настроек в разделе Управление действиями для доступных инструментов.

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

Эти разрешения приложения применяются к разговорам в ChatGPT. Для агентов рабочей области действуют индивидуальные настройки, заданные создателем каждого агента. Они определяют, какие действия приложения доступны и когда у конечных пользователей запрашивается подтверждение. Подробнее о работе агентов см. в статье «Агенты рабочей области ChatGPT для Enterprise и Business».

Проверьте приложение

  1. Откройте чат, выберите Snowflake и проверьте подключение.

  2. Убедитесь, что ChatGPT обнаруживает настроенные вами инструменты.

  3. Сначала выполните операцию чтения с низким риском — например, поиск или запрос только для чтения к разрешённым данным.

  4. Убедитесь, что разрешения Snowflake не допускают доступа за пределами одобренной роли и объектов.

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

Администраторам рабочей области недостаточно включить только Snowflake. Если Snowflake — Официальный шаблон не включён и не подключён, плагин может отображаться у участников как отключённый.

URL MCP-сервера и работа OAuth

ChatGPT подключается по полному URL MCP-сервера под управлением Snowflake:

https://<snowflake_host_prefix>.snowflakecomputing.com/api/v2/databases/{database}/schemas/{schema}/mcp-servers/{server}

ChatGPT использует префикс хоста Snowflake из этого URL, чтобы определить следующие конечные точки OAuth в Snowflake:

  • Авторизация: https://<snowflake_host_prefix>.snowflakecomputing.com/oauth/authorize

  • Токен: https://<snowflake_host_prefix>.snowflakecomputing.com/oauth/token-request

Не вставляйте URL Snowsight, только корневой URL аккаунта Snowflake или URL с лишними сегментами пути. URL MCP-сервера должен содержать /api/v2/databases/{database}/schemas/{schema}/mcp-servers/{server} и в точности соответствовать вашим объектам Snowflake.

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

Snowflake включён для администратора, но отключён для участника

  • Убедитесь, что в разделе Консоль администратора > Плагины включены и Snowflake, и Snowflake — Официальный шаблон.

  • Откройте Snowflake — Официальный шаблон и завершите настройку через Подключить. Просто включить шаблон недостаточно — его нужно подключить.

  • Откройте Snowflake и убедитесь, что шаблон указан как необходимое для него приложение.

  • Убедитесь, что политика установки плагинов разрешает доступ для роли или группы участника, у которого возникла проблема.

MCP-сервер не найден

  • Ещё раз проверьте полный URL MCP-сервера или четыре поля шаблона, если они запрашиваются на экране настройки.

  • Убедитесь, что MCP-сервер существует именно в указанной базе данных и схеме.

В ChatGPT не отображаются инструменты

  • Убедитесь, что в спецификации MCP-сервера указаны инструменты.

  • Убедитесь, что у роли есть право USAGE на MCP-сервер.

Инструмент отображается, но при использовании возникает ошибка

  • Убедитесь, что у роли есть необходимые права на используемый объект Snowflake: например, поисковый сервис, семантическое представление, виртуальное хранилище, процедуру или UDF.

Ошибка инструмента SQL

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

  • Убедитесь, что у роли есть право USAGE на виртуальное хранилище.

  • Если нужен доступ только для чтения, убедитесь, что задано read_only: true.

Запрошенная роль ALL явно заблокирована

Попросите администратора Snowflake сверить вашу роль по умолчанию со списками разрешённых и заблокированных ролей интеграции OAuth. Если у вас есть другая разрешённая роль, она не выбирается автоматически. Если это допустимо, установите одобренную роль в качестве роли по умолчанию и подключитесь заново. Изменение роли по умолчанию также влияет на ваши сеансы Snowflake вне ChatGPT.

Ошибка авторизации

  • Убедитесь, что пользователь может войти в Snowflake.

  • При использовании session:role:all убедитесь, что роль пользователя по умолчанию разрешена интеграцией OAuth.

  • Убедитесь, что настроен процесс OAuth для MCP-сервера под управлением Snowflake.

  • Если вы используете собственный клиент OAuth, убедитесь, что Идентификатор клиента и Секрет клиента соответствуют интеграции OAuth в Snowflake, а её URI перенаправления в точности совпадает с URL обратного вызова, указанным в ChatGPT.

    Если вы используете встроенный OAuth, попросите администратора Snowflake проверить, что партнёрская интеграция ChatGPT доступна и включена в аккаунте, где размещён MCP-сервер.

Сетевая политика или список разрешённых IP-адресов Snowflake блокирует коннектор

  • Попросите администратора Snowflake обновить сетевую политику или правила доступа Snowflake.

  • Разрешите входящие подключения из актуальных диапазонов исходящих IP-адресов коннекторов ChatGPT.

  • Настройте этот список разрешённых адресов в Snowflake. Он не связан со списком разрешённых IP-адресов рабочей области ChatGPT.

  • По возможности автоматизируйте обновление списка на основе опубликованного JSON, поскольку диапазоны могут меняться.

Проблема подключения из-за имени хоста

Используйте правильный префикс хоста Snowflake. Имена хостов Snowflake с подчёркиваниями могут вызывать проблемы; предпочтительнее использовать дефисы.

Была ли эта статья полезной?