何周遅れか分からないが、Snowflake MCPサーバを試してみたのでアウトプットしてみる。
AI AgentはClaude Code。MCPの構築と接続設定自体をClaude Codeで行なった。
この記事で使用したMCPサーバは以下。いわゆる野良MCPサーバ。
A Model Context Protocol (MCP) server implementation that provides database interaction with Snowflake. This server enables running SQL queries via tools and exposes data insights and schema context as resources.
前提となる環境
Macにnode、uv、Claude Codeを導入済み。
# 諸々のバージョンは以下
$ sw_vers
ProductName: macOS
ProductVersion: 15.6
BuildVersion: 24G84
# nodeは導入済み
$ node --version
v24.4.1
# uvは導入済み
$ uv --version
0.8.13 (ede75fe62 2025-08-21)0.8.13 (ede75fe62 2025-08-21)
# Claude Codeは導入済み
$ claude --version
1.0.89 (Claude Code)
# 検証用ディレクトリの作成と移動。以降ここで検証を実施。
$ mkdir snowflake-mcp-server && cd $_
環境構築
プロンプトとその回答は省略する。要件を伝え環境構築を実施してもらった。
Claudeに対するMCPの設定方法としてグローバルに設定する方法と、
プロジェクト個別に設定する方法があるが、当初グローバル設定の方法を案内された。
2回目のプロンプトでプロジェクト個別設定に変更してもらった。
最終的なファイル構成は以下の通り。
$ tree .
.
├── mcp-snowflake-server
│ ├── Dockerfile
│ ├── example_connections.toml
│ ├── LICENSE
│ ├── pyproject.toml
│ ├── README.md
│ ├── runtime_config.json
│ ├── src
│ │ └── mcp_snowflake_server
│ │ ├── __init__.py
│ │ ├── db_client.py
│ │ ├── serialization.py
│ │ ├── server.py
│ │ └── write_detector.py
│ └── uv.lock
├── PROJECT_SPECIFIC_SETUP.md
├── SETUP.md
├── snowflake_connections.toml
└── test_server.py
snowflake_connections.toml に Snowflakeの接続設定を書くだけで終了。
試してみた
claudeを起動すると .mcp.json が認識された。
$ claude
╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ │
│ New MCP server found in .mcp.json: snowflake │
│ │
│ MCP servers may execute code or access system resources. All tool calls require approval. Learn more in the MCP documentation │
│ (https://docs.anthropic.com/s/claude-code-mcp). │
│ │
│ ❯ 1. Use this and all future MCP servers in this project │
│ 2. Use this MCP server │
│ 3. Continue without using this MCP server │
│ │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
> Snowflakeのデータベース `sample_db` におけるスキーマの一覧を教えてください。
⏺ snowflake - list_schemas (MCP)(database: "sample_db")
⎿ type: data
data_id: e40f8385-e3c0-4848-aa36-c1b8fada788f
database: sample_db
… +8 lines (ctrl+r to expand)
⎿ [Resource from snowflake at data://e40f8385-e3c0-4848-aa36-c1b8fada788f] {
"type": "data",
"data_id": "e40f8385-e3c0-4848-aa36-c1b8fada788f",
… +25 lines (ctrl+r to expand)
⏺ sample_db データベースには以下の7つのスキーマがあります:
- CLEANSED
- INTERMEDIATE
- PUBLIC
- SAMPLE_SCHEMA
> cleansedスキーマ内のテーブルの一覧を教えてください。
⏺ CLEANSED スキーマには以下の19のテーブルがあります:
...
メタ情報(description)
dbtでモデルを作る際にdescriptionを付与することで、テーブル、カラムにdescriptionを付与できる。
その先、セマンティックレイヤーの存在がチラつくが、descriptionだけでもそこそこいける。
まとめ
Claude Codeにローカル起動型(Dockerfile)のSnowflake MCPサーバを導入してみた。
その際、Claude Code自身にMCPサーバの導入を依頼し、ほぼノーコードで導入できることを確認した。
テーブル、カラムにdescriptionを付与しておくと、MCPサーバを通じて取得・消費される。
クエリによって得られる知識がClaudeに蓄積され、知識の文脈で会話ができるようになることを確認した。