
ClaudeのMicrosoft 365コネクタとSnowflakeコネクタを組み合わせてPDFとテーブルデータをClaude上で横断分析してみた
さがらです。
先日、Snowflake Managed MCP Server経由でClaude DesktopからCortex Agentに接続する記事を書きました。
このCortex AgentはPDFカスタムツール(SP_ASK_CM_FINANCIALS)とCortex Analystツールの2本立てで構成していましたが、PDFの参照にはSnowflakeの内部ステージにファイルをアップロードする必要がありました。
そんな折、ClaudeからMicrosoft 365コネクタがリリースされ、OneDriveのファイルを直接参照できます。弊社でも既に検証記事を執筆しています。
これを使えばPDFをSnowflakeの内部ステージに移動させずに済み、Snowflake側のCortex AgentはCortex Analyst(売上データ分析)に専念させられるのでは、と考えました。
今回はその構成を試してみたので、手順と確認結果をまとめます。
技術的アプローチ
以下の2つを組み合わせます。
Claude Desktop
├── M365コネクタ(OneDrive)
│ └── 決算報告書・会社説明資料PDF(読み取り専用)
└── Snowflake Managed MCP Server
└── AGENT_CM_FINANCIAL_ANALYST(Cortex Analystのみ)
└── SV_MONTHLY_SALES(月次売上Semantic View)
Snowflake側は、MCP ServerのツールタイプとしてCortex Analystを直接参照できる CORTEX_ANALYST_MESSAGE を使う方法もありますが、今回はCortex Agentを経由(CORTEX_AGENT_RUN)する構成を選んでいます。理由は、Cortex Analystを直接呼び出すとコスト体系が変わり高くなることが多いため、Cortex Agentを介することでコストを抑えます。
Cortex AgentはPDFツール(SP_ASK_CM_FINANCIALS)を除いてCortex Analystのみを持つ構成に再定義します。PDFへの問い合わせはMicrosoft 365コネクタに任せ、Claude上で2つのソースから得た情報を組み合わせて分析できるかを確認します。
事前準備
Snowflake側:Cortex AgentをCortex Analystのみに再定義
このブログで構築したエージェントである AGENT_CM_FINANCIAL_ANALYST から SP_ASK_CM_FINANCIALS(PDFツール)を除いた状態で CREATE OR REPLACE AGENT で再定義します。PDFへの問い合わせはM365コネクタに任せるため、AgentはCortex Analystに専念させます。
USE ROLE SYSADMIN;
USE DATABASE POC_CM;
USE SCHEMA SAGARA_TEST;
CREATE OR REPLACE AGENT AGENT_CM_FINANCIAL_ANALYST
FROM SPECIFICATION
$$
orchestration:
budget:
seconds: 120
tokens: 32000
instructions:
system: |
あなたはクラスメソッドの財務アナリストです。
ユーザーの質問が月次売上データに関するものであれば AnalystMonthlySales ツールを使用して回答してください。
tools:
- tool_spec:
type: "cortex_analyst_text_to_sql"
name: "AnalystMonthlySales"
description: "月次売上データを分析するためのCortex Analystツール"
tool_resources:
AnalystMonthlySales:
semantic_view: "POC_CM.SAGARA_TEST.SV_MONTHLY_SALES"
execution_environment:
type: "warehouse"
warehouse: "COPUTE_WH"
query_timeout: 60
$$;
このエージェントを利用できるSnowflake Managed MCP ServerとClaudeからの接続方法については、以下のブログをご覧ください。
Claude側:Microsoft 365コネクタのセットアップ
Microsoft 365コネクタのセットアップ手順は以下の記事でまとめているので、こちらを参考にしてください。
セットアップ完了後、下図のように表示されればOKです。

OneDriveへのPDFのアップロード
分析に使用する決算報告書・会社説明資料PDFをOneDriveの任意のフォルダに配置しておきます。(こちらのブログで使用したものと同じです。)
今回は下図のように2つのフォルダを作成して、保存しました。


試してみた
Claudeのチャット欄から雑に質問してみる(うまくいかず…)
PDFの内容とSnowflakeの売上データを横断する質問を投げてみます。
OneDriveにある直近の決算報告書に記載されている数字と、Snowflakeの月次売上データを比較して、差異や気になる点があれば教えてください
各ツールへの許可を終えると、下図のように回答を得られました。OneDrive側がうまくいきませんでした…全く関係ないCSVファイルを読み取ろうとしてしまいました。

Claudeのプロジェクトを使ってOneDrive側のフォルダ情報をテキストで追加してみる
雑にチャットで質問するだけではうまくいかなかったため、Claudeのプロジェクト機能を使って、下図のようにSnowflakeのツールやOneDrive側のフォルダ情報を「手順」に追加してみます。

この状態で先ほどと同様の質問を行ってみると、OneDrive側の情報も読み取った上で、回答をしてくれました!
OneDriveにある直近の決算報告書に記載されている数字と、Snowflakeの月次売上データを比較して、差異や気になる点があれば教えてください

続いて、会社説明会資料とSnowflake上のデータの比較が必要な以下の質問を行ってみます。グラフの描画もあったため回答まで30秒ほど時間がかかりましたが、会社説明会資料とSnowflake上のデータの比較を行った内容が返ってきました。
従業員数の推移と売上高の推移を比較して

最後に
ClaudeのM365コネクタ(OneDrive)とSnowflake Managed MCP Serverを組み合わせることで、PDFをSnowflakeに移動させることなくClaude上で横断分析できることを確認できました。
今回の構成の良い点は、「データの置き場所を変えなくて済む」ことです。OneDriveで管理しているPDF資料はそのままOneDriveに置いておき、Snowflakeには売上データのみを保持する。Claudeがそれぞれのソースに対して適切なコネクタ・ツールを使って情報を取得し、その場で統合して回答してくれます。
複数のデータソースをClaude上で横断分析するという構成の可能性を感じた検証でした。参考になりますと幸いです。







