Skip to main content
Glama
kartik-augusta

Redshift MCP Server

Redshift MCP Server

このMCP(Model Context Protocol)サーバーは、Claude Desktopおよびその他のMCP互換クライアントで使用するために、Amazon Redshiftデータベースへの安全な読み取り専用アクセスを提供します。これはインテリジェントなブリッジとして機能し、AIアシスタントがデータウェアハウスから直接、自律的にナビゲート、理解、洞察の抽出を行えるようにします。

✨ 主な機能

  • 10個の専門ツール: データ探索、メタデータ抽出、クエリ、エクスポートのための完全なツールスイート。

  • 動的構成: .env 経由で完全に設定可能(許可リスト、行数制限、接続パラメータ)。

  • トランスポートモード: stdio(Claude Desktopなどのローカルクライアント用)とsse(リモート接続用のHTTP上のServer-Sent Events)の両方をサポート。

  • 接続キャッシュ: Redshiftへの単一の長寿命ヘルスチェック済み接続による効率的な接続管理。

  • エンタープライズセキュリティ:

    • 厳格な読み取り専用SQL検証。

    • スキーマ許可リスト(AIを事前承認済みスキーマに制限)。

    • データベースのパフォーマンスを保護するためのクエリおよびエクスポート行数のハードキャップ。

  • SSHトンネルサポート: 統合されたsshtunnelを介して、プライベートVPC Redshiftクラスターにシームレスに接続。

Related MCP server: safedb-mcp

🛠️ 利用可能なMCPツール

データ探索とナビゲーション

  1. get_allowed_schemas: サーバーのスキーマアクセス構成(許可リスト、デフォルトスキーマ、制限)を返します。

  2. list_schemas: データベース内のアクセス可能なスキーマを検出します(設定された許可リストでフィルタリング)。

  3. list_tables: スキーマ内のすべてのテーブルを一覧表示します。許可リスト内のスキーマのみがアクセス可能です。

  4. describe_table: テーブルの列名、データ型、NULL許容性、デフォルト値を取得します。

  5. search_columns: 許可されたスキーマ内のすべてのテーブルで、名前がキーワード(大文字小文字を区別しない)に一致する列を検索します。

データ分析と抽出

  1. sample_data: データ探索のために、テーブルから行のクイックサンプルを返します。

  2. table_row_count: COUNT(*) を使用してテーブルの正確な行数を取得します。

  3. query_data: 読み取り専用のSELECTクエリを実行します。サーバー構成に基づいて結果を自動的にラップして制限します。

  4. explain_query: 実行前にクエリのパフォーマンスを理解するために、EXPLAINプランを表示します。

  5. export_to_csv: クエリ結果をCSV形式でエクスポートします。専用のより高い行数制限(MAX_EXPORT_ROWS)を使用します。

🚀 セットアップとインストール

1. 依存関係のインストール

# Clone the repository
git clone <repository-url>
cd redshift-mcp-server

# Create virtual environment
python3 -m venv .venv
source .venv/bin/activate

# Install dependencies
pip install -r requirements.txt

2. 環境の設定

サンプル環境ファイルをコピーし、認証情報を編集します:

cp .env.example .env

.envファイルを編集して、Redshift接続とサーバー制限を設定します:

# --- Redshift Connection ---
RS_HOST=your-cluster.region.redshift.amazonaws.com
RS_DB=your_database_name
RS_USER=your_readonly_user
RS_PASS=your_password
RS_PORT=5439

# --- Security & Limits ---
ALLOWED_SCHEMAS=gold_capsaai,report_capsaai
DEFAULT_SCHEMA=gold_capsaai
MAX_ROWS=500
MAX_EXPORT_ROWS=5000

# --- SSH Tunnel (For Private VPCs) ---
SSH_TUNNEL=false
# If true, provide SSH_HOST, SSH_USER, SSH_KEY_FILE, etc.

3. サーバーの起動

モード1: stdio(デフォルト) MCPクライアント(例:Claude Desktop)が同じマシンで実行されている場合に最適です。

python server.py

モード2: sse(HTTP) HTTPまたはトンネル経由でサーバーにリモートアクセスする場合に最適です。

# Start SSE on port 8000
python server.py --sse --host 0.0.0.0 --port 8000

🔌 サーバーへの接続

オプションA: ローカルClaude Desktop(stdio)

Claude Desktopがサーバーと同じマシンで実行されている場合は、Claude Desktopの構成ファイルを編集します:

  • Mac: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "redshift": {
      "command": "/absolute/path/to/redshift-mcp-server/.venv/bin/python",
      "args": ["/absolute/path/to/redshift-mcp-server/server.py"]
    }
  }
}

オプションB: リモート接続(SSE + IDE)

サーバーがリモートのEC2インスタンスで実行されている場合は、--sseモードでサーバーを起動します。

直接SSE接続をサポートするIDE(VS Code with Clineなど)の場合:

  1. 新しいMCPサーバーを追加します。

  2. トランスポートタイプをSSEに設定します。

  3. URLを使用します:http://<EC2-IP>:8000/sse(またはトンネルURL)。

🧪 テストと検証

リポジトリには、包括的なテストスイートと診断ツールが含まれています:

  • client.py: 10個すべてのツールに対してエンドツーエンドのスモークテストを実行するCLIクライアント。

  • test_connection.py: 基本的な接続性の検証。

  • test_restricted_access.py: スキーマのセキュリティ制限が正しく機能していることを確認します。

  • monitor_mcp.sh: 自動再起動、ヘルスチェック、ロギングを備えた本番運用対応のモニタリング。

🏗️ アーキテクチャ

graph TB
    subgraph "Client Layer"
        CD["Claude Desktop / MCP Client"]
    end
    
    subgraph "MCP Server Layer"
        MCP["FastMCP Server"]
        CONFIG["config.py / .env"]
        VALIDATION["SQL & Schema Validation"]
    end
    
    subgraph "Network Layer"  
        SSH["SSH Tunnel<br/>(Optional)"]
        CONN["Connection Cache"]
    end
    
    subgraph "Database Layer"
        RS["Amazon Redshift"]
        SCHEMA["Allowed Schemas"]
    end
    
    CD -->|"JSON-RPC (stdio/sse)"| MCP
    MCP --> CONFIG
    MCP --> VALIDATION
    VALIDATION --> CONN
    CONN --> SSH
    SSH --> RS
    RS --> SCHEMA

🔐 セキュリティに関する考慮事項

  • 読み取り専用: _validate_read_only_sqlラッパーは、クエリをSELECTおよびEXPLAINステートメントに厳しく制限します。

  • 制限エンジン: _apply_limit内の正規表現解析により、二重LIMIT構文のバグを防止し、大規模なテーブルスキャンが.envのしきい値で確実に制限されることを保証します。

  • スキーマの分離: AIはALLOWED_SCHEMASのカンマ区切りリスト外のテーブルを表示またはクエリできません。

  • 認証情報を安全に保つ: .envまたは.json構成ファイルをバージョン管理にコミットしないでください。これらはデフォルトで.gitignoreに無視されます。

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    A production-ready server that connects LLMs and AI agents (Claude, ChatGPT) to Amazon Redshift databases with configurable access controls and zero code changes.
    4
    -
  • A
    license
    A
    quality
    B
    maintenance
    Secure MCP server for safe, read-only DB access by AI agents, with SQL guardrails, table allowlists, PII masking, and audit logs
    6
    23 npm
    9
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    A read-only MCP server for Amazon Redshift that leverages column comments for guided data discovery, with slash commands for profiling, exploration, and lineage.
    13
    1
    MIT