👏

ExcelとSnowflakeのMCPサーバーを利用して、プロシージャーの実行結果をExcelに貼り付ける

に公開

こんにちは電通総研の中村です。今回は、Excel MCPサーバーとSnowflake MCPサーバーを連携して、Snowflakeのストアドプロシージャの実行結果をExcelシートに出力する方法をご紹介します。

Model Context Protocol (MCP)は、異なるアプリケーション間でデータをやり取りするための標準的なプロトコルです。MCPについてはこの資料が分かりやすかったのでこちらをご覧ください。

今回は、SnowflakeとExcelという2つの異なるアプリケーション間でMCPを使ってデータ連携を行います。

前提条件

この記事では、以下のツールとライブラリ、モデルを使用します:

環境設定

VSCodeの設定

まずはそれぞれのMCPのレポジトリをクローンします。

次にVSCodeの設定からsettings.jsonにMCPサーバーの設定を追加します

"mcp": {
    "inputs": [],
    "servers": {
        "snowflake": {
            "command": "D:/Git/mcp-snowflake-service/venv/Scripts/uv.exe",
            "args": [
                "--directory",
                "D:/Git/mcp-snowflake-service",
                "run",
                "server.py"
            ]
        },
        "excel": {
            "command": "npx",
            "args": ["--yes", "@negokaz/excel-mcp-server"],
            "env": {
                "EXCEL_MCP_PAGING_CELLS_LIMIT": "4000",
                "EXCEL_MCP_DEFAULT_FILE_PATH": "D:/Snowflake/UnitTest_MCP/Excel_MCP_Server.xlsx",
                "EXCEL_MCP_USE_EXCELIZE": "true"
            }
        }
    }
}

この設定では、以下の内容を定義しています:

  • Snowflake MCPサーバー:Pythonの仮想環境を使用して起動
  • Excel MCPサーバー:npxを使用してインストールと起動を行い、デフォルトのExcelファイルパスを指定

Snowflake MCPサーバーの準備

Snowflake MCPサーバーは、Snowflakeデータベースへの接続とクエリの実行を担当します。

Excel MCPサーバーの準備

Excel MCPサーバーは、Excelファイルの読み書きを担当します。デフォルトのExcelファイルとして「D:/Snowflake/UnitTest_MCP/Excel_MCP_Server.xlsx」を指定しています。

手順

1. MCPサーバーの起動

まず、Excel MCPサーバーとSnowflake MCPサーバーを起動します。VSCodeのターミナルから起動できるのですが、今回はsettings.jsonから実行します:

画像の実行中となっている場所を押すと起動したいMCP Serverを起動できます。

2. GitHib Copilotにてプロンプトを投げる

このストアドプロシージャは「TestExcelMCP」という実行IDで実行されれます。

実行結果

1. Excelの確認

パスで指定したExcelファイルを確認します。

2. 念のためSnowflakeのログを確認

Snowflakeにてバッチログのテーブルを確認します。
確認したところ一度実行に失敗しており、2度CALLしているようです。

注意点

Excel MCPの仕様について

Excel MCPの注意点は2つです。
・シートが1つしか選択できない。
・読み取り、書き込みをする範囲を選択する必要がある。

Snowflake MCPの仕様について

Snowflake MCPの注意点は1つです。
・Server.py内でタイムアウトが設定されており、処理時間が長い場合にはそれを伸ばす必要がある。

if self.conn is None:
                logger.info("Creating new Snowflake connection...")
                self.conn = snowflake.connector.connect(
                    **self.config,
                    client_session_keep_alive=True,
                    network_timeout=60,
                    login_timeout=15
                )
                self.conn.cursor().execute("ALTER SESSION SET TIMEZONE = 'UTC'")
                logger.info("New connection established and configured")

伸ばす必要がある場合はnetwork_timeoutの数値を大きくしてください。

まとめ

Excel MCPサーバーとSnowflake MCPサーバーを連携することで、Snowflakeのストアドプロシージャの実行結果を簡単にExcelシートに出力できることがわかりました。この方法を使えば、データベース操作の結果をExcelで可視化したり、レポート作成に活用したりすることができます。

MCPを活用することで、異なるアプリケーション間のデータ連携がより簡単になり、開発効率の向上につながります。ぜひみなさんも試してみてください!

参考リンク

電通総研 データテックブログ

Discussion