スノーフレークMCPサーバー
概要
Snowflakeとのデータベース連携を可能にするモデルコンテキストプロトコル(MCP)サーバー実装。このサーバーは、ツール経由でSQLクエリを実行し、データの洞察とスキーマコンテキストをリソースとして公開することを可能にします。
コンポーネント
リソース
memo://insights
発見されたデータの洞察を集約した継続的に更新されるメモ。
append_insight
ツールを使用して新しいインサイトが追加されると、自動的に更新されます。context://table/{table_name}
(プリフェッチが有効な場合) 列やコメントを含むテーブルごとのスキーマの概要が個別のリソースとして公開されます。
ツール
サーバーは次のツールを公開します。
クエリツール
read_query
SELECT
クエリを実行してデータベースからデータを読み取ります。
入力:query
(文字列): 実行するSELECT
SQLクエリ
**戻り値:**クエリ結果をオブジェクトの配列として返します
write_query
( --allow-write
でのみ有効)
INSERT
、 UPDATE
、またはDELETE
クエリを実行します。
入力:query
(文字列): SQL変更クエリ
**戻り値:**影響を受けた行数または確認
create_table
( --allow-write
でのみ有効)
データベースに新しいテーブルを作成します。
入力:query
(文字列): CREATE TABLE
SQL文
**戻り値:**テーブル作成の確認
スキーマツール
list_databases
Snowflake インスタンス内のすべてのデータベースを一覧表示します。
**戻り値:**データベース名の配列list_schemas
特定のデータベース内のすべてのスキーマを一覧表示します。
入力:database
(文字列): データベースの名前
**戻り値:**スキーマ名の配列
list_tables
特定のデータベースとスキーマ内のすべてのテーブルを一覧表示します。
入力:database
(文字列): データベースの名前schema
(文字列): スキーマの名前
**戻り値:**テーブルメタデータの配列
describe_table
特定のテーブルの列情報を表示します。
入力:table_name
(文字列): 完全修飾テーブル名 ( database.schema.table
)
**戻り値:**名前、型、NULL 値、デフォルト、コメントを含む列定義の配列
分析ツール
append_insight
メモ リソースに新しいデータ インサイトを追加します。
入力:insight
(文字列):分析から発見されたデータの洞察
**戻り値:**洞察力追加の確認
効果: memo://insights
リソースの更新をトリガーします
Claude Desktopでの使用
Smithery経由でインストール
Smithery経由で Claude Desktop 用の Snowflake Server を自動的にインストールするには:
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: "--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}"]
]
}
}
ローカルにインストールする
- Claude AIデスクトップアプリをインストールする
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"
# 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}"]
]
}
}
注記
- デフォルトでは書き込み操作は無効になっています。--
--allow-write
で明示的に有効にしてください。 - サーバーは、除外パターンを使用して特定のデータベース、スキーマ、またはテーブルをフィルター処理することをサポートしています。
- プリフェッチが有効になっている場合、サーバーはテーブルごとの追加のコンテキスト リソースを公開します。
append_insight
ツールはmemo://insights
リソースを動的に更新します。
ライセンス
マサチューセッツ工科大学