Snowflake MCP Server について
Snowflake MCP Server は、Snowflake データベースを操作するMCPサーバーです。ツールで SQL クエリを実行し、データのインサイトとスキーマ情報をリソースとして提供します。書き込み操作は明示的に有効化しない限り無効です。
主な機能
- 01読み取り用ツールによる SELECT クエリの実行
- 02データベース・スキーマ・テーブルの一覧表示
- 03列の型やコメントを含むテーブル構造の確認
- 04append_insight によるインサイトメモの更新
- 05任意で有効化できる書き込み・テーブル作成ツール
活用シーン
- 01AI アシスタントによる Snowflake データの照会と分析
- 02データベース構造や列定義の把握
- 03分析中に見つけたデータインサイトの記録
MCP 対応
MCPサーバーとして動作し、SQL・スキーマ用のツールと memo://insights およびテーブルコンテキストのリソースを公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Snowflake MCP サーバー
概要
Snowflake とのデータベース連携を提供する Model Context Protocol(MCP)サーバーの実装です。このサーバーでは、ツールを使って SQL クエリを実行できるほか、データに関する洞察やスキーマのコンテキストをリソースとして公開します。
コンポーネント
リソース
-
memo://insights
発見されたデータの洞察を集約した、継続的に更新されるメモです。
append_insightツールで新しい洞察が追加されると、自動的に更新されます。 -
context://table/{table_name}
(プリフェッチが有効な場合)列やコメントを含むテーブルごとのスキーマ概要を、個別のリソースとして公開します。
ツール
サーバーでは、次のツールを公開します。
クエリツール
-
read_query
データベースからデータを読み取るために、SELECTクエリを実行します。
入力:query(string):実行するSELECTSQL クエリ
戻り値: オブジェクトの配列としてのクエリ結果
-
write_query(--allow-writeを指定した場合のみ有効)
INSERT、UPDATE、またはDELETEクエリを実行します。
入力:query(string):SQL の変更クエリ
戻り値: 影響を受けた行数または確認メッセージ
-
create_table(--allow-writeを指定した場合のみ有効)
データベースに新しいテーブルを作成します。
入力:query(string):CREATE TABLESQL ステートメント
戻り値: テーブル作成の確認メッセージ
スキーマツール
-
list_databases
Snowflake インスタンス内のすべてのデータベースを一覧表示します。
戻り値: データベース名の配列 -
list_schemas
特定のデータベース内のすべてのスキーマを一覧表示します。
入力:database(string):データベース名
戻り値: スキーマ名の配列
-
list_tables
特定のデータベースとスキーマ内のすべてのテーブルを一覧表示します。
入力:database(string):データベース名schema(string):スキーマ名
戻り値: テーブルのメタデータの配列
-
describe_table
特定のテーブルの列情報を表示します。
入力:table_name(string):完全修飾テーブル名(database.schema.table)
戻り値: 名前、型、NULL 許容性、デフォルト値、コメントを含む列定義の配列
分析ツール
append_insight
メモリソースに新しいデータの洞察を追加します。
入力:insight(string):分析で発見されたデータの洞察
戻り値: 洞察の追加確認
効果:memo://insightsリソースの更新をトリガーします
Claude Desktop での使用
Smithery 経由でのインストール
Smithery 経由で Snowflake Server を Claude Desktop に自動的にインストールするには:
npx -y @smithery/cli install mcp_snowflake_server --client claude
UVX 経由でのインストール
従来の設定(個別のパラメーター)
"mcpServers": {
"snowflake_pip": {
"command": "uvx",
"args": [
"--python=3.12", // Optional: specify Python version <=3.12
"mcp_snowflake_server",
"--account", "your_account",
"--warehouse", "your_warehouse",
"--user", "your_user",
"--password", "your_password",
"--role", "your_role",
"--database", "your_database",
"--schema", "your_schema"
// Optionally: "--private_key_path", "your_private_key_absolute_path"
// Optionally: "--allow_write"
// Optionally: "--log_dir", "/absolute/path/to/logs"
// Optionally: "--log_level", "DEBUG"/"INFO"/"WARNING"/"ERROR"/"CRITICAL"
// Optionally: "--exclude_tools", "{tool_name}", ["{other_tool_name}"]
]
}
}
TOML 設定(推奨)
"mcpServers": {
"snowflake_production": {
"command": "uvx",
"args": [
"--python=3.12",
"mcp_snowflake_server",
"--connections-file", "/path/to/snowflake_connections.toml",
"--connection-name", "production"
// Optionally: "--allow_write"
// Optionally: "--log_dir", "/absolute/path/to/logs"
// Optionally: "--log_level", "DEBUG"/"INFO"/"WARNING"/"ERROR"/"CRITICAL"
// Optionally: "--exclude_tools", "{tool_name}", ["{other_tool_name}"]
]
},
"snowflake_staging": {
"command": "uvx",
"args": [
"--python=3.12",
"mcp_snowflake_server",
"--connections-file", "/path/to/snowflake_connections.toml",
"--connection-name", "staging"
]
}
}
ローカルへのインストール
-
Claude AI Desktop App をインストールします
-
uvをインストールします:
curl -LsSf https://astral.sh/uv/install.sh | sh
- Snowflake の認証情報を記載した
.envファイルを作成します:
SNOWFLAKE_USER="xxx@your_email.com"
SNOWFLAKE_ACCOUNT="xxx"
SNOWFLAKE_ROLE="xxx"
SNOWFLAKE_DATABASE="xxx"
SNOWFLAKE_SCHEMA="xxx"
SNOWFLAKE_WAREHOUSE="xxx"
SNOWFLAKE_PASSWORD="xxx"
SNOWFLAKE_PASSWORD="xxx"
SNOWFLAKE_PRIVATE_KEY_PATH=/absolute/path/key.p8
# Alternatively, use external browser authentication:
# SNOWFLAKE_AUTHENTICATOR="externalbrowser"
-
[任意]
runtime_config.jsonを編集して、データベース、スキーマ、またはテーブルの除外パターンを設定します。 -
ローカルでテストします:
uv --directory /absolute/path/to/mcp_snowflake_server run mcp_snowflake_server
- サーバーを
claude_desktop_config.jsonに追加します:
従来の設定(環境変数を使用)
"mcpServers": {
"snowflake_local": {
"command": "/absolute/path/to/uv",
"args": [
"--python=3.12", // Optional
"--directory", "/absolute/path/to/mcp_snowflake_server",
"run", "mcp_snowflake_server"
// Optionally: "--allow_write"
// Optionally: "--log_dir", "/absolute/path/to/logs"
// Optionally: "--log_level", "DEBUG"/"INFO"/"WARNING"/"ERROR"/"CRITICAL"
// Optionally: "--exclude_tools", "{tool_name}", ["{other_tool_name}"]
]
}
}
TOML 設定(推奨)
"mcpServers": {
"snowflake_local": {
"command": "/absolute/path/to/uv",
"args": [
"--python=3.12",
"--directory", "/absolute/path/to/mcp_snowflake_server",
"run", "mcp_snowflake_server",
"--connections-file", "/absolute/path/to/snowflake_connections.toml",
"--connection-name", "development"
// Optionally: "--allow_write"
// Optionally: "--log_dir", "/absolute/path/to/logs"
// Optionally: "--log_level", "DEBUG"/"INFO"/"WARNING"/"ERROR"/"CRITICAL"
// Optionally: "--exclude_tools", "{tool_name}", ["{other_tool_name}"]
]
}
}
注意事項
- デフォルトでは、書き込み操作は無効です。
--allow-writeを指定して明示的に有効にしてください。 - このサーバーでは、除外パターンを使って特定のデータベース、スキーマ、またはテーブルを除外できます。
- プリフェッチが有効な場合、このサーバーはテーブルごとの追加コンテキストリソースを公開します。
append_insightツールはmemo://insightsリソースを動的に更新します。
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。
