[新機能]AIエージェントから安全にSnowflake上のデータを取得できる「Snowflake-managed MCP server」がリリースされました
さがらです。
Snowflakeの新機能として、AIエージェントから安全にSnowflake上のデータを取得できる「Snowflake-managed MCP server」がリリースされました。(2025/10/4時点ではパブリックプレビュー。)
こちらの機能を実際に試してみたので、その内容をまとめてみます。
Snowflake-managed MCP serverとは
まず「MCP」ですが、Model Context Protocolの略で、AIエージェントと様々なデータやツールを接続するためのオープンな標準規格です。このMCPの規格に合わせて各ツールと接続するために、MCP Serverが必要となります。
そして今回リリースされたSnowflake-managed MCP serverですが、「Snowflake-managed」とある通り、Snowflakeがインフラ管理・認証認可を担ってくれるMCP Serverとなります。これにより以下のメリットを得られます。
- 開発・運用の簡素化
- インフラの構築や管理が不要に
- 主要なAIエージェントと標準的な方法で簡単に接続可能
- セキュリティとガバナンス
- Snowflakeのセキュリティ境界内でデータを安全に利用可能
- 既存のアクセス制御やガバナンスポリシーをそのまま適用可能
より詳細は、以下の公式ブログや公式ドキュメントが参考になると思います。
注意点
2025/10/4時点ではCortex SearchとCortex Analystに対応するMCP Serverしか構築できないため、ご注意ください。
Snowflake-managed MCP serverを試してみる
ということで早速Snowflake-managed MCP serverを試してみます!
やることとしては、Marketplaceで提供されているSnowflake公式ドキュメントのCortex Knowledge Extensionを取得して、その中に含まれているCortex Search Serviceに対するMCP Serverを構築して、Cursorからアクセスしてみます。
認証用のPATを生成
今回Snowflakeへの認証にはOAuthではなくPATを使用します。(この認証方法については、こちらのQuickstartで言及があります。)
-- PAT用にネットワークルール作成 ※以下の例だと全IPを許可しているため注意
use role accountadmin;
create network policy sagara_allow_allip_policy
allowed_ip_list = ('0.0.0.0/0');
alter user <ユーザー名> set network_policy = sagara_allow_allip_policy;
-- PAT生成
use role accountadmin;
alter user if exists <ユーザー名> add programmatic access token mcp_token
days_to_expiry = 1
role_restriction = 'SAGARA_ADMIN_ROLE';
Cortex Knowledge ExtensionsをMarketplaceから取得
Marketplaceで提供されているSnowflake公式ドキュメントのCortex Knowledge Extensionを取得します。
こちらについては以下のブログが参考になると思いますので、こちらをご覧ください。
取得後、下図のように共有データベースが作成されていれば問題ありません。
MCP Serverを作成
以下のクエリを実行して、MCP Serverを作成します。
identifier
については、Cortex Search Serviceの所在を書くようにします。
create or replace mcp server snowflake_docs_mcp_server from specification
$$
tools:
- name: "Snowflake公式ドキュメントのSearch Service"
identifier: "SNOWFLAKE_DOCUMENTATION.SHARED.CKE_SNOWFLAKE_DOCS_SERVICE"
type: "CORTEX_SEARCH_SERVICE_QUERY"
description: "Snowflake公式ドキュメント用のMCP Serverです"
title: "Snowflake Docs"
$$;
Cursorから接続
Cursorの設定のMCP & Integrations
から、New MCP Server
を押します。
その後、下記のように入力します。url
では作成したMCP Serverの所在をパスに含める必要があります。
{
"mcpServers": {
"Snowflake": {
"url": "https://<YOUR-ORG-YOUR-ACCOUNT>.snowflakecomputing.com/api/v2/databases/sagara_test_db/schemas/mcp_servers/mcp-servers/snowflake_docs_mcp_server",
"headers": {
"Authorization": "Bearer <YOUR-PAT-TOKEN>"
}
}
}
}
この後Cursorの設定に戻ると、ツールは追加されているのですがずっとLoading tools
と表示されているかもしれません。(私の場合はそうでした。)
この場合は、以下のようなcurlコマンドを実行して、疎通確認をします。
curl -X POST \
"https://<YOUR-ORG-YOUR-ACCOUNT>.snowflakecomputing.com/api/v2/databases/sagara_test_db/schemas/mcp_servers/mcp-servers/snowflake_docs_mcp_server" \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header "Authorization: Bearer <YOUR-PAT-TOKEN>" \
--data '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/list",
"params": {}
}'
問題なければ、下図のように表示されます。
ちなみに問題があると、下図のように表示されます。(最初、PATでの認証なのにネットワークポリシーを設定していなかったためです…)
疎通確認後にCursorを再起動すると、SnowflakeのMCP Serverがインストールされていました。(なぜか右下が赤くエラー表示となっていますが、問題なく利用できました。)
チャットで動作確認
実際にCursorのチャットでSnowflakeに関する質問をしてみます。
まずはSnowpipeについて質問してみましたが、正しく最新情報を得ることが出来ました。
次にSnowflakeの最新リリースについて聞いてみると、最新のリリースである9.30を含む、各リリースの情報を得ることが出来ました。
最後に
Snowflake-managed MCP serverを試してみました。
自前のデータを用いてCortex AnalystやCortex Searchで問い合わせすることはもちろん、Cortex Knowledge Extensionsを用いてMarketplace上で公開されている情報に関する問い合わせも今回ブログで試したように簡単にできるのは嬉しいですね!