🚀 Redshift MCP服务器
Amazon Redshift的即插即用模型上下文协议(MCP)服务器。立即将LLM和AI代理(Claude、ChatGPT等)连接到您的Redshift数据——安全、可靠、零麻烦。
______________________________________________________________________
🌟 特性
- 生产准备就绪:安全、稳健且易于部署
- MCP标准:将Redshift作为LLM/AI的标准化工具公开
- 严格访问模式:
readonly,readwrite,admin(由env-var强制执行) - 自动连接:使用环境变量或
.env无缝启动文件 - 无需更改代码:只需配置并运行
- 可扩展:轻松添加新工具或业务逻辑
- 适用于Claude Desktop、ChatGPT和任何MCP客户端
______________________________________________________________________
⚡ 快速启动
- 克隆和安装
git clone
cd my-redshift-mcp
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt- 配置 (建议:创建一个
.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- 运行服务器
./scripts/run_server.sh- 从LLM/MCP客户端连接 (例如,克劳德桌面)
______________________________________________________________________
🔗 什么是Redshift MCP服务器?
Redshift MCP Server是Amazon Redshift和现代AI助手之间的开源桥梁。它允许LLM使用 模型上下文协议(MCP)非常适合:
- 数据团队支持人工智能驱动的分析
- 构建人工智能工作流程和自动化
- 安全、可审计的LLM生产数据访问
______________________________________________________________________
关于本项目
此存储库提供 适用于Amazon Redshift的最小生产就绪MCP服务器 使用FastMCP框架。它允许LLM和AI代理:
- 查询Redshift数据库(具有严格的访问控制)
- 列出模式和表
- 描述表格结构
- (可选)插入/更新数据,具体取决于配置的模式
主要特点:
- 三种访问模式:
readonly,readwrite,admin(见下文) - 环境变量和
.env支持轻松配置 - 默认安全:从中开始
readonly模式 - 与Claude Desktop、ChatGPT和任何MCP客户端兼容
- 易于使用新工具或业务逻辑进行扩展
______________________________________________________________________
特性
此MCP服务器为Redshift数据库操作提供以下工具:
- connect_db:建立与Redshift集群的连接(支持环境变量)
- 怎么翻译:使用可选参数绑定执行SELECT查询
- 执行:运行INSERT、UPDATE、DELETE或DDL语句
- list_schemas:列出数据库中的所有架构
- list_tables:列出特定架构中的表
- describe_table:获取表的详细结构
- 断开:关闭数据库连接
自动连接支持
服务器支持使用环境变量在启动时自动连接。如果设置了所有必需的环境变量,服务器将在启动时自动连接。
______________________________________________________________________
访问模式和查询安全
服务器支持三种访问模式,由 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桌面配置:
"env": {
"DB_MCP_MODE": "readwrite",
...
}- 壳牌/当地:
export DB_MCP_MODE=readonly
./run_server.sh______________________________________________________________________
安装
- 克隆或下载此存储库
- 安装依赖项:
pip install -r requirements.txt用法
运行服务器
直接运行服务器:
python src/redshift_mcp_server.py或者使用提供的脚本:
./scripts/run_server.sh
# or on Windows:
scripts\run_server.bat默认情况下,服务器使用STDIO传输运行,这适用于与Claude Desktop等MCP客户端集成。
Claude桌面配置
要将此服务器与Claude Desktop一起使用,请将以下配置添加到您的Claude Desktop配置文件中:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json 视窗: %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如果没有提供参数,则使用工具 - 根据所选模式强制执行查询/语句限制
______________________________________________________________________
可用工具
1.connect_db
连接到Redshift数据库群集。如果设置了环境变量,则参数是可选的。
# 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.查询
执行SELECT查询以检索数据。
{
"tool": "query",
"arguments": {
"sql": "SELECT * FROM users WHERE created_at > %s",
"params": ["2024-01-01"]
}
}3.执行
执行数据修改或DDL语句。
{
"tool": "execute",
"arguments": {
"sql": "INSERT INTO users (name, email) VALUES (%s, %s)",
"params": ["John Doe", "john@example.com"]
}
}4.列表模式
列出所有用户创建的架构。
{
"tool": "list_schemas",
"arguments": {}
}5.列表表
列出特定架构中的表。
{
"tool": "list_tables",
"arguments": {
"schema": "public"
}
}6.描述表
获取有关表结构的详细信息。
{
"tool": "describe_table",
"arguments": {
"table": "users",
"schema": "public"
}
}7.断开连接
关闭数据库连接。
{
"tool": "disconnect",
"arguments": {}
}______________________________________________________________________
安全考虑
- 凭证:建议的方法是在MCP配置文件中使用环境变量。这使凭据不在代码和工具调用中。
- 权限:使用具有最低所需权限的数据库用户。
- 查询安全:服务器使用参数化查询来防止SQL注入。根据所选模式检查和阻止查询/语句类型。
- 网络安全:确保您的Redshift集群使用VPC和安全组进行了适当的保护。
发展
要扩展此服务器,请执行以下操作:
- 使用添加新工具
@mcp.tool()装饰器 - 有关高级功能,请参阅FastMCP文档
- 使用Redshift集群进行彻底测试
故障排除
连接问题
- 验证您的Redshift群集端点和凭据
- 检查网络连接和安全组设置
- 确保群集处于活动状态并接受连接
导入错误
- 如果
redshift-connector不可用,服务器将回退到psycopg2 - 根据您的需求安装合适的连接器
许可证
麻省理工学院
贡献
请随时提交问题或拉取请求以改进此MCP服务器。
______________________________________________________________________
👤 维护者
此Redshift MCP服务器由以下人员维护和部署 安舒尔.
