❄️

Snowflake MCP Server で Cursor から高度なデータ分析を実現する

に公開
2

はじめに

最近、AI エージェントによる開発支援がますます注目を集めていますね。その中でも Model Context Protocol (MCP) という標準化されたプロトコルが Anthropic 社から発表され、さまざまなツールや API と LLM をより簡単に接続できるようになりました。そして Snowflake からも、公式かつマネージドな Snowflake Managed MCP Server が提供されています!

これまでも Cortex Search や Cortex Analyst といった個別の機能は利用可能でしたが、SQL の実行機能Cortex Agents もツールとして束ねられるようになったことで、MCP クライアント (Cursor、Claude Desktop など) から Snowflake の分析環境に直接アクセスし、AI Agent に自然言語で指示するだけでデータ分析が完結 できるようになりました。これは開発者にとってかなり嬉しいアップデートなのではないでしょうか?

今回は実際に Cursor から Snowflake Managed MCP Server を設定・利用してみて、どのような分析が可能になるのか、そして Snowflake CoWork (旧称 Snowflake Intelligence) との使い分けについてもご紹介していきます。エンジニアの方で Snowflake のデータを手軽に分析したい方は、ぜひ最後までお読みいただければ幸いです!

Snowflake Managed MCP Server とは

Snowflake Managed MCP Server は、Snowflake の各種機能を MCP エコシステムに統合するための 公式のマネージドサーバー です。MCP クライアント (Cursor、Claude Desktop など) と接続することで、Snowflake のデータ分析機能を AI Agent から操作できるようになります。

大きな特徴は、Snowflake アカウント内でサーバーがホストされる 点です。ローカルにサーバーを別途立てる必要がなく、CREATE MCP SERVER という SQL を実行するだけで、Snowflake が管理するエンドポイントが払い出されます。認証やアクセス制御も Snowflake の RBAC / OAuth の仕組みにそのまま乗るため、ガバナンスを効かせやすいのも嬉しいポイントです。

主な機能

Snowflake Managed MCP Server では、以下のツールを組み合わせて 1 つのサーバーとして公開できます。

ツールタイプ 説明
Cortex Search (CORTEX_SEARCH_SERVICE_QUERY) 非構造化データの検索 (RAG アプリケーションなどで利用)
Cortex Analyst (CORTEX_ANALYST_MESSAGE) Semantic View を用いた構造化データの分析 (Text2SQL)
Cortex Agents (CORTEX_AGENT_RUN) 構造化データと非構造化データを横断するエージェント型オーケストレーター
SQL 実行 (SYSTEM_EXECUTE_SQL) AI Agent が生成した SQL の実行
カスタムツール (GENERIC) ユーザー定義関数 (UDF) やストアドプロシージャをツールとして呼び出し

技術的な特徴

  • Snowflake ホスト型: 別途インフラを立てる必要がなく、リモートの HTTP エンドポイントとして提供される
  • RBAC による権限管理: MCP Server 自体と各ツールに対して個別に権限を付与できる (サーバーへの接続権限とツールの実行権限は別管理)
  • 柔軟な認証: OAuth 2.0 と PAT (Programmatic Access Token) に対応
  • 細かい SQL 制御: SQL 実行ツールでは read_only オプションで読み取り専用に制限可能

Cortex Agents から MCP 経由で他のツールやエージェントを呼び出す

ここまでは「Snowflake の機能を MCP クライアント (Cursor など) に公開するサーバー」としての側面を見てきましたが、逆に Cortex Agents 自身が MCP クライアントになる こともできます。Cortex Agents では MCP Connectors を通じて外部の MCP サーバーに接続し、エージェントのオーケストレーションの中でそのツールを呼び出せます。

ここで面白いのが、Managed MCP Server では Cortex Agent 自体を 1 つのツール (CORTEX_AGENT_RUN) として公開できる点です。これを組み合わせると、あるエージェントが MCP 経由で別のエージェントを呼び出す (いわゆる A2A: Agent-to-Agent) 連携 も構成できます。得意分野の異なるエージェントを役割分担させ、必要に応じて処理を委譲する、といった使い方が考えられます。

Snowflake CoWork との使い分け

ここで Snowflake 通の方は「既に Snowflake CoWork (旧称 Snowflake Intelligence) があるけど、それとの使い分けはどう考えればいいのか?」という疑問が出てくるのではないでしょうか?それに対して私は以下のように考えています:

Snowflake CoWork が適している場合

項目 詳細
対象ユーザー ビジネスユーザー、アナリスト
利用環境 Web ブラウザベースの GUI
主な用途 社内向けデータ分析アプリの展開、レポート作成
メリット セットアップが簡単、GUI で直感的に操作可能。環境全てが Snowflake で管理されているため、セキュリティの観点からも安全
展開方法 組織全体への横展開が容易

Snowflake Managed MCP Server が適している場合

項目 詳細
対象ユーザー エンジニア、開発者
利用環境 Cursor、Claude Desktop などの開発ツール
主な用途 開発中のデータ確認、アドホックな分析、外部アプリケーションからの連携
メリット 開発フローに統合、コードと並行して分析可能
展開方法 個人やチーム単位での利用

つまり、社内の自然言語分析アプリを手軽に展開したい場合は CoWorkエンジニアが使う MCP クライアント向けに Snowflake の分析環境を展開したい場合は Managed MCP Server という使い分け (あるいは併用) になってくるのかなと考えます。迷う場合には最初に導入が容易である Snowflake CoWork を試してみて、ビジネス上の期待値がクリアになってから必要に応じて Snowflake Managed MCP Server を試してみるのがオススメです。

Cursor での設定方法

それでは実際に Snowflake Managed MCP Server を作成し、Cursor から接続してみましょう。大きく分けて「① Snowflake 側で MCP Server を作成する」「② PAT を発行してアクセス権限を整える」「③ Cursor 側で接続設定を行う」の 3 ステップです。認証には手軽な PAT (Programmatic Access Token) を利用します。

1. Snowflake 側で MCP Server を作成する

公開するツールの事前準備

MCP Server では、Cortex Search / Cortex Analyst / Cortex Agents などを「ツール」としてまとめて公開します。利用したいツールに応じて、事前に以下を準備しておきます。

  • Cortex Search を使う場合: Cortex Search Service を作成 (非構造化データの検索用)
  • Cortex Analyst を使う場合: Semantic View を作成 (構造化データの Text2SQL 用)
  • Cortex Agents を使う場合: Cortex Agent を作成
  • SQL 実行のみで良い場合: 事前準備は不要

なお、過去記事「Snowflake Cortex Search の管理 UI が便利になった」では Cortex Search の管理 UI の使い方を解説しておりますので、あわせてご確認いただければ幸いです。

https://zenn.dev/tsubasa_tech/articles/5f6bd4c3b4d03b

MCP Server の作成

準備ができたら、CREATE MCP SERVER で MCP Server を作成します。FROM SPECIFICATION に、公開したいツールを YAML 形式で列挙します。以下は Cortex Analyst / Cortex Search / SQL 実行の 3 つのツールを公開する例です。

CREATE OR REPLACE MCP SERVER MY_DB.MY_SCHEMA.MY_MCP_SERVER
  FROM SPECIFICATION $$
tools:
  # Cortex Analyst (Semantic View を用いた Text2SQL)
  - name: "sales-analyst"
    type: "CORTEX_ANALYST_MESSAGE"
    identifier: "MY_DB.MY_SCHEMA.SALES_SEMANTIC_VIEW"
    description: "売上データを分析するためのセマンティックビュー"
    title: "売上分析"

  # Cortex Search (非構造化データの検索)
  - name: "manual-search"
    type: "CORTEX_SEARCH_SERVICE_QUERY"
    identifier: "MY_DB.MY_SCHEMA.MANUAL_SEARCH_SERVICE"
    description: "運用マニュアルなどのドキュメントを検索"
    title: "ドキュメント検索"

  # SQL 実行 (read_only で読み取り専用に制限)
  - name: "sql_exec_tool"
    type: "SYSTEM_EXECUTE_SQL"
    description: "Snowflake に対して読み取り専用の SQL を実行"
    title: "SQL 実行"
    config:
      read_only: true
      query_timeout: 600
$$;

各ツールの description は AI Agent がツールを選択する際の判断材料になります。可能な限り具体的に記述することで、AI Agent が適切にツールを呼び分けてくれるようになります。作成後は以下のコマンドで一覧を確認できます。

SHOW MCP SERVERS IN SCHEMA MY_DB.MY_SCHEMA;

2. PAT の生成とアクセス権限

接続用ロールへの権限付与

MCP Server への接続にはロールベースのアクセス制御 (RBAC) が使われます。ここで気を付けたいのが、MCP Server への接続権限と、各ツールが参照するオブジェクトへの権限は別々に付与する必要がある という点です。最小権限のロールを用意し、必要な権限を付与していきます。

まず MCP Server への接続 (ツールの一覧・呼び出し) に必要な USAGE を付与します。

GRANT USAGE ON MCP SERVER MY_DB.MY_SCHEMA.MY_MCP_SERVER TO ROLE MY_MCP_ROLE;

加えて、公開した各ツールが参照するオブジェクトに対しても、以下の権限をロールへ付与しておく必要があります。

ツール 必要な権限
Cortex Search 対象の Cortex Search Service への USAGE
Cortex Analyst 対象の Semantic View への SELECT
Cortex Agents 対象の Cortex Agent への USAGE
カスタムツール 対象の UDF / ストアドプロシージャへの USAGE

PAT の生成

次に Snowsight にログインして PAT を生成します。以下の手順で進めてください。

  1. Snowsight の左下のプロフィールアイコンから「設定」を選択
  2. 認証」セクションに移動
  3. 新しいトークンを生成」ボタンをクリック
  4. トークンの名前と有効期限を設定
  5. 権限として、先ほど用意した接続用ロールを選択
  6. 生成されたトークンをコピー

PAT生成画面のスクリーンショット

3. Cursor の MCP 設定

Cursor の設定画面から MCP の設定を開き、新しい MCP Server を追加します。または、設定ファイル (~/.cursor/mcp.json) を直接編集することも可能です。Managed MCP Server は リモートの HTTP エンドポイント として接続するため、エンドポイント URL と認証ヘッダー (PAT) を指定します。

{
  "mcpServers": {
    "snowflake": {
      "url": "https://<組織名>-<アカウント名>.snowflakecomputing.com/api/v2/databases/<データベース名>/schemas/<スキーマ名>/mcp-servers/<MCP Server名>",
      "headers": {
        "Authorization": "Bearer <先ほど生成したPAT>"
      }
    }
  }
}

エンドポイント URL は https://<アカウント URL>/api/v2/databases/{データベース}/schemas/{スキーマ}/mcp-servers/{MCP Server名} という形式です。

4. 接続確認

設定後、Cursor の MCP 設定画面で対象のサーバーが有効になっていることを確認します。接続が成功すると、MCP Server のアイコンに緑色のランプが点灯し、Cursor のチャット画面から Snowflake の機能が利用可能になります。

実際の使用例

それでは、実際に Cursor から Snowflake Managed MCP Server を使ってデータ分析をしてみましょう!

例1: 自然言語でのデータ探索

Cursor のチャットに以下のように入力してみます:

Snowflakeのデータベースの一覧を出力して。

MCP Server が自動的に適切な SQL を生成・実行し、結果を返してくれます:

SNOWFLAKEデータベース一覧

1. SALES
顧客の売上に関するデータを管理するデータベース

2. CUSTOMER
顧客情報を管理するデータベース
...

このように Snowflake のロールの権限範囲で、かつ SQL 実行ツールの設定 (read_only など) で許可された範囲の SQL を用いて、AI Agent が適切な SQL を生成・実行し、結果を返してくれます。

例2: Cortex Search での非構造化データ検索

社内ドキュメントから特定の情報を検索したい場合:

運用マニュアルの要約をして。

以下の通り設定された Cortex Search Service が自動的に呼び出され、関連する情報が返されます。

📚 SnowRetail 運用マニュアル要約
🏢 会社の基本理念
企業理念:「食と暮らしの豊かさを創造し、地域社会に貢献する」
基本方針:
顧客満足を最優先
食の安全は妥協しない
地域社会との共生
...

例3: 複雑な分析クエリの実行

「2024年下半期の月別売上推移を調査し、変動要因を分析して。」

Cortex Analyst が Semantic View を解釈して適切な SQL クエリを生成し、その結果をもとに Cursor の AI Agent がレポートとして返してくれます:

📊 2024年下半期 売上分析レポート

📈 月別売上推移
月	売上高(円)	前月比	特徴
7月	10,129,060	-	下半期スタート
8月	16,493,740	+62.8%	最高売上月
9月	13,400,820	-18.8%	高水準維持
10月	9,944,960	-25.8%	売上低下
11月	9,657,880	-2.9%	最低売上月
12月	19,443,520	+101.3%	年末商戦で急増
合計	79,069,980	-	下半期合計

🔍 主要な変動要素
1. 季節性要因
8月:夏季商戦のピーク
高額商品(デジタルカメラ等)の大量販売
製品xxが各500万円の売上

12月:年末商戦
売上が前月比2倍以上に急増
12月16日(7,117,020円)、24日(7,056,200円)が突出
...

活用のポイント

権限設定のベストプラクティス

Snowflake Managed MCP Server では、RBAC とツール単位の設定を組み合わせることでセキュアな運用が可能です。

  • 読み取り専用に絞る: SQL 実行ツールは read_only: true にしておくと、参照系のクエリのみに制限できる
  • 最小権限のロールを使う: PAT には、必要なツールのオブジェクトにだけ権限を持つロールを紐付ける
  • 用途ごとにサーバーを分ける: 開発用と本番用で MCP Server を分け、公開するツールや権限を変える

最後に

Snowflake Managed MCP Server は、エンジニアの開発体験を大きく高めてくれるツール だと感じています。特に以下の点で価値を提供してくれます:

  • 開発フローとの統合: Cursor から離れることなくデータ分析が可能
  • 自然言語での操作: SQL を書かなくても AI Agent への自然言語での指示で複雑な分析タスクを実行可能
  • セキュアな実行環境: 細かい権限制御により安全に利用可能

私も実際に使ってみて、「このテーブルの構造どうだっけ?」「この期間の売上推移を確認したい」といった場面で、ツールを切り替えずに Cursor 内で完結できるのは本当に便利だと感じました。

Snowflake CoWork は組織全体でのデータ活用を推進するための強力なツールですが、エンジニアやデータサイエンティストが日常的に使う開発ツールと統合された Managed MCP Server もまた、異なる価値を提供してくれます。用途に応じて使い分けることで、より効率的なデータ活用が実現できるのではないでしょうか。

ぜひ皆さんも Snowflake Managed MCP Server を試してみてください!

宣伝

SNOWFLAKE BUILD JAPAN ONLINE で登壇しました!

2025/12/11-12に開催されました『SNOWFLAKE BUILD JAPAN ONLINE 2025』において『Snowflakeで実現するデータ活用の未来: Snowflake IntelligenceとSnowflake Managed MCP Serverによるエージェント型分析』という内容のセッションを配信させていただきました。注目機能である Snowflake Intelligence 及び Snowflake Managed MCP Server の概要と利用方法についてデモを交えて可能な限り分かりやすくお伝えしておりますので、是非ご視聴いただければ幸いです!

以下リンクでご登録いただけるとオンデマンドですぐにご視聴いただくことが可能です。


SNOWFLAKE DISCOVER でバーチャルハンズオンをデリバリしました!

2025/7/8-9に開催されました Snowflake のエンジニア向け大規模ウェビナー『SNOWFLAKE DISCOVER 第2弾』において『Snowflake Cortex AI で実現する次世代の VoC (顧客の声) 分析』という実践的なバーチャルハンズオンをデリバリさせていただきました。多くの業種で関連する顧客の声を Snowflake の最新機能を用いて分析する方法を体感いただけますので、是非非構造化データの分析のヒントを得たい方はご視聴いただければ幸いです!

以下リンクでご登録いただけるとオンデマンドですぐにご視聴いただくことが可能です。


SNOWFLAKE DISCOVER で登壇しました!

2025/4/24-25に開催されました Snowflake のエンジニア向け大規模ウェビナー『SNOWFLAKE DISCOVER』において『ゼロから始めるSnowflake:モダンなデータ&AIプラットフォームの構築』という一番最初のセッションで登壇しました。Snowflake の概要から最新状況まで可能な限り分かりやすく説明しておりますので是非キャッチアップにご活用いただければ嬉しいです!

以下リンクでご登録いただけるとオンデマンドですぐにご視聴いただくことが可能です。

X で Snowflake の What's new の配信してます

X で Snowflake の What's new の更新情報を配信しておりますので、是非お気軽にフォローしていただければ嬉しいです。

日本語版

Snowflake の What's New Bot (日本語版)
https://x.com/snow_new_jp

English Version

Snowflake What's New Bot (English Version)
https://x.com/snow_new_en

変更履歴

(20250901) 新規投稿
(20250901) PAT の利用要件の注意事項を追記 (コメントいただきありがとうございます!)
(20250927) 宣伝欄の修正
(20251126) Snowflake Managed MCP Server GA の情報を追加、Cortex Agents / Semantic View Querying 機能の追加に伴う記事更新
(20260702) 大幅刷新。コミュニティ版 MCP Server (Snowflake-Labs/mcp) の非推奨・削除予定に伴い、導入手順を Snowflake Managed MCP Server へ全面的に置き換え。旧 Snowflake Intelligence の Snowflake CoWork への改称を反映し、宣伝欄を最新版に更新。Cortex Agents の MCP クライアント機能 (A2A 連携) の解説を追加

Snowflake Japan

Discussion

kaz3284kaz3284

わかりやすい記事をありがとうございます🙏
設定してみました。
MCPサーバとの接続がうまくいかなく。設定で少し苦戦しました。CursorのCustorm MCP Server設定ではログが見えないので、失敗するようでしたらmcp.jsonからuvxのコマンドを生成して実行するのが早いです。(Cursorに依頼するとサッと生成できます)

PATのところはネットワークポリシーを設定してないと接続できないのが盲点でした。サッと試すなら一時的にBypassするのが良さそうです。

1
tsubasatsubasa

コメントありがとうございます!そしていつもお世話になっておりますmm
確かにCursorのMCP Serverでエラーが起きると何が起きてるか特定が困難ですよね。またPATの部分は仰る通り認証ポリシーを設定しておかないとネットワークポリシーが必須となりますので、このあたり分かりづらいポイントなので記事に追記させていただきます!

1