自然言語で問い合わせして取得したSQL ServerのデータをExcel エージェントモードで分析してみた
概要
こんにちは、クラスメソッド製造ビジネステクノロジー部の田中聖也です。
今回もExcelエージェントモードを使って色々とやっていきたいと思います。
皆さんの職場にマクロ職人はいますでしょうか?
マクロ職人の方に「○○というデータ取って欲しいんやけど」と依頼したり、依頼されたりしている方もいると思います。
今回は、マクロ職人の方に依頼していた内容を自然言語(日本語)で取得して、Excelエージェントモードで解析するまでをやってみました。
技術的な部分
今回はあくまでLocal上で実装しています。
これをAzureでやってみるのは次回にします。
構成

コンポーネント
| コンポーネント | 役割 | ポート | 技術スタック |
|---|---|---|---|
| agent | Strands Agent。ユーザーからのプロンプトを受け取り、MCP ツールを選択・実行 | 8080 | Python, FastAPI, strands-agents, Bedrock |
| mcp-sqlserver | SQL Server 操作用 MCP サーバー | 8001 | Python, FastMCP, pymssql |
| mcp-excel | Excel ファイル操作用 MCP サーバー | 8002 | Python, FastMCP, openpyxl |
| sql-server | SQL Server 2022 データベース | 1433 | mcr.microsoft.com/mssql/server:2022-latest |
MCPツール
SQL Server MCP
| ツール名 | 説明 |
|---|---|
list_tables |
データベース内の全テーブルを一覧表示 |
describe_table |
テーブルのカラム情報を取得 |
query |
読み取り専用 SQL クエリ (SELECT のみ) を実行 |
Excel MCP
| ツール名 | 説明 |
|---|---|
create_workbook |
新しい Excel ワークブックを作成 |
list_sheets |
ワークブック内のシート一覧を取得 |
read_sheet |
シートからデータを読み取り |
write_to_sheet |
シートにデータを書き込み |
add_sheet |
既存ワークブックにシートを追加 |
format_range |
セル範囲のフォーマット (太字、フォントサイズ、色) |
auto_fit_columns |
列幅をコンテンツに合わせて自動調整 |
list_files |
出力ディレクトリ内の Excel ファイル一覧 |
やってみた
SQL ServerからExcelへの出力
まずAgentがきちんと各MCPとやりとりしているかを確認します。


logファイルを確認するときちんとやりとりしているのを確認できました。
つまり自然言語でSQL ServerのデータをExcelにDumpできています。

Excel Agent Modeでの解析(失敗編)
DumpされたExcelを参照して解析してみます

localにあるファイルを参照します



ん?なんか失敗してますね。。。
モデルをClaudeに変更しても失敗しました。

結局、何度実行してもエラーとなりました。
このエラーは後できちんと解析したいと思います。
Excel Agent Modeでの解析(成功編)
しかたないのでDumpされたファイルでエージェントモードを使います


できてはいますが、棒グラフですね。
推移が見たいので折れ線グラフにしたいと思います。

なんか、横軸が変ですね。雑に修正依頼をします。

きちんと折れ線グラフで表示されているのを確認できました!!
Excel Agent Modeでの分析(相関確認編)
ダミーで作っているかつ、関係のない値と正確に分析できるかを確認します。


きちんと「相関なし」と出ていますね。
まとめ
自然言語でデータベースの値を取得して、簡単に分析できることができました。
これで、誰でもデータベースの値を取得できて、分析できる未来に近づいたような気がします!!








