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 ワークシートを開く
Snowflake アプリにサインインします。
MCP サーバーを作成してアクセス権を付与できるロールに切り替えます。
ワークスペースに移動します。

SQL ファイルを含むワークスペースを作成します。

ワークスペースのコンテキストを、MCP サーバーを作成するデータベースとスキーマに設定します。

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 オブジェクトは例です。
support-searchは、指定した Cortex Search サービスを公開します。revenue-analystは、指定したセマンティックビューを公開します。必要に応じて、ほかのビュー用のツールを追加します。sql-readonlyは、指定したウェアハウスを使用する読み取り専用 SQL を公開します。
ChatGPT が適切なツールを選択できるよう、安定した分かりやすいツール名を使用してください。MCP サーバーを作成しても、基盤となる Snowflake オブジェクトへのアクセス権は自動的には付与されません。
追加の仕様オプションについては、Snowflake 管理の MCP サーバーを作成するを参照してください。
適切な Snowflake 権限の付与
ユーザーが認可に使用する Snowflake ロールを選び、そのロールに次のアクセス権を付与します。
データベースとスキーマ
MCP サーバー
検索サービス、セマンティックビュー、ウェアハウスなど、ツールが使用するすべての基盤オブジェクト
例:
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 サーバー情報の入力
ChatGPT で、アプリを利用可能にするアカウントまたはワークスペースに切り替えます。
設定を開きます。ワークスペース全体に設定する場合は、ワークスペース管理者としてワークスペース設定を開きます。
プラグインに移動します。
Snowflake を検索します。
Snowflake - 公式テンプレートを有効にします。
Snowflake - 公式テンプレートを開き、分かりやすい接続名を入力して、接続を選択します。
完全な管理対象 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

設定画面で 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 統合にロール許可リストが設定されている場合、デフォルトロールはそのリストで許可され、かつブロックされていない必要があります。別の承認済みロールがあっても、自動的には選択されません。
ChatGPT の設定モーダルで高度な OAuth 設定を開き、ユーザー定義 OAuth クライアントを選択して、ChatGPT に表示されるコールバック URLをコピーします。
OAUTH_CLIENT_TYPE = 'CONFIDENTIAL'を指定し、OAUTH_REDIRECT_URIをそのコールバック URL と完全に同じ値に設定して、カスタム OAuth セキュリティ統合を作成します。統合名を大文字で指定し、Snowflake で次のステートメントを実行します。
SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('YOUR_INTEGRATION_NAME');JSON の結果から、
oauth_client_idを ChatGPT の OAuth クライアント ID に、oauth_client_secretを OAuth クライアントシークレットに貼り付けます。トークンエンドポイントの認証方式を
client_secret_basicに設定します。
Snowflake の接続と管理
同じ ChatGPT 設定モーダルで続行を選択し、Snowflake にサインインして接続を認可します。
ワークスペースに設定する場合は、使用を許可するメンバー向けに、プラグインのインストールポリシーとロールまたはグループのアクセス権を設定します。Snowflake と Snowflake - 公式テンプレートの両方が有効になっていることを確認します。
ワークスペース管理者は、Snowflake を使用するロールのユーザーアクセスを設定する必要があります。
ワークスペース管理者は、公開されたツールのアクション制御を確認する必要があります。
ワークスペース管理者は、アプリの使用前に ChatGPT がメンバーへ確認するタイミングを選ぶため、アプリの権限を確認する必要があります。
これらのアプリ権限は、ChatGPT の会話に適用されます。ワークスペースエージェントでは、エージェントの作成者が設定したエージェント単位の制御により、利用可能なアプリアクションと、エンドユーザーに承認を求めるタイミングが決まります。エージェントの動作については、Enterprise および Business 向け ChatGPT ワークスペースエージェントを参照してください。
アプリのテスト
チャットを開いて Snowflake を選択し、接続をテストします。
設定したツールを ChatGPT が検出することを確認します。
まず、承認済みデータの検索や読み取り専用クエリなど、リスクの低い読み取りアクションを実行します。
Snowflake の権限により、承認済みのロールとオブジェクト以外へのアクセスが防止されることを確認します。
ワークスペースに設定する場合は、デフォルトの 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 フローが使用されていることを確認します。
クライアント ID とクライアントシークレットが Snowflake OAuth 統合と一致し、そのリダイレクト URI が ChatGPT に表示されるコールバック URLと一致することを確認します。
Snowflake のネットワークポリシーまたは IP 許可リストがコネクタをブロックする
Snowflake のネットワークポリシーまたはアクセスルールを更新するよう、Snowflake 管理者に依頼してください。
現在の ChatGPT コネクタの送信元 IP 範囲からの受信接続を許可します。
この許可リストは Snowflake で設定します。ChatGPT ワークスペースの IP 許可リストとは別の設定です。
範囲は変更される可能性があるため、可能であれば公開 JSON に基づく更新を自動化してください。
ホスト名の接続問題
正しい Snowflake ホストプレフィックスを使用してください。アンダースコアを含む Snowflake ホスト名は問題の原因になることがあります。ハイフンを使用してください。
