该项目实现了一个专门用于与Amazon Redshift数据库交互的模型上下文协议(MCP)服务器。
它弥合了大型语言模型(LLMs)或AI助手(如Claude、Cursor或自定义应用程序)与您的Redshift数据仓库之间的差距,使用户能够通过自然语言或AI驱动的提示来查询数据、理解数据库结构以及执行监控和诊断操作。
此服务器适用于希望以结构化和安全的方式将其Amazon Redshift数据环境与LLM能力直接集成的开发人员、数据分析师或团队。
handle_inspect_table)来收集详细的表元数据、统计信息(如大小、行数、偏斜度、统计信息过时状态)和维护状态。handle_execute_ad_hoc_query)来执行任意的SELECT查询,基于LLM请求的数据检索。handle_diagnose_query_performance)来获取并分析特定查询ID的执行计划、指标和历史数据。handle_inspect_table)来全面检查一个表,包括设计、存储、健康和使用情况。handle_check_cluster_health)使用各种诊断查询对集群进行基本或完整的健康评估。handle_diagnose_locks)来识别并报告当前的锁争用和阻塞会话。handle_monitor_workload)在指定的时间窗口内分析集群的工作负载模式,涵盖WLM、顶级查询和资源使用情况。handle_get_table_definition)来检索指定表的SHOW TABLE输出(DDL)。软件:
uv(推荐的包管理器)或pip基础设施及访问:
redshift-data:*) 和访问指定Secrets Manager密钥 (secretsmanager:GetSecretValue) 权限的AWS账户。CONNECT 到数据库,SELECT 目标表,SELECT 相关系统视图如 pg_class,pg_namespace,svv_all_schemas,svv_tables,svv_table_info)。强烈建议使用最小特权原则的角色。参见安全性考虑。凭据:
您的Redshift连接详情由AWS Secrets Manager管理,服务器通过Redshift Data API连接。您需要:
这些详情将在配置部分中通过环境变量设置。
最简单的安装Redshift Utils MCP Server的方法是从PyPI直接安装:
# 使用pip
pip install redshift-utils-mcp
# 使用uv(推荐)
uv pip install redshift-utils-mcp
或者,您可以从源码仓库安装:
# 克隆仓库
git clone https://github.com/vinodismyname/redshift-utils-mcp.git
cd redshift-utils-mcp
# 使用uv安装(推荐)
uv sync
# 或者使用pip安装
pip install -e .
设置环境变量:
此服务器需要以下环境变量才能通过AWS Data API连接到您的Redshift集群。您可以在shell中直接设置这些变量,使用systemd服务文件,Docker环境文件,或者在项目根目录创建一个.env文件(如果使用支持从.env加载的工具如uv或python-dotenv)。
使用shell导出示例:
export REDSHIFT_CLUSTER_ID="your-cluster-id"
export REDSHIFT_DATABASE="your_database_name"
export REDSHIFT_SECRET_ARN="arn:aws:secretsmanager:us-east-1:123456789012:secret:your-redshift-secret-XXXXXX"
export AWS_REGION="us-east-1" # 或者 AWS_DEFAULT_REGION
# export AWS_PROFILE="your-aws-profile-name" # 可选
.env文件示例(参见.env.example):
# Redshift MCP Server配置的.env文件
# 如果包含秘密,请确保此文件不在版本控制中。添加到.gitignore。
REDSHIFT_CLUSTER_ID="your-cluster-id"
REDSHIFT_DATABASE="your_database_name"
REDSHIFT_SECRET_ARN="arn:aws:secretsmanager:us-east-1:123456789012:secret:your-redshift-secret-XXXXXX"
AWS_REGION="us-east-1" # 或者 AWS_DEFAULT_REGION
# AWS_PROFILE="your-aws-profile-name" # 可选
所需变量表:
| 变量名称 | 必需 | 描述 | 示例值 |
|---|---|---|---|
REDSHIFT_CLUSTER_ID | 是 | 您的Redshift集群标识符。 | my-redshift-cluster |
REDSHIFT_DATABASE | 是 | 要连接的数据库名称。 | mydatabase |
REDSHIFT_SECRET_ARN | 是 | AWS Secrets Manager中Redshift凭证的ARN。 | arn:aws:secretsmanager:us-east-1:123456789012:secret:mysecret-abcdef |
AWS_REGION | 是 | Data API和Secrets Manager的AWS区域。 | us-east-1 |
AWS_DEFAULT_REGION | 否 | 替代AWS_REGION用于指定AWS区域。 | us-west-2 |
AWS_PROFILE | 否 | 从您的凭证文件(~/.aws/...)中使用的AWS配置文件名称。 | my-redshift-profile |
注意:确保Boto3使用的AWS凭证(通过环境、配置文件或IAM角色)具有访问指定的REDSHIFT_SECRET_ARN和使用Redshift Data API (redshift-data:*) 的权限。
安装后,可以直接从命令行运行服务器:
# 如果是从PyPI安装
redshift-utils-mcp
# 或者使用uvx(无需安装)
uvx redshift-utils-mcp
在您的mcp.json文件中添加以下配置块:
{
"mcpServers": {
"redshift-utils-mcp": {
"command": "uvx",
"args": ["redshift-utils-mcp"],
"env": {
"REDSHIFT_CLUSTER_ID":"your-cluster-id",
"REDSHIFT_DATABASE":"your_database_name",
"REDSHIFT_SECRET_ARN":"arn:aws:secretsmanager:...",
"AWS_REGION": "us-east-1"
}
}
}
使用Claude CLI添加服务器配置:
claude mcp add redshift-utils-mcp \
-e REDSHIFT_CLUSTER_ID="your-cluster-id" \
-e REDSHIFT_DATABASE="your_database_name" \
-e REDSHIFT_SECRET_ARN="arn:aws:secretsmanager:..." \
-e AWS_REGION="us-east-1" \
-- uvx redshift-utils-mcp
stdio传输类型。uvx run redshift_utils_mcp)。确保运行的命令可以访问任何必要的环境变量。| 资源URI模式 | 描述 | 示例URI |
|---|---|---|
/scripts/{script_path} | 从服务器的sql_scripts目录中检索SQL脚本文件的原始内容。 | /scripts/health/disk_usage.sql |
redshift://schemas | 列出连接数据库中所有可访问的用户定义模式。 | redshift://schemas |
redshift://wlm/configuration | 检索当前工作负载管理(WLM)配置详情。 | redshift://wlm/configuration |
redshift://schema/{schema_name}/tables | 列出指定{schema_name}内的所有可访问表和视图。 | redshift://schema/public/tables |
请求时替换{script_path}和{schema_name}的实际值。
模式/表的可访问性取决于通过REDSHIFT_SECRET_ARN配置的Redshift用户的权限。
| 工具名称 | 描述 | 关键参数(必需*) | 示例调用 |
|---|---|---|---|
handle_check_cluster_health | 使用一组诊断SQL脚本对Redshift集群进行健康评估。 | level(可选),time_window_days(可选) | use_mcp_tool("redshift-admin", "handle_check_cluster_health", {"level": "full"}) |
handle_diagnose_locks | 识别集群中的活动锁争用和阻塞会话。 | min_wait_seconds(可选) | use_mcp_tool("redshift-admin", "handle_diagnose_locks", {"min_wait_seconds": 10}) |
handle_diagnose_query_performance | 分析特定查询的执行性能,包括计划、指标和历史数据。 | query_id* | use_mcp_tool("redshift-admin", "handle_diagnose_query_performance", {"query_id": 12345}) |
handle_execute_ad_hoc_query | 执行用户通过Redshift Data API提供的任意SQL查询。设计为逃生机制。 | sql_query* | use_mcp_tool("redshift-admin", "handle_execute_ad_hoc_query", {"sql_query": "SELECT ..."}) |
handle_get_table_definition | 检索特定表的DDL(数据定义语言)语句(SHOW TABLE)。 | schema_name,table_name | use_mcp_tool("redshift-admin", "handle_get_table_definition", {"schema_name": "public", ...}) |
handle_inspect_table | 检索有关特定Redshift表的详细信息,涵盖设计、存储、健康和使用情况。 | schema_name,table_name | use_mcp_tool("redshift-admin", "handle_inspect_table", {"schema_name": "analytics", ...}) |
handle_monitor_workload | 使用各种诊断脚本在指定时间窗口内分析集群的工作负载模式。 | time_window_days(可选),top_n_queries(可选) | use_mcp_tool("redshift-admin", "handle_monitor_workload", {"time_window_days": 7}) |