返回 MCP 目录
public公开dns本地运行

my-redshift-mcp

一个即插即用的Redshift数据库MCP服务,为LLM和AI代理提供安全、标准化的数据访问接口,支持多种权限模式且无需代码修改即可部署使用。

article

README

🚀 Redshift MCP 服务器

Redshift MCP 服务器是一款即插即用的模型上下文协议(MCP)服务器,专为 Amazon Redshift 设计。它能让大语言模型(LLM)和 AI 智能体(如 Claude、ChatGPT 等)安全、便捷地连接到你的 Redshift 数据。

🚀 快速开始

1. 克隆并安装

git clone <repo-url>
cd my-redshift-mcp
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt

2. 配置(推荐:创建一个 .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. 运行服务器

./scripts/run_server.sh

4. 从你的 LLM/MCP 客户端连接(例如,Claude Desktop)

✨ 主要特性

  • 生产就绪:安全、稳定且易于部署。
  • 遵循 MCP 标准:将 Redshift 作为标准化工具提供给大语言模型和 AI。
  • 严格的访问模式:支持 readonlyreadwriteadmin 三种模式(通过环境变量强制实施)。
  • 自动连接:使用环境变量或 .env 文件实现无缝启动。
  • 无需代码更改:只需配置并运行即可。
  • 可扩展:轻松添加新工具或业务逻辑。
  • 兼容性强:可与 Claude Desktop、ChatGPT 以及任何 MCP 客户端配合使用。

📦 安装指南

  1. 克隆或下载此仓库。
  2. 安装依赖项:
pip install -r requirements.txt

💻 使用示例

基础用法

1. connect_db

连接到 Redshift 数据库集群。如果设置了环境变量,则参数可选。

# 显式指定参数
{
  "tool": "connect_db",
  "arguments": {
    "host": "your-cluster.region.redshift.amazonaws.com",
    "database": "mydb",
    "user": "myuser",
    "password": "mypassword",
    "port": 5439
  }
}

# 设置了环境变量
{
  "tool": "connect_db",
  "arguments": {}
}

2. query

执行 SELECT 查询以检索数据。

{
  "tool": "query",
  "arguments": {
    "sql": "SELECT * FROM users WHERE created_at > %s",
    "params": ["2024-01-01"]
  }
}

3. execute

执行数据修改或 DDL 语句。

{
  "tool": "execute",
  "arguments": {
    "sql": "INSERT INTO users (name, email) VALUES (%s, %s)",
    "params": ["John Doe", "john@example.com"]
  }
}

4. list_schemas

列出所有用户创建的模式。

{
  "tool": "list_schemas",
  "arguments": {}
}

5. list_tables

列出特定模式中的表。

{
  "tool": "list_tables",
  "arguments": {
    "schema": "public"
  }
}

6. describe_table

获取表结构的详细信息。

{
  "tool": "describe_table",
  "arguments": {
    "table": "users",
    "schema": "public"
  }
}

7. disconnect

关闭数据库连接。

{
  "tool": "disconnect",
  "arguments": {}
}

📚 详细文档

关于 Redshift MCP 服务器

Redshift MCP 服务器是 Amazon Redshift 和现代 AI 助手之间的开源桥梁。它允许大语言模型使用 模型上下文协议(MCP) 安全地查询、探索并(可选)修改你的 Redshift 数据。适用于:

  • 希望启用 AI 驱动分析的数据团队。
  • 构建 AI 工作流和自动化。
  • 让大语言模型安全、可审计地访问生产数据。

项目概述

本仓库使用 FastMCP 框架提供了一个适用于 Amazon Redshift 的最小化、生产就绪的 MCP 服务器。它允许大语言模型和 AI 智能体:

  • 查询 Redshift 数据库(具有严格的访问控制)。
  • 列出模式和表。
  • 描述表结构。
  • (可选)根据配置的模式插入/更新数据。

访问模式和查询安全

服务器支持三种访问模式,由 DB_MCP_MODE 环境变量控制:

1. 只读模式(默认)

  • 允许操作SELECTSHOWDESCRIBE 等。
  • 禁止操作INSERTUPDATEDELETEDROPTRUNCATEALTERCREATEGRANTREVOKECOMMENTSETCOPYUNLOADVACUUMANALYZEMERGE

2. 读写模式

  • 允许操作SELECTINSERTUPDATECREATE 等。
  • 禁止操作DELETEDROPTRUNCATEALTERGRANTREVOKECOMMENTSETCOPYUNLOADVACUUMANALYZEMERGE

3. 管理员模式

  • 允许所有操作(无限制)。

如果检测到禁止的语句,服务器将返回清晰的错误消息。

设置访问模式的方法

  • 环境变量DB_MCP_MODE=readonly(或 readwriteadmin)。
  • Claude Desktop 配置
"env": {
  "DB_MCP_MODE": "readwrite",
  ...
}
  • Shell/本地
export DB_MCP_MODE=readonly
./run_server.sh

运行服务器

直接运行服务器:

python src/redshift_mcp_server.py

或者使用提供的脚本:

./scripts/run_server.sh
# 或者在 Windows 上:
scripts\run_server.bat

默认情况下,服务器使用 STDIO 传输,适用于与 Claude Desktop 等 MCP 客户端集成。

Claude Desktop 配置

要在 Claude Desktop 中使用此服务器,请在你的 Claude Desktop 配置文件中添加以下配置:

  • macOS~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows%APPDATA%/Claude/claude_desktop_config.json

选项 1:使用环境变量(推荐)

{
  "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"
      }
    }
  }
}

使用此配置,服务器将在启动时自动连接到你的 Redshift 数据库。你无需手动使用 connect_db 工具。

选项 2:不使用环境变量

{
  "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"]
    }
  }
}

使用此配置,你需要使用 connect_db 工具建立连接。

环境变量

服务器支持以下环境变量:

  • REDSHIFT_HOST:Redshift 集群端点。
  • REDSHIFT_DATABASE:数据库名称。
  • REDSHIFT_USER:用户名。
  • REDSHIFT_PASSWORD:密码。
  • REDSHIFT_PORT:端口号(默认:5439)。
  • DB_MCP_MODE:访问模式(readonlyreadwriteadmin)。

当设置这些环境变量时,服务器将:

  1. 在启动时自动连接。
  2. 如果未提供参数,则将其用作 connect_db 工具的默认值。
  3. 根据所选模式强制实施查询/语句限制。

🔧 技术细节

安全考虑

  • 凭证管理:推荐在 MCP 配置文件中使用环境变量,这样可以避免将凭证暴露在代码和工具调用中。
  • 权限设置:使用具有最小必要权限的数据库用户。
  • 查询安全:服务器使用参数化查询来防止 SQL 注入。根据所选模式检查并阻止查询/语句类型。
  • 网络安全:确保你的 Redshift 集群通过 VPC 和安全组进行了适当的安全配置。

开发扩展

要扩展此服务器:

  1. 使用 @mcp.tool() 装饰器添加新工具。
  2. 遵循 FastMCP 文档以使用高级功能。
  3. 使用你的 Redshift 集群进行全面测试。

故障排除

连接问题

  • 验证你的 Redshift 集群端点和凭证。
  • 检查网络连接和安全组设置。
  • 确保集群处于活动状态并接受连接。

导入错误

  • 如果 redshift-connector 不可用,服务器将回退到 psycopg2
  • 根据你的需求安装适当的连接器。

📄 许可证

本项目采用 MIT 许可证。

贡献说明

欢迎提交问题或拉取请求,以改进此 MCP 服务器。

👤 维护者

此 Redshift MCP 服务器由 Anshul 维护和部署。

help

运行方式说明

cloud

托管运行

托管运行通常表示这个 MCP Server 由服务方环境承载,用户一般按页面提供的连接方式或授权流程接入,不需要在本地长期启动一个 MCP 进程

  1. 打开服务方连接页
  2. 完成授权或复制端点
  3. 在 MCP 客户端中连接
terminal

本地运行 / 其它方式

本地运行通常需要用户在自己的电脑或服务器上安装依赖,把 server_config 复制到 MCP 客户端,并按 env_schema 补齐环境变量、密钥或其它配置

  1. 复制 server_config
  2. 安装所需依赖
  3. 补齐环境变量后重启客户端