seta-takumi/snowflake-mcp-server
If you are the rightful owner of snowflake-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
The Snowflake MCP Server securely connects Snowflake databases with Claude, an MCP-compatible client, providing read-only access.
query
Executes read-only SQL queries.
list_tables
Retrieves a list of tables in the current schema.
describe_table
Gets the structure of a specified table.
get_schema
Retrieves current schema information.
Snowflake MCP Server
SnowflakeデータベースとClaude(MCP対応クライアント)を安全に接続するためのModel Context Protocol (MCP) サーバーです。
🚀 特徴
- 安全な読み取り専用アクセス: SELECT、SHOW、DESCRIBE、EXPLAINクエリのみ実行可能
- セキュアな認証: キーペア認証とOAuth認証に対応
- Claude統合: Claude DesktopやClaude Codeから直接利用可能
- 包括的ツール: テーブル一覧、スキーマ情報、クエリ実行をサポート
📋 前提条件
- Python 3.12以上
- uv パッケージマネージャー
- Snowflakeアカウントと適切な権限
🔧 インストール
1. リポジトリのクローン
git clone <repository-url>
cd snowflake-mcp-server
2. 依存関係のインストール
uv sync
🔐 認証設定
キーペア認証(推奨)
1. 秘密鍵・公開鍵の生成
# 秘密鍵を生成
openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8 -nocrypt
# 公開鍵を生成
openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub
# ファイル権限を設定
chmod 600 rsa_key.p8
chmod 644 rsa_key.pub
2. Snowflakeユーザーに公開鍵を設定
-- Snowflakeで実行
ALTER USER your_username SET RSA_PUBLIC_KEY='<公開鍵の内容(-----BEGIN/END部分を除く)>';
OAuth認証(オプション)
企業環境でSSO統合が必要な場合に使用します。詳細はSnowflake OAuth設定ガイドを参照してください。
⚙️ 設定
環境変数の設定
# 基本設定
export SNOWFLAKE_ACCOUNT="your-account"
export SNOWFLAKE_USER="your-username"
export SNOWFLAKE_DATABASE="your-database"
export SNOWFLAKE_SCHEMA="your-schema"
export SNOWFLAKE_WAREHOUSE="your-warehouse"
export SNOWFLAKE_ROLE="your-role"
# キーペア認証
export SNOWFLAKE_PRIVATE_KEY_PATH="/path/to/rsa_key.p8"
export SNOWFLAKE_PRIVATE_KEY_PASSPHRASE="" # パスフレーズがある場合のみ
# または OAuth認証
export SNOWFLAKE_OAUTH_TOKEN="your-oauth-token"
🖥️ Claude Codeでの利用
1. 設定ファイルの編集
Claude Codeの設定ファイル(通常 ~/.claude.json
)を編集:
{
"mcpServers": {
"snowflake-mcp": {
"command": "uv",
"args": ["run", "--frozen", "python", "-m", "snowflake_mcp"],
"cwd": "/path/to/snowflake-mcp-server",
"env": {
"SNOWFLAKE_ACCOUNT": "your-account",
"SNOWFLAKE_USER": "your-username",
"SNOWFLAKE_DATABASE": "your-database",
"SNOWFLAKE_SCHEMA": "your-schema",
"SNOWFLAKE_WAREHOUSE": "your-warehouse",
"SNOWFLAKE_ROLE": "your-role",
"SNOWFLAKE_PRIVATE_KEY_PATH": "/path/to/rsa_key.p8"
}
}
}
}
2. Claude Codeの再起動
設定を反映するためにClaude Codeを再起動してください。
🛠️ 利用可能なツール
query
SQLクエリを実行します(読み取り専用)
パラメータ: sql (string) - 実行するSQLクエリ
例: SELECT * FROM customers LIMIT 10
list_tables
現在のスキーマ内のテーブル一覧を取得します
パラメータ: なし
describe_table
指定したテーブルの構造を取得します
パラメータ: table_name (string) - テーブル名
例: customers
get_schema
現在のスキーマ情報を取得します
パラメータ: なし
📝 使用例
Claude Codeで以下のようにお試しください:
現在のデータベースにあるテーブルを教えてください
customers テーブルの構造を確認してください
売上データの上位10件を表示してください
SELECT * FROM sales ORDER BY amount DESC LIMIT 10
🔒 セキュリティ機能
- 読み取り専用制限: INSERT、UPDATE、DELETE、CREATE、DROPなどの書き込み操作は完全にブロック
- SQLインジェクション対策: パラメータ化クエリによる安全な実行
- 認証情報の保護: 環境変数による秘密情報の管理
- 接続の安全性: Snowflakeの標準セキュリティプロトコルを使用
🚨 トラブルシューティング
接続エラー
症状: 「Query execution failed: Connection error」 解決方法:
- 環境変数が正しく設定されているか確認
- Snowflakeアカウント情報の確認
- 秘密鍵ファイルのパスと権限を確認
- ネットワーク接続の確認
権限エラー
症状: 「Access denied」または「Permission denied」 解決方法:
- Snowflakeユーザーのロール権限を確認
- データベース・スキーマへのアクセス権限を確認
- ウェアハウスの使用権限を確認
キーペア認証エラー
症状: 「Private key authentication failed」 解決方法:
- 公開鍵がSnowflakeユーザーに正しく設定されているか確認
- 秘密鍵ファイルの形式とパスフレーズを確認
- ファイル権限(600)を確認
📚 関連リンク
📄 ライセンス
このプロジェクトはMITライセンスの下で公開されています。
🤝 貢献
開発者向けの詳細なガイドはをご覧ください。
注意: このツールは読み取り専用アクセスを提供し、データの変更はできません。本番環境での使用前に、適切なアクセス制御とセキュリティ設定を確認してください。