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

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

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

更新日: 3 days ago

ChatGPT ワークスペース管理者、または ChatGPT Plus か Pro のユーザーが、Snowflake 管理の MCP サーバーを介して ChatGPT を Snowflake に接続する場合は、このガイドを使用してください。

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

設定内容

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

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

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

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

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

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

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

  • データベース

  • スキーマ

  • MCP サーバー名

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

開始前の準備

必要なものは次のとおりです。

  • ChatGPT ワークスペースの管理者権限またはオーナー権限、もしくは ChatGPT Plus または Pro へのアクセス権

  • MCP サーバーオブジェクトを作成し、権限を付与できる Snowflake アクセス権

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

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

  • ユーザーがアプリを認可するときに使用する、最小権限の Snowflake ロール

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

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

準備する値

  • Snowflake ホストプレフィックス:Snowflake アカウント URL の .snowflakecomputing.com より前のすべての部分

  • データベース:MCP サーバーを含むデータベース

  • スキーマ:MCP サーバーを含むスキーマ

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

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

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

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

ChatGPT に許可する操作の決定

公開する機能だけを選択してください。一般的な選択肢は次のとおりです。

  • Cortex Search を使用し、インデックス化された Snowflake のデータやコンテンツから回答を検索

  • 承認済みのセマンティックビューを介した Cortex Analyst による Q&A

  • 制御されたクエリアクセス用の読み取り専用 SQL

  • 特定のワークフロー用の Snowflake Agent、ストアドプロシージャ、または 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 サーバーの作成

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 オブジェクトへのアクセス権は自動的には付与されません。

追加の仕様オプションについては、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 Agent を公開する場合は、そのオブジェクトに必要な権限も付与します。

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. プラグインに移動します。

  4. Snowflake を検索します。

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

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

  7. 完全な管理対象 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 クライアントの設定

接続には、Snowflake から取得したクライアント ID とクライアントシークレットが必要です。

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

  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_secretOAuth クライアントシークレットに貼り付けます。

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

Snowflake の接続と管理

  1. 同じ ChatGPT 設定モーダルで続行を選択し、Snowflake にサインインして接続を認可します。

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

  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 が有効だが、メンバーには無効

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

  • 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 フローが使用されていることを確認します。

  • クライアント ID とクライアントシークレットが Snowflake OAuth 統合と一致し、そのリダイレクト URI が ChatGPT に表示されるコールバック URLと一致することを確認します。

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

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

  • 現在の ChatGPT コネクタの送信元 IP 範囲からの受信接続を許可します。

  • この許可リストは Snowflake で設定します。ChatGPT ワークスペースの IP 許可リストとは別の設定です。

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

ホスト名の接続問題

正しい Snowflake ホストプレフィックスを使用してください。アンダースコアを含む Snowflake ホスト名は問題の原因になることがあります。ハイフンを使用してください。

参考資料

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