OpenAI
このページは機械翻訳されています。元の英語の記事を表示。

ChatGPT で Snowflake アプリテンプレートを設定

ChatGPT ワークスペース管理者と ChatGPT Plus または Pro ユーザーが、Snowflake 管理の MCP サーバーに ChatGPT を接続する方法を説明します。

更新日: 2 days ago

このガイドは、Snowflake が管理する MCP サーバーを通じて ChatGPT を Snowflake に接続したい ChatGPT ワークスペースの管理者、または ChatGPT Plus や Pro のユーザー向けです。

設定の大部分は Snowflake で行います。Snowflake の準備ができたら、ChatGPT で Snowflake テンプレートの接続を完了し、そのテンプレートを使用する Snowflake プラグインを有効にします。

  • 組み込み OAuth:お使いの Snowflake アカウントと ChatGPT で利用できる場合は、Snowflake 管理者が有効にした ChatGPT パートナーアプリケーションを使用します。Snowflake にサインインします。組織の SSO が設定されている場合は、それを使用します。ChatGPT にクライアント ID やクライアントシークレットを入力する必要はありません。以下の「組み込み OAuth」セクションの手順に従ってください。

  • カスタム OAuth クライアント:組織で独自の OAuth クライアントが必要な場合や、組み込み OAuth が利用できない場合は、この方法を使用します。以下の「カスタム OAuth クライアント」セクションの手順に従ってください。

どちらの OAuth 方式でも、以下に記載する共通の MCP サーバー設定、基盤となるオブジェクトへの権限、ネットワークアクセスが必要です。OAuth を設定する前に、「ChatGPT への Snowflake サーバー詳細の入力」までの共通設定を完了してください。

設定の概要

ChatGPT のコネクタのエンドポイントとなる、Snowflake が管理する MCP サーバーを作成します。MCP サーバーでは、以下を定義します。

  • ChatGPT が使用できるアクション

  • 各ツールがアクセスできる Snowflake のデータやオブジェクト

  • 各ユーザーが認可時に使用する Snowflake ロール

  • エンドポイントを識別する Snowflake のデータベース、スキーマ、MCP サーバー名

続いて、管理対象 MCP サーバーの完全な URL を使い、ChatGPT で Snowflake - 公式テンプレートを設定します。テンプレートの設定画面では、URL が次の 4 つのフィールドに分かれて表示される場合があります。

  • Snowflake ホストプレフィックス

  • データベース

  • スキーマ

  • MCP サーバー名

ChatGPT が検出・使用できるのは、MCP サーバーで公開され、ユーザーが認可時に使用する Snowflake ロールで許可されているツールのみです。

事前準備

以下が必要です。

  • ChatGPT ワークスペースの管理者またはオーナー権限、あるいは ChatGPT Plus または Pro の利用資格

  • MCP サーバーオブジェクトの作成と権限付与が可能な Snowflake のアクセス権

  • MCP サーバーを配置する Snowflake のデータベースとスキーマ

  • ChatGPT に許可する操作の決定(Cortex Search、Cortex Analyst、読み取り専用 SQL、特定のプロシージャや関数など)

  • ユーザーがアプリを認可する際に使用する、必要最小限の権限を持つ Snowflake ロール

  • リージョンやクラウドのサフィックスを含む Snowflake アカウントのホストプレフィックス

Snowflake アカウントでネットワークポリシーや IP 許可リストによってアクセスを制限している場合は、最新の ChatGPT コネクタの送信元 IP 範囲からの受信接続を許可するよう、Snowflake 管理者に依頼してください。このリストは随時変更されるため、最新の状態に保つ必要があります。

準備する値

  • Snowflake ホストプレフィックス:Snowflake アカウントの URL で .snowflakecomputing.com より前にある部分全体

  • データベース:MCP サーバーが含まれるデータベース

  • スキーマ:MCP サーバーが含まれるスキーマ

  • MCP サーバー名:Snowflake の MCP サーバーオブジェクト名

  • 管理対象 MCP サーバーの完全な URL(ChatGPT の設定画面で URL の入力を求められる場合)

  • Snowflake ロール:ユーザーがアプリを認可する際に使用するロール

  • ツール一覧:ChatGPT に使用させる Snowflake のオブジェクトとアクション

ChatGPT に許可する操作の決定

公開したい機能だけを選択してください。主な選択肢は以下のとおりです。

  • Cortex Search による検索で、インデックス化された Snowflake のデータやコンテンツから回答を取得

  • 承認済みのセマンティックビューを使用した 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.

Snowflake MCP サーバーの作成

MCP サーバーの作成とアクセス権の付与ができるロールで Snowflake にサインインします。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 オブジェクトへのアクセス権は自動的に付与されません。

仕様のその他のオプションについては、Snowflake が管理する MCP サーバーの作成をご覧ください。

適切な 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 オブジェクトを指していること

  • 接続に使用するロールに MCP サーバーの USAGE 権限があること

  • 接続に使用するロールに、各基盤オブジェクトに必要な権限があること

ChatGPT への Snowflake サーバー詳細の入力

  1. ChatGPT で、アプリを利用するアカウントまたはワークスペースに切り替えます。

  2. 個人用の設定では設定 > プラグインに移動します。ワークスペース用の設定では、ワークスペース管理者としてワークスペース設定 > プラグインに移動します。

  3. Snowflake を検索します。

  4. Snowflake - 公式テンプレートを有効にします。

  5. Snowflake - 公式テンプレートを開き、わかりやすい接続名を入力して、接続を選択します。

  6. 管理対象 MCP サーバーの完全な URL を入力します。

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 ホストプレフィックス

Snowflake アカウントの URL で .snowflakecomputing.com より前にある部分全体を使用します。リージョンやクラウドのサフィックスも含めてください。

たとえば、アカウントの URL が次の文字列で始まる場合:

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

ホストプレフィックスは以下になります。

myorg-myaccount.azure

データベース

MCP サーバーが含まれるデータベースを入力します。例:

CHATGPT_APPS

スキーマ

MCP サーバーが含まれるスキーマを入力します。例:

TOOLS

MCP サーバー名

Snowflake の MCP サーバーオブジェクト名を入力します。例:

CHATGPT_SNOWFLAKE_MCP

OAuth の設定

お使いのアカウントで利用でき、組織の要件を満たす OAuth 方式を選択します。どちらの方式でも、上記の共通の MCP サーバー設定と、以下の接続テストおよびアクセス制御を使用します。

どちらの OAuth 方式でも、session:role:all を使用すると、Snowflake は各ユーザーのデフォルトロールを使用します。OAuth 統合にロールの許可リストが設定されている場合、デフォルトロールはそのリストで許可されている必要があり、ブロックされていてはいけません。別の承認済みロールを持っていても、そのロールが自動的に選択されるわけではありません。

組み込み OAuth

続行する前に、上記の共通セクションの手順に従って、MCP サーバーの作成、権限の付与、サーバーの確認、ChatGPT へのサーバー詳細の入力を完了してください。このセクションを直接開いた場合も、これらの手順は必要です。

この方式は、Snowflake アカウントで ChatGPT パートナーアプリケーションを利用でき、ChatGPT の設定モーダルで組み込み OAuth を利用できる場合にのみ使用してください。

  1. MCP サーバーをホストする Snowflake アカウントで ChatGPT パートナー統合を有効にするよう、Snowflake 管理者に依頼します。既存の有効な ChatGPT パートナー統合がある場合は、それを再利用します。

  2. ChatGPT の設定モーダルで、組み込み OAuth を使用します。クライアント ID やクライアントシークレットの入力、コールバック URL の登録は不要です。

  3. 続いて、以下の「Snowflake の接続と管理」の手順に従い、サインイン、同意、アクセスの設定を行います。その後、「アプリのテスト」を完了します。利用を許可された管理者以外のメンバーによるテストも行ってください。

前述のデフォルトロール、許可リスト、ブロックされたロールに関する動作は、この方式にも適用されます。

カスタム OAuth クライアント

続行する前に、上記の共通セクションの手順に従って、MCP サーバーの作成、権限の付与、サーバーの確認、ChatGPT へのサーバー詳細の入力を完了してください。このセクションを直接開いた場合も、これらの手順は必要です。

カスタム OAuth クライアントには、Snowflake のクライアント ID とクライアントシークレットが必要です。前述のデフォルトロール、許可リスト、ブロックされたロールに関する動作は、この方式にも適用されます。

  1. ChatGPT の設定モーダルで、OAuth の詳細設定 > ユーザー定義 OAuth クライアントを選択し、ChatGPT に表示されるコールバック URL をそのままコピーします。

  2. OAUTH_CLIENT_TYPE = 'CONFIDENTIAL' を指定し、OAUTH_REDIRECT_URI をコピーしたコールバック URL と完全に一致する値に設定して、カスタム OAuth セキュリティ統合を作成します。

  3. 統合名を大文字で指定し、Snowflake で以下のステートメントを実行します。

    SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('YOUR_INTEGRATION_NAME');

  4. JSON の結果から、oauth_client_id を ChatGPT の OAuth クライアント ID に、oauth_client_secret を OAuth クライアントシークレットに貼り付けます。

  5. トークンエンドポイントの認証方式を client_secret_basic に設定します。

カスタムクライアントの認証情報を入力したら、以下の「Snowflake の接続と管理」と「アプリのテスト」に進みます。

Snowflake の接続と管理

  1. どちらの OAuth 方式でも、同じ ChatGPT の設定モーダルで続行を選択し、Snowflake にサインインして接続を認可します。組織の SSO が設定されている場合は、それを使用できます。

  2. ワークスペース用の設定では、利用するメンバー向けにプラグインのインストールポリシーと、ロールまたはグループのアクセス権を設定します。Snowflake と Snowflake - 公式テンプレートの両方が有効になっていることを確認します。

  3. ワークスペース管理者は、Snowflake を利用するロールのユーザーアクセスを設定する責任を負います。

  4. ワークスペース管理者は、公開するツールのアクション制御を確認する責任を負います。

  5. ワークスペース管理者は、アプリの権限を確認し、ChatGPT がアプリを使用する前にメンバーへの確認を求めるタイミングを選ぶ責任を負います。

これらのアプリ権限は ChatGPT の会話に適用されます。ワークスペースエージェントでは、作成者が設定するエージェントごとの制御に基づき、利用できるアプリのアクションと、エンドユーザーに承認を求めるタイミングが決まります。エージェントの動作については、Enterprise および Business 向け ChatGPT ワークスペースエージェントをご覧ください。

アプリのテスト

  1. チャットを開き、Snowflake を選択して接続をテストします。

  2. ChatGPT が設定済みのツールを検出することを確認します。

  3. まず、承認済みデータに対する検索や読み取り専用クエリなど、リスクの低い読み取りアクションを実行します。

  4. Snowflake の権限によって、承認済みのロールとオブジェクトの範囲外へのアクセスが防止されることを確認します。

  5. ワークスペース用の設定では、利用を許可された管理者以外のメンバーのうち、Snowflake のデフォルトロールが異なるメンバーでテストしてください。管理者が接続できても、すべてのメンバーが接続できるとは限りません。

ワークスペース管理者が Snowflake だけを有効にしても、設定は完了しません。Snowflake - 公式テンプレートが有効化・接続されていない場合、メンバーにはプラグインが無効と表示されることがあります。

MCP サーバー URL と OAuth の動作

ChatGPT は、Snowflake が管理する MCP サーバーの完全な URL に接続します。

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

ChatGPT は、その URL に含まれる Snowflake ホストプレフィックスを使って、以下の Snowflake OAuth エンドポイントを特定します。

  • 認可:https://<snowflake_host_prefix>.snowflakecomputing.com/oauth/authorize

  • トークン:https://<snowflake_host_prefix>.snowflakecomputing.com/oauth/token-request

Snowsight の URL、Snowflake アカウントのルート URL のみ、または余分なパスセグメントを含む URL は貼り付けないでください。MCP URL には /api/v2/databases/{database}/schemas/{schema}/mcp-servers/{server} が含まれている必要があり、Snowflake のオブジェクトと完全に一致していなければなりません。

トラブルシューティング

管理者には有効、メンバーには無効と表示される Snowflake

  • ワークスペース設定 > プラグインで、Snowflake と Snowflake - 公式テンプレートの両方が有効になっていることを確認してください。

  • Snowflake - 公式テンプレートを開き、接続の手順を完了してください。テンプレートを有効にするだけでは不十分で、接続も必要です。

  • Snowflake を開き、テンプレートが必須アプリとして表示されることを確認してください。

  • 該当メンバーのロールまたはグループが、プラグインのインストールポリシーで許可されていることを確認してください。

MCP サーバーが見つからない場合

  • MCP サーバーの完全な URL を再確認してください。設定画面でテンプレートの 4 つのフィールドの入力を求められる場合は、それらを再確認してください。

  • 指定したデータベースとスキーマに MCP サーバーが存在することを確認してください。

ChatGPT にツールが表示されない場合

  • MCP サーバーの仕様にツールが含まれていることを確認してください。

  • ロールに MCP サーバーの USAGE 権限があることを確認してください。

ツールは表示されるものの、使用時に失敗する場合

  • 検索サービス、セマンティックビュー、ウェアハウス、プロシージャ、UDF など、基盤となる Snowflake オブジェクトに必要な権限がロールにあることを確認してください。

SQL ツールの実行失敗

  • ウェアハウス名が正しく、ウェアハウスが稼働していることを確認してください。

  • ロールにウェアハウスの USAGE 権限があることを確認してください。

  • 読み取り専用アクセスを意図している場合は、read_only: true が設定されていることを確認してください。

要求されたロール ALL の明示的なブロック

自分のデフォルトロールを、OAuth 統合で許可・ブロックされているロールと照合するよう、Snowflake 管理者に依頼してください。別の許可済みロールを持っていても、そのロールが自動的に選択されるわけではありません。適切であれば、デフォルトロールを承認済みのロールに変更し、再接続してください。デフォルトロールを変更すると、ChatGPT 以外の Snowflake セッションにも影響します。

認可の失敗

  • ユーザーが Snowflake にサインインできることを確認してください。

  • session:role:all を使用する場合は、ユーザーのデフォルトロールが OAuth 統合で許可されていることを確認してください。

  • Snowflake が管理する MCP サーバーの OAuth フローを使用する設定になっていることを確認してください。

  • カスタム OAuth クライアントを使用する場合は、クライアント ID とクライアントシークレットが Snowflake の OAuth 統合と一致し、そのリダイレクト URI が ChatGPT に表示されるコールバック URL と完全に一致していることを確認してください。

    組み込み OAuth を使用する場合は、MCP サーバーをホストするアカウントで ChatGPT パートナー統合が利用可能かつ有効になっていることを確認するよう、Snowflake 管理者に依頼してください。

Snowflake のネットワークポリシーまたは IP 許可リストによるコネクタのブロック

  • Snowflake のネットワークポリシーまたはアクセスルールを更新するよう、Snowflake 管理者に依頼してください。

  • 最新の ChatGPT コネクタの送信元 IP 範囲からの受信接続を許可してください。

  • この許可リストの設定は Snowflake で行ってください。これは ChatGPT ワークスペースの IP 許可リストとは別の設定です。

  • IP 範囲は変更される可能性があるため、可能であれば公開されている JSON に基づく更新を自動化してください。

ホスト名に起因する接続の問題

正しい Snowflake ホストプレフィックスを使用してください。Snowflake のホスト名にアンダースコアが含まれていると問題が発生することがあるため、ハイフンの使用を推奨します。

参考資料

この記事は役に立ちましたか?