Skip to main content
Glama
Moonlight-CL

Redshift MCP Server

by Moonlight-CL
README.md
# Redshift MCP Server

A Model Context Protocol (MCP) server for Amazon Redshift that enables AI assistants to interact with Redshift databases.

## Introduction

Redshift MCP Server is a Python-based implementation of the [Model Context Protocol](https://github.com/modelcontextprotocol/mcp) that provides tools and resources for interacting with Amazon Redshift databases. It allows AI assistants to:

- List schemas and tables in a Redshift database
- Retrieve table DDL (Data Definition Language) scripts
- Get table statistics
- Execute SQL queries
- Analyze tables to collect statistics information
- Get execution plans for SQL queries

## Installation

### Prerequisites

- Python 3.13 or higher
- Amazon Redshift cluster
- Redshift credentials (host, port, username, password, database)

### Install from source

```bash
# Clone the repository
git clone https://github.com/Moonlight-CL/redshift-mcp-server.git
cd redshift-mcp-server

# Install dependencies
uv sync
```

## Configuration

The server requires the following environment variables to connect to your Redshift cluster:

```
RS_HOST=your-redshift-cluster.region.redshift.amazonaws.com
RS_PORT=5439
RS_USER=your_username
RS_PASSWORD=your_password
RS_DATABASE=your_database
RS_SCHEMA=your_schema  # Optional, defaults to "public"
```

You can set these environment variables directly or use a `.env` file.

## Usage

### Starting the server

```bash
# Start the server
uv run --with mcp python-dotenv redshift-connector mcp
mcp run src/redshift_mcp_server/server.py
```

### Integrating with AI assistants

To use this server with an AI assistant that supports MCP, add the following configuration to your MCP settings:

```json
{
  "mcpServers": {
    "redshift": {
      "command": "uv",
      "args": ["--directory", "src/redshift_mcp_server", "run", "server.py"],
      "env": {
        "RS_HOST": "your-redshift-cluster.region.redshift.amazonaws.com",
        "RS_PORT": "5439",
        "RS_USER": "your_username",
        "RS_PASSWORD": "your_password",
        "RS_DATABASE": "your_database",
        "RS_SCHEMA": "your_schema"
      }
    }
  }
}
```

## Features

### Resources

The server provides the following resources:

- `rs:///schemas` - Lists all schemas in the database
- `rs:///{schema}/tables` - Lists all tables in a specific schema
- `rs:///{schema}/{table}/ddl` - Gets the DDL script for a specific table
- `rs:///{schema}/{table}/statistic` - Gets statistics for a specific table

### Tools

The server provides the following tools:

- `execute_sql` - Executes a SQL query on the Redshift cluster
- `analyze_table` - Analyzes a table to collect statistics information
- `get_execution_plan` - Gets the execution plan with runtime statistics for a SQL query

## Examples

### Listing schemas

```
access_mcp_resource("redshift-mcp-server", "rs:///schemas")
```

### Listing tables in a schema

```
access_mcp_resource("redshift-mcp-server", "rs:///public/tables")
```

### Getting table DDL

```
access_mcp_resource("redshift-mcp-server", "rs:///public/users/ddl")
```

### Executing SQL

```
use_mcp_tool("redshift-mcp-server", "execute_sql", {"sql": "SELECT * FROM public.users LIMIT 10"})
```

### Analyzing a table

```
use_mcp_tool("redshift-mcp-server", "analyze_table", {"schema": "public", "table": "users"})
```

### Getting execution plan

```
use_mcp_tool("redshift-mcp-server", "get_execution_plan", {"sql": "SELECT * FROM public.users WHERE user_id = 123"})
```

## Development

### Project structure

```
redshift-mcp-server/
├── src/
│   └── redshift_mcp_server/
│       ├── __init__.py
│       └── server.py
├── pyproject.toml
└── README.md
```

### Dependencies

- `mcp[cli]>=1.5.0` - Model Context Protocol SDK
- `python-dotenv>=1.1.0` - For loading environment variables from .env files
- `redshift-connector>=2.1.5` - Python connector for Amazon Redshift

TDQS

B3/5.0

Scored across 3 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: analyze_table focuses on table statistics, execute_sql runs queries, and get_execution_plan provides query performance insights. There is no overlap in functionality, making it easy for an agent to select the right tool.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern (analyze_table, execute_sql, get_execution_plan) with clear, descriptive verbs. The naming is uniform and predictable throughout the set.

Tool Count3/5

With only 3 tools, the set feels thin for a database server like Redshift, which typically involves more operations such as data manipulation, schema management, or monitoring. While the tools cover core query execution and analysis, the scope seems limited.

Completeness2/5

There are significant gaps in the tool surface for a Redshift server. Missing are essential operations like creating/dropping tables, inserting/updating data, listing databases or tables, and user/permission management. This incomplete coverage will likely cause agent failures in broader database workflows.

Maintenance

ActivityInactive
ResponsivenessNo issues