Snowflake Managed MCP Server経由でClaude DesktopからCortex Agentに繋いでみた
さがらです。
先日、クラスメソッドの財務データや会社説明の資料に対して、Snowflake Cortex Agentでマルチモーダルに分析する記事を書きました。
このエージェントに対して、Snowflake Managed MCP Serverを使うことでClaude Desktopから直接繋いで問い合わせすることを試してみました。
Snowflake Managed MCP Serverは、MCP(Model Context Protocol)に対応したサーバーをSnowflakeが管理する形でホストしてくれる機能です。自前でMCPサーバーのインフラを用意することなく、Snowflake上のCortex AgentやCortex Searchなどのリソースをそのままツールとして公開できます。
試してみた手順と結果について、本記事でまとめてみます。
機能概要
Snowflake Managed MCP Serverは、SnowflakeアカウントのリソースをMCPツールとして外部のAIエージェント・クライアントに公開できる機能です。サーバーのインフラ管理は不要で、CREATE MCP SERVER 文でYAML形式のSpecificationを記述するだけで作成できます。
対応しているツールタイプ
MCPサーバーに登録できるツールのタイプは以下の5種類です。今回はこの中の CORTEX_AGENT_RUN を使います。
| タイプ | 用途 |
|---|---|
CORTEX_SEARCH_SERVICE_QUERY |
Cortex Searchサービスへの非構造化データ検索 |
CORTEX_ANALYST_MESSAGE |
Semantic ViewベースのText-to-SQL |
SYSTEM_EXECUTE_SQL |
直接のSQL実行 |
CORTEX_AGENT_RUN |
Cortex Agentの呼び出し |
GENERIC |
UDF・ストアドプロシージャのツール |
前提条件
- Snowflake:AWS東京リージョン、Enterpriseエディション
- 対象のCortex Agent:
POC_CM.SAGARA_TEST.AGENT_CM_FINANCIAL_ANALYST(前述の記事で作成したものを使用します)
事前準備
Snowflake側:OAuth Security Integrationの作成
Claude DesktopのSnowflakeコネクタはOAuth 2.0で認証を行うため、Snowflake側でCustom OAuth用のSecurity Integrationを作成する必要があります。
※OAUTH_REDIRECT_URI の値は、こちらのClaudeのサポートページより引用
USE ROLE ACCOUNTADMIN;
CREATE OR REPLACE SECURITY INTEGRATION CLAUDE_DESKTOP_MCP_OAUTH
TYPE = OAUTH
OAUTH_CLIENT = CUSTOM
ENABLED = TRUE
OAUTH_CLIENT_TYPE = 'CONFIDENTIAL'
OAUTH_REDIRECT_URI = 'https://claude.ai/api/mcp/auth_callback';
作成後、クライアントIDとクライアントシークレットを取得します。
SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('CLAUDE_DESKTOP_MCP_OAUTH');

表示された OAUTH_CLIENT_ID と OAUTH_CLIENT_SECRET をメモしておきます(後ほどClaude Desktopの設定画面に入力します)。
試してみた
1. Snowflake Managed MCP Serverの作成
先日の記事で作成したCortex Agent(AGENT_CM_FINANCIAL_ANALYST)をツールとして公開するMCPサーバーを作成します。
USE ROLE SYSADMIN;
USE DATABASE POC_CM;
USE SCHEMA SAGARA_TEST;
CREATE OR REPLACE MCP SERVER MCP_FINANCIAL_ANALYST
FROM SPECIFICATION $$
tools:
- name: "financial-analyst"
type: "CORTEX_AGENT_RUN"
identifier: "POC_CM.SAGARA_TEST.AGENT_CM_FINANCIAL_ANALYST"
description: "クラスメソッドの財務データ・PDF資料(決算報告書・会社紹介資料)に対してマルチモーダルな分析を行うエージェント。売上データの集計や財務PDFへの質問に対応しています。"
title: "Financial Analyst"
$$;
作成されたMCPサーバーの内容は DESCRIBE で確認できます。
DESCRIBE MCP SERVER MCP_FINANCIAL_ANALYST;

2. 権限付与
OAuthでサインインするSnowflakeユーザーのロールに対して、MCPサーバーとCortex Agentへのアクセス権を付与します。(SECURITY INTEGRATIONではデフォルトで ACCOUNTADMIN でのアクセスができないようになっていますのでご注意ください。)
USE ROLE ACCOUNTADMIN;
-- MCPサーバーへのアクセス権
GRANT USAGE ON MCP SERVER POC_CM.SAGARA_TEST.MCP_FINANCIAL_ANALYST
TO ROLE <OAuthでサインインするユーザーのロール>;
-- Cortex Agentへのアクセス権
GRANT USAGE ON AGENT POC_CM.SAGARA_TEST.AGENT_CM_FINANCIAL_ANALYST
TO ROLE <OAuthでサインインするユーザーのロール>;
3. MCPサーバーのURLを確認する
Claude Desktopへの接続設定で必要なURLは以下の形式です。
https://<org>-<account>.snowflakecomputing.com/api/v2/databases/POC_CM/schemas/SAGARA_TEST/mcp-servers/MCP_FINANCIAL_ANALYST
<org>-<account> の部分はSnowflakeのアカウント識別子です。Snowsightの Connect a tool to Snowflake から確認できます。(こちらの確認方法は以下の記事が参考になると思います。)
4. Claude DesktopのコネクタUIでSnowflakeを設定
Claude Desktopの設定のコネクタ検索画面からSnowflakeのコネクタを検索し、選択します。

すると、設定以下の3項目を入力する画面が表示されます。
それぞれ以下のように入力し、続けるを押します。
| 項目 | 入力値 |
|---|---|
| サーバーURL | https://<org>-<account>.snowflakecomputing.com/api/v2/databases/POC_CM/schemas/SAGARA_TEST/mcp-servers/MCP_FINANCIAL_ANALYST |
| OAuth クライアントID | SYSTEM$SHOW_OAUTH_CLIENT_SECRETS で取得した OAUTH_CLIENT_ID |
| OAuth クライアントシークレット | SYSTEM$SHOW_OAUTH_CLIENT_SECRETS で取得した OAUTH_CLIENT_SECRET |

その後、ブラウザが起動してSnowflakeのログイン画面が表示されるので、MCPサーバーへのアクセス権を持つユーザーでサインインします。


この後、Claudeの画面に戻り、下図のように表示されれば準備OKです。

5. 実際に問い合わせてみた
Claude Desktopのチャットから、前述の記事で検証していた内容と同じ質問を投げてみます。
まず、Cortex Analystツール(月次売上)への質問を試してみます。
2021年度のサービスラインごとの売上を教えてください
すると、Claudeから作成したMCP Serverで定義したツールへのアクセスが発生するため、許可を行います。

一定時間経過後、下図のように回答が返ってきました!

次にPDFツール(決算報告書)への質問も試してみます。
クラスメソッドの直近の決算報告書の売上について教えてください
こちらも正しく結果が返ってきました。

最後に
Snowflake Managed MCP Server経由でClaude Desktopから既存のCortex Agentに繋いでみました。
ClaudeからSnowflakeのCortex Agentに接続できることで、取得したデータを元に資料作成を行ったり、ClaudeをハブとしてSnowflakeのデータを別の成果物につなげやすくなると思います。
Snowflake上にCortex Agentを作っている方はぜひ試してみてください!








