Skip to main content
Glama

Redshift MCP Server

by anshulpatre
3
  • Apple
README.md9.42 kB
# 🚀 Redshift MCP Server **A plug-and-play Model Context Protocol (MCP) server for Amazon Redshift. Instantly connect LLMs and AI agents (Claude, ChatGPT, etc.) to your Redshift data — securely, safely, and with zero hassle.** --- ## 🌟 Features - **Production-ready**: Secure, robust, and easy to deploy - **MCP Standard**: Exposes Redshift as standardized tools for LLMs/AI - **Strict Access Modes**: `readonly`, `readwrite`, `admin` (enforced by env var) - **Auto-connect**: Use environment variables or a `.env` file for seamless startup - **No code changes needed**: Just configure and run - **Extensible**: Add new tools or business logic easily - **Works with Claude Desktop, ChatGPT, and any MCP client** --- ## ⚡ Quickstart 1. **Clone & Install** ```bash git clone <repo-url> cd my-redshift-mcp python3 -m venv venv source venv/bin/activate pip install -r requirements.txt ``` 2. **Configure** (recommended: create a `.env` file): ```env REDSHIFT_HOST=your-cluster.region.redshift.amazonaws.com REDSHIFT_DATABASE=mydb REDSHIFT_USER=myuser REDSHIFT_PASSWORD=mypassword REDSHIFT_PORT=5439 DB_MCP_MODE=readonly ``` 3. **Run the server** ```bash ./scripts/run_server.sh ``` 4. **Connect from your LLM/MCP client** (e.g., Claude Desktop) --- ## 🔗 What is Redshift MCP Server? Redshift MCP Server is an open-source bridge between Amazon Redshift and modern AI assistants. It lets LLMs securely query, explore, and (optionally) modify your Redshift data using the [Model Context Protocol (MCP)](https://github.com/anthropic-ai/model-context-protocol). Perfect for: - Data teams enabling AI-powered analytics - Building AI workflows and automations - Secure, auditable LLM access to production data --- ## About This Project This repository provides a **minimal, production-ready MCP server for Amazon Redshift** using the FastMCP framework. It allows LLMs and AI agents to: - Query Redshift databases (with strict access controls) - List schemas and tables - Describe table structures - (Optionally) insert/update data, depending on configured mode **Key features:** - Three access modes: `readonly`, `readwrite`, `admin` (see below) - Environment variable and `.env` support for easy configuration - Secure by default: starts in `readonly` mode - Compatible with Claude Desktop, ChatGPT, and any MCP client - Easy to extend with new tools or business logic --- ## Features This MCP server provides the following tools for Redshift database operations: - **connect_db**: Establish connection to a Redshift cluster (supports environment variables) - **query**: Execute SELECT queries with optional parameter binding - **execute**: Run INSERT, UPDATE, DELETE, or DDL statements - **list_schemas**: List all schemas in the database - **list_tables**: List tables in a specific schema - **describe_table**: Get detailed structure of a table - **disconnect**: Close the database connection ### Auto-Connection Support The server supports automatic connection on startup using environment variables. If all required environment variables are set, the server will connect automatically when it starts. --- ## Access Modes and Query Safety The server supports three access modes, controlled by the `DB_MCP_MODE` environment variable: ### 1. **readonly** (default) - **Allows:** `SELECT`, `SHOW`, `DESCRIBE`, etc. - **Blocks:** `INSERT`, `UPDATE`, `DELETE`, `DROP`, `TRUNCATE`, `ALTER`, `CREATE`, `GRANT`, `REVOKE`, `COMMENT`, `SET`, `COPY`, `UNLOAD`, `VACUUM`, `ANALYZE`, `MERGE` ### 2. **readwrite** - **Allows:** `SELECT`, `INSERT`, `UPDATE`, `CREATE`, etc. - **Blocks:** `DELETE`, `DROP`, `TRUNCATE`, `ALTER`, `GRANT`, `REVOKE`, `COMMENT`, `SET`, `COPY`, `UNLOAD`, `VACUUM`, `ANALYZE`, `MERGE` ### 3. **admin** - **Allows everything** (no restrictions) **If a forbidden statement is detected, the server will return a clear error message.** #### How to Set the Mode - **Environment variable:** `DB_MCP_MODE=readonly` (or `readwrite`, `admin`) - **Claude Desktop config:** ```json "env": { "DB_MCP_MODE": "readwrite", ... } ``` - **Shell/local:** ```bash export DB_MCP_MODE=readonly ./run_server.sh ``` --- ## Installation 1. Clone or download this repository 2. Install dependencies: ```bash pip install -r requirements.txt ``` ## Usage ### Running the Server Run the server directly: ```bash python src/redshift_mcp_server.py ``` Or use the provided scripts: ```bash ./scripts/run_server.sh # or on Windows: scripts\run_server.bat ``` By default, the server runs using STDIO transport, which is suitable for integration with MCP clients like Claude Desktop. ### Configuration for Claude Desktop To use this server with Claude Desktop, add the following configuration to your Claude Desktop config file: **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json` **Windows**: `%APPDATA%/Claude/claude_desktop_config.json` #### Option 1: With Environment Variables (Recommended) ```json { "mcpServers": { "redshift": { "command": "/Users/anshulpatre/Desktop/DB-mcp/my-redshift-mcp/venv/bin/python", "args": ["/Users/anshulpatre/Desktop/DB-mcp/my-redshift-mcp/src/redshift_mcp_server.py"], "env": { "REDSHIFT_HOST": "your-cluster.region.redshift.amazonaws.com", "REDSHIFT_DATABASE": "mydb", "REDSHIFT_USER": "myuser", "REDSHIFT_PASSWORD": "mypassword", "REDSHIFT_PORT": "5439", "DB_MCP_MODE": "readonly" } } } } ``` With this configuration, the server will automatically connect to your Redshift database on startup. You won't need to use the `connect_db` tool manually. #### Option 2: Without Environment Variables ```json { "mcpServers": { "redshift": { "command": "/Users/anshulpatre/Desktop/DB-mcp/my-redshift-mcp/venv/bin/python", "args": ["/Users/anshulpatre/Desktop/DB-mcp/my-redshift-mcp/src/redshift_mcp_server.py"] } } } ``` With this configuration, you'll need to use the `connect_db` tool to establish a connection. ### Environment Variables The server supports the following environment variables: - `REDSHIFT_HOST`: Redshift cluster endpoint - `REDSHIFT_DATABASE`: Database name - `REDSHIFT_USER`: Username - `REDSHIFT_PASSWORD`: Password - `REDSHIFT_PORT`: Port number (default: 5439) - `DB_MCP_MODE`: Access mode (`readonly`, `readwrite`, `admin`) When these environment variables are set, the server will: 1. Automatically connect on startup 2. Use them as defaults for the `connect_db` tool if no parameters are provided 3. Enforce query/statement restrictions based on the selected mode --- ### Available Tools #### 1. connect_db Connect to a Redshift database cluster. If environment variables are set, parameters are optional. ```python # With explicit parameters { "tool": "connect_db", "arguments": { "host": "your-cluster.region.redshift.amazonaws.com", "database": "mydb", "user": "myuser", "password": "mypassword", "port": 5439 } } # With environment variables set { "tool": "connect_db", "arguments": {} } ``` #### 2. query Execute SELECT queries to retrieve data. ```python { "tool": "query", "arguments": { "sql": "SELECT * FROM users WHERE created_at > %s", "params": ["2024-01-01"] } } ``` #### 3. execute Execute data modification or DDL statements. ```python { "tool": "execute", "arguments": { "sql": "INSERT INTO users (name, email) VALUES (%s, %s)", "params": ["John Doe", "john@example.com"] } } ``` #### 4. list_schemas List all user-created schemas. ```python { "tool": "list_schemas", "arguments": {} } ``` #### 5. list_tables List tables in a specific schema. ```python { "tool": "list_tables", "arguments": { "schema": "public" } } ``` #### 6. describe_table Get detailed information about a table's structure. ```python { "tool": "describe_table", "arguments": { "table": "users", "schema": "public" } } ``` #### 7. disconnect Close the database connection. ```python { "tool": "disconnect", "arguments": {} } ``` --- ## Security Considerations - **Credentials**: The recommended approach is to use environment variables in the MCP configuration file. This keeps credentials out of your code and tool calls. - **Permissions**: Use database users with minimal required permissions. - **Query Safety**: The server uses parameterized queries to prevent SQL injection. Query/statement type is checked and blocked according to the selected mode. - **Network Security**: Ensure your Redshift cluster is properly secured with VPC and security groups. ## Development To extend this server: 1. Add new tools using the `@mcp.tool()` decorator 2. Follow the FastMCP documentation for advanced features 3. Test thoroughly with your Redshift cluster ## Troubleshooting ### Connection Issues - Verify your Redshift cluster endpoint and credentials - Check network connectivity and security group settings - Ensure the cluster is active and accepting connections ### Import Errors - If `redshift-connector` is not available, the server falls back to `psycopg2` - Install the appropriate connector based on your needs ## License MIT ## Contributing Feel free to submit issues or pull requests to improve this MCP server. --- ## 👤 Maintainer This Redshift MCP Server is maintained and deployed by **Anshul**.

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/anshulpatre/my-redshift-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server