Skip to main content
Glama
kartik-augusta

Redshift MCP Server

Redshift MCP Server

Этот MCP-сервер (Model Context Protocol) обеспечивает безопасный доступ только для чтения к базам данных Amazon Redshift для использования с Claude Desktop и другими MCP-совместимыми клиентами. Он действует как интеллектуальный мост, позволяя AI-ассистентам самостоятельно навигировать, понимать и извлекать инсайты непосредственно из вашего хранилища данных.

✨ Ключевые возможности

  • 10 специализированных инструментов: Полный набор инструментов для обнаружения данных, извлечения метаданных, выполнения запросов и экспорта.

  • Динамическая конфигурация: Полностью настраивается через .env (списки разрешений, лимиты строк, параметры подключения).

  • Режимы транспорта: Поддерживает как stdio (для локальных клиентов, таких как Claude Desktop), так и sse (Server-Sent Events через HTTP для удалённых подключений).

  • Кэширование подключений: Эффективное управление подключениями с одним долгоживущим проверяемым подключением к Redshift.

  • Корпоративная безопасность:

    • Строгая проверка SQL только для чтения.

    • Разрешение схем (ограничивает AI предварительно одобренными схемами).

    • Жёсткие ограничения на количество строк запросов и экспорта для защиты производительности базы данных.

  • Поддержка SSH-туннелей: Бесшовное подключение к частным VPC-кластерам Redshift через встроенный sshtunnel.

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.

Для IDE, поддерживающих прямые SSE-подключения (например, VS Code с Cline):

  1. Добавьте новый MCP-сервер.

  2. Установите тип транспорта SSE.

  3. Используйте URL: http://<EC2-IP>:8000/sse (или URL вашего туннеля).

🧪 Тестирование и валидация

Репозиторий включает комплексный набор тестов и диагностические инструменты:

  • client.py: CLI-клиент, выполняющий сквозной смоук-тест всех 10 инструментов.

  • 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.

  • Механизм лимитов: Двойные синтаксические ошибки LIMIT предотвращаются с помощью regex-парсинга в _apply_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
    17 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