Snowflake MCPサーバを試してみた

何周遅れか分からないが、Snowflake MCPサーバを試してみたのでアウトプットしてみる。
AI AgentはClaude Code。MCPの構築と接続設定自体をClaude Codeで行なった。
この記事で使用したMCPサーバは以下。いわゆる野良MCPサーバ。

前提となる環境

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に蓄積され、知識の文脈で会話ができるようになることを確認した。