Back to Integrations

Redshift

A Model Context Protocol server that provides read-only access to Redshift. This server lets LLMs inspect your data warehouse schemas and execute read-only queries.

Last updated: 1/27/2026

README

# Redshift MCP Server (TypeScript)

This is a Model Context Protocol (MCP) server for Amazon Redshift implemented in TypeScript. It follows Anthropic's implementation pattern and provides Cursor IDE and other MCP-compatible clients with rich contextual information about your Redshift data warehouse. This server enables LLMs to inspect database schemas and execute read-only queries.

## Integration with MCP Clients

### Project-Specific Configuration

Create a `.cursor/mcp.json` file in your project directory:

```json
{
  "mcpServers": {
    "redshift-mcp": {
      "command": "node",
      "args": ["path/to/dist/index.js"],
      "env": {
        "DATABASE_URL": "redshift://username:password@hostname:port/database?ssl=true"
      }
    }
  }
}
```

### Global Configuration

For using across all projects, create `~/.cursor/mcp.json` in your home directory with the same configuration.

### Client-Specific Setup

#### Cursor IDE

1. The server will be automatically detected if configured in `mcp.json`
2. Tools will appear under "Available Tools" in MCP settings
3. Agent will automatically use the tools when relevant

#### Other MCP Clients

Configure the server using stdio transport:

```json
{
  "servers": [
    {
      "name": "redshift-mcp",
      "transport": {
        "kind": "stdio",
        "command": ["node", "path/to/dist/index.js"]
      }
    }
  ]
}
```

## Prerequisites

- Node.js 16 or higher
- TypeScript
- Access to an Amazon Redshift cluster
- Basic knowledge of Redshift and SQL
- Cursor IDE installed

## Installation

1. Clone this repository or copy the files to your local system
2. Install the dependencies:

```bash
npm install
```

3. Build the TypeScript code:

```bash
npm run build
```

## Usage

The server requires a Redshift connection URL via the `DATABASE_URL` environment variable:

```bash
export DATABASE_URL="redshift://username:password@hostname:port/database?ssl=true"
npm start
```

Or you can run directly:

```bash
DATABASE_URL="redshift://username:password@hostname:port/database?ssl=true" node dist/index.js
```

For development, you can use:

```bash
DATABASE_URL="redshift://username:password@hostname:port/database?ssl=true" npm run dev
```

### Connection URL Format

```plaintext
redshift://username:password@hostname:port/database?ssl=true
```

- **username**: Your Redshift username
- **password**: Your Redshift password
- **hostname**: Your Redshift cluster endpoint
- **port**: Usually 5439 for Redshift
- **database**: The name of your database
- **ssl**: Set to "true" for secure connection (recommended)

Additional connection parameters:

- `ssl=true`: Required for secure connections (recommended)
- `timeout=10`: Connection timeout in seconds
- `keepalives=1`: Enable TCP keepalive
- `keepalives_idle=130`: TCP keepalive idle time

## Project Structure

- `src/index.ts`: Main TypeScript implementation
- `dist/`: Compiled JavaScript output
- `package.json`: Project dependencies and scripts
- `tsconfig.json`: TypeScript configuration

## Components

### Tools Available in Cursor

- **query**
  - Execute read-only SQL queries against the connected Redshift database
  - Example: "Write a query to show all tables in the public schema"

- **describe_table**
  - Get detailed information about a specific table
  - Example: "Show me the structure of the users table"

- **find_column**
  - Find tables containing columns with specific name patterns
  - Example: "Find all tables that have a column containing 'email'"

### Resources Available to Cursor

The server provides schema information that Cursor can use:

- **Schema Listings** (`redshift://<host>/schema/<schema_name>`)
  - Lists all tables within a specific schema
  - Automatically discovered from database metadata

- **Table Schemas** (`redshift://<host>/<schema>/<table>/schema`)
  - JSON schema information for each table
  - Includes column names, data types, and Redshift-specific attributes (distribution and sort keys)

- **Sample Data** (`redshift://<host>/<schema>/<table>/sample`)
  - Sample rows from each table (limited to 5)
  - Sensitive data is automatically redacted

- **Statistics** (`redshift://<host>/<schema>/<table>/statistics`)
  - Table statistics including size, row count, and creation time
  - Distribution and compression information

## Security Considerations

This server:

- Uses read-only transactions for queries to prevent modifications
- Sanitizes inputs to prevent SQL injection
- Does not expose raw password information in resource URIs
- Automatically redacts sensitive data in sample results (email, phone)
- Should be used in a secure environment since it has access to your database

## Example Cursor Interactions

Here are some example questions you can ask Cursor once connected:

1. "Show me all tables in the public schema"
2. "What's the structure of the customers table?"
3. "Find all tables that contain customer information"
4. "Write a query to count orders by status"
5. "Show me sample data from the products table"

## Extending the Server

You can extend this server by:

1. Adding new resource types in the `ListResourcesRequestSchema` and `ReadResourceRequestSchema` handlers
2. Adding new tools in the `ListToolsRequestSchema` and `CallToolRequestSchema` handlers
3. Enhancing security features or adding authentication

## Development

For development, you can use the `npm run dev` command, which uses ts-node to run the TypeScript code directly without pre-compilation.

## License

MIT

Installation

Add this MCP to your configuration:

{
  "mcpServers": {
    "redshift-mcp-server": {
      // See GitHub repository for configuration
    }
  }
}

See the GitHub repository for full installation instructions.