Claude Media
Claude Snowflake連携ガイド — 設定手順とできること

Claude Snowflake連携ガイド — 設定手順とできること

ClaudeとSnowflakeを連携する手順を、Snowflake側の準備から権限の決まり方、接続できないときの切り分けまでまとめます。書き込みの可否は公開するツール次第です。

Claude Snowflake連携とは何か

Snowflakeコネクタは、Claudeから自社のSnowflakeアカウントのデータを取得するためのディレクトリConnectorです。開発元はSnowflake自身で、Connectorsディレクトリでは「Data & analytics」カテゴリに「Anthropic verified」として掲載されています。サインインが必要で、掲載は2025年11月に追加されたものです。

裏側で動くのは、Snowflakeが提供するマネージドMCPサーバーです。ディレクトリのページには、自然言語でSQLクエリを実行でき、Cortex Agentsにも対応すると書かれています。公開されているツールとして挙がっているのはCortex AgentsとCortex Searchの2つです。

つまり、Claudeが何をできるかは「Snowflake側のMCPサーバーにどのツールを登録したか」でほぼ決まります。Claude側の設定画面をいくら探しても、できることの範囲を絞るスイッチは見つかりません。この記事は、その前提でSnowflake側の準備から順に追います。

読み取り専用と言い切れるのはどの場合か

「Snowflakeコネクタは読み取り専用」と説明されることがありますが、ディレクトリのページに権限区分の記載はありません。書き込みの可否はMCPサーバーに登録するツールの種類で変わります。

ツール

MCPサーバーに登録できるツールの種類

  • Cortex Agent

    質問をエージェントに渡し、エージェントが設定済みのCortex AnalystやCortex Searchを使って答えを返します。応答には途中の推論・ツール呼び出し・検索結果・引用がすべて含まれ、200KB以上になることがあります。

  • Cortex Analyst

    自然文からSQLを生成し、そのSQL文をクライアントに返します。使えるのはセマンティックビューだけで、セマンティックモデルは非対応です。

  • Cortex Search

    Cortex Searchサービスに対する検索で、契約書やアンケートの自由記述のような非構造化データを引く役です。

  • SQL実行(SYSTEM_EXECUTE_SQL)

    クライアントが書いたSQLをそのまま実行します。read_onlyの既定値はtrueで、SELECTだけが通ります。falseにする設定は可能です。

  • UDF・ストアドプロシージャ(GENERIC)

    登録した関数や手続きをツールとして呼び出します。中身の処理はSnowflake側の実装次第なので、書き込みを行う手続きを公開することも技術的には可能です。

読み取りに閉じた運用にしたいときは、書き込みを行うカスタムツールを持たせていないCortex Agent、またはCortex Searchだけを登録するか、SQL実行のread_onlyをtrueのままにします。Snowflakeは、業務データの質問にはCortex Agentだけを公開するのを基本形としています。同じサーバーにSQL実行ツールも置くと、クライアントがエージェントのセマンティックビューや検証済みクエリを迂回できるためです。直接SQLが必要なら、専用の最小権限ロールを付けた別サーバーに分ける構成が案内されています。

自社のSnowflake管理者がサーバーをどう作ったかを確認せずに「書き込みできない」と言い切ると、外れる可能性があります。管理者に聞くべきなのは、登録済みツールの一覧と、SQL実行ツールのread_onlyの値の2点です。

接続前にSnowflake側で必要な準備

ディレクトリの「Connect」を押す前に、Snowflake管理者側で次の準備が要ります。Claude側の作業は、その後の数クリックだけです。

準備

Snowflake管理者が先に済ませる作業

  1. 1

    MCPサーバーオブジェクトを作る

    CREATE MCP SERVERで、公開するツールをYAMLの仕様として指定します。接続先URLはhttps://<アカウントURL>/api/v2/databases/<DB>/schemas/<スキーマ>/mcp-servers/<サーバー名>の形になります。

  2. 2

    ロールに権限を渡す

    MCPサーバーへのUSAGEだけではツールは呼べません。エージェント、検索サービス、セマンティックビュー、関数それぞれに必要な権限を、ツールごとに付与します。

  3. 3

    OAuthセキュリティ統合を作る

    Claudeのコールバック用にOAUTH_REDIRECT_URIを設定します。claude.aiの場合は通常https://claude.ai/api/mcp/auth_callbackです。Claude Desktopではlocalhostのアドレスになります。どちらの場合も、Claudeが接続設定中に表示するURIと一致させます。

  4. 4

    ユーザーの既定ロールと既定ウェアハウスを確認する

    セッションは各ユーザーのDEFAULT_ROLEで始まります。DEFAULT_WAREHOUSEが空だとセッションの初期化に失敗します。

  5. 5

    ネットワークポリシーを確認する

    アカウントでネットワークポリシーを使っているなら、Claudeの送信元IPアドレスを許可する必要があります。

アクセス専用ロールの作成例は次のとおりです(Snowflakeドキュメントの例をもとにした抜粋です)。

CREATE ROLE mcp_access_role;
GRANT DATABASE ROLE SNOWFLAKE.CORTEX_AGENT_USER TO ROLE mcp_access_role;
GRANT USAGE ON WAREHOUSE my_wh TO ROLE mcp_access_role;
GRANT USAGE ON DATABASE my_db TO ROLE mcp_access_role;
GRANT USAGE ON SCHEMA my_db.my_schema TO ROLE mcp_access_role;
GRANT USAGE ON MCP SERVER my_db.my_schema.my_server TO ROLE mcp_access_role;
GRANT USAGE ON AGENT my_db.my_schema.my_agent TO ROLE mcp_access_role;
GRANT ROLE mcp_access_role TO USER analyst_user;
ALTER USER analyst_user SET DEFAULT_ROLE = 'mcp_access_role' DEFAULT_WAREHOUSE = 'my_wh';

Snowflakeは、このロールをPUBLICに付与したり、将来のテーブルまで含めて広い権限を渡したりしないよう求めています。

Claudeでの追加とClaude Codeでの確認

Snowflakeのドキュメントによると、Claude(claude.aiとClaude Desktop)ではSettingsのConnectorsを開き、Browse connectorsで「Snowflake」を探すか、Add custom connectorでMCPサーバーURLを入れます。セキュリティ統合のクライアントIDとシークレットを入力して追加すると、ブラウザでSnowflakeのサインインとOAuth同意画面が開きます。承認後にツールが会話で使えるようになります。TeamプランとEnterpriseプランでは、コネクタを追加できるのは管理者だけです。

Claude Codeからも、claude.aiアカウントでログインしていれば同じ接続を利用できます。

/mcp

/mcpを実行すると、claude.ai側で追加済みのConnectorsが一覧に出ます。設定ファイルで直接指定するローカルMCPサーバーとは別の経路です。Connectors全般の追加手順やVerified・Communityラベルの見方はClaude Connectorsとはにあります。Anthropicと契約している企業では、Claude Marketplace経由でSnowflakeの利用枠自体を拡張した事例も出ています。

Claudeが見られるデータの範囲はどこで決まるか

Snowflakeのドキュメントでは、ClaudeはOAuthでsession:role:allのスコープを要求するとされています。この場合、セッションのロールはロール名を指定した接続ではなく、そのユーザーのDEFAULT_ROLEになります。

くらべる

ロールの決まり方で起きること

一部のクライアント

ロール指定に対応するクライアント

session:role:<ロール名>のスコープを要求でき、そのロールがセッションの主ロールになります。

session:role:all を要求

Claude

サーバー側が他のロールのスコープを公開していても、既定ロール(DEFAULT_ROLE)が使われます。

ここから2つの運用上の判断が出てきます。1つは、Claudeに使わせたいロールを、そのユーザーのDEFAULT_ROLEに設定しておくことです。もう1つは、ユーザーごとに見せるデータの深さを変えたいとき、1つのサーバーでスコープを切り替えるのではなく、専用ロールを付けた別サーバーに分けることです。前者はSnowflakeの案内どおりで、後者もドキュメントが「クライアントがロールのスコープに従わない場合は別サーバー」としています。

同意画面に「secondary roles = ALL」と表示されることがあります。ドキュメントによれば、この表示は見かけ上のもので、セキュリティ統合がOAUTH_USE_SECONDARY_ROLES = NONE(既定値)なら二次ロールは有効になりません。二次ロールを有効にするには統合側でIMPLICITを設定する必要があります。

接続できないときの症状別の切り分け

Snowflakeのトラブルシューティング表を、Claudeから接続する場面に合わせて読み替えると次のとおりです。

症状考えられる原因確認すること
OAuth同意や接続が失敗する考えられる原因リダイレクトURIが一致していない確認することOAUTH_REDIRECT_URIにClaudeが表示したURIを設定
認証は通るがMCPサーバーにつながらない考えられる原因URLが不完全確認することDB・スキーマ・サーバー名まで含めた完全なパス
ホスト名関連の接続エラー考えられる原因アカウントのホスト名にアンダースコア確認することハイフンに置き換える
セッションの初期化に失敗する考えられる原因既定ウェアハウスが未設定確認することDEFAULT_WAREHOUSEとそのUSAGE権限
ツールが一覧に出ない考えられる原因既定ロールにMCPサーバーのUSAGEがない確認することUSAGEを既定ロールに付与
ツールは見えるが呼べない考えられる原因下位オブジェクトの権限が足りない確認することエージェント・検索サービス・セマンティックビュー・関数の権限
PrivateLinkのアカウントにつながらない考えられる原因ClaudeはSaaSクライアントで、PrivateLink経由では届かない確認すること公開のMCPサーバーURLを使い、USE_PRIVATELINK_FOR_AUTHORIZATION_ENDPOINT = TRUEを設定
想定と違うロールで動く考えられる原因セッションが別のロールで始まっている確認することユーザーのDEFAULT_ROLEを設定して確認

invalid_clientのエラーは、認証情報の誤りに見えても、ネットワークポリシーがトークン要求を遮断した場合に同じ応答が返ることがあります。認証情報とメソッドが正しいのに出るときは、まずポリシーを疑う価値があります。許可するIPアドレスは、Anthropicがplatform.claude.com/docs/en/api/ip-addressesで公開している送信元IPを使います。

使い始めてから当たる制限

  • 1つのMCPサーバーに登録できるツールは最大50個です。数が増えるとツール選択の精度が下がる可能性があるとされています
  • SQL実行ツールとGENERICツールの応答は250KBで切り詰められます。超えるときは列や行を絞って聞き直します
  • MCPのリソース・プロンプト・ルート・通知・サンプリングは未対応です
  • MCPサーバーオブジェクトはフェイルオーバーグループで複製されません。レプリケーションを使うなら、セカンダリ側で作り直します
  • 政府リージョンでは使えず、中華人民共和国でも提供されません
  • Cortex Agentが再帰的に別のMCPサーバー経由で自分を呼ぶ構成は、最大10回の呼び出しで打ち切られます

他の接続方法との違い

手元のCSVファイルだけを分析したいなら、Snowflakeコネクタを使うまでもありません。ファイルをアップロードして集計する手順はClaude CSV分析の使い方にあります。データがすでにSnowflakeにあるなら接続、ファイルとして手元にあるだけならアップロード、が基準です。データがDatabricksにあるならDatabricks Genieコネクタが対応します。

このディレクトリConnector以外に、自前でMCPサーバーを立てる道もあります。Claude CodeからMCPで自社のPostgreSQLやMySQLに直接つなぐ構成は、読み取り専用ユーザーの設計から始める運用を含めてClaude CodeでMCPからデータベースに接続する方法にまとめています。PostgreSQL互換のNeonでは、Neon MCPサーバーで一時ブランチのマイグレーション検証を回す運用例もあります。

違いは、接続がclaude.aiアカウントに紐づくか、ローカルのMCP設定に紐づくかです。ディレクトリConnectorはアカウント単位なので、一度つなげばclaude.aiやClaude Codeから同じ接続を使えます。継続的にデータを触る定型業務をCoworkに任せる使い方はClaude Cowork活用事例で扱っています。

まとめ

Snowflakeコネクタで難しいのはClaude側の設定ではなく、Snowflake側でツールとロールを決める作業です。「読み取り専用のはず」で導入せず、管理者に登録ツールとread_onlyの値を確認してから接続します。Claudeは既定ロールで動くため、専用ロールの作成とDEFAULT_ROLEの設定が、見せたくないデータへの経路を塞ぐ実質的な手段になります。

この記事を共有:XはてブLinkedIn