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。
- 严格的访问模式:支持
readonly、readwrite、admin三种模式(通过环境变量强制实施)。 - 自动连接:使用环境变量或
.env文件实现无缝启动。 - 无需代码更改:只需配置并运行即可。
- 可扩展:轻松添加新工具或业务逻辑。
- 兼容性强:可与 Claude Desktop、ChatGPT 以及任何 MCP 客户端配合使用。
📦 安装指南
- 克隆或下载此仓库。
- 安装依赖项:
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. 只读模式(默认)
- 允许操作:
SELECT、SHOW、DESCRIBE等。 - 禁止操作:
INSERT、UPDATE、DELETE、DROP、TRUNCATE、ALTER、CREATE、GRANT、REVOKE、COMMENT、SET、COPY、UNLOAD、VACUUM、ANALYZE、MERGE。
2. 读写模式
- 允许操作:
SELECT、INSERT、UPDATE、CREATE等。 - 禁止操作:
DELETE、DROP、TRUNCATE、ALTER、GRANT、REVOKE、COMMENT、SET、COPY、UNLOAD、VACUUM、ANALYZE、MERGE。
3. 管理员模式
- 允许所有操作(无限制)。
如果检测到禁止的语句,服务器将返回清晰的错误消息。
设置访问模式的方法
- 环境变量:
DB_MCP_MODE=readonly(或readwrite、admin)。 - 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:访问模式(readonly、readwrite、admin)。
当设置这些环境变量时,服务器将:
- 在启动时自动连接。
- 如果未提供参数,则将其用作
connect_db工具的默认值。 - 根据所选模式强制实施查询/语句限制。
🔧 技术细节
安全考虑
- 凭证管理:推荐在 MCP 配置文件中使用环境变量,这样可以避免将凭证暴露在代码和工具调用中。
- 权限设置:使用具有最小必要权限的数据库用户。
- 查询安全:服务器使用参数化查询来防止 SQL 注入。根据所选模式检查并阻止查询/语句类型。
- 网络安全:确保你的 Redshift 集群通过 VPC 和安全组进行了适当的安全配置。
开发扩展
要扩展此服务器:
- 使用
@mcp.tool()装饰器添加新工具。 - 遵循 FastMCP 文档以使用高级功能。
- 使用你的 Redshift 集群进行全面测试。
故障排除
连接问题
- 验证你的 Redshift 集群端点和凭证。
- 检查网络连接和安全组设置。
- 确保集群处于活动状态并接受连接。
导入错误
- 如果
redshift-connector不可用,服务器将回退到psycopg2。 - 根据你的需求安装适当的连接器。
📄 许可证
本项目采用 MIT 许可证。
贡献说明
欢迎提交问题或拉取请求,以改进此 MCP 服务器。
👤 维护者
此 Redshift MCP 服务器由 Anshul 维护和部署。
微信扫一扫