返回市场
红移工具MCP

红移工具MCP

作者:vinodismyname4 星标更新:2025-09-02

项目介绍

Redshift Utils MCP Server

<div align="center"> <!-- Container for side-by-side images --> <div style="display: flex; justify-content: center; align-items: center; gap: 20px;"> <img src="docs/banner.png" width="320"> <a href="https://glama.ai/mcp/servers/@vinodismyname/redshift-utils-mcp"> <img width="400" src="https://gips3.baidu.com/it/u=304163683,2406204542&fm=3081&app=3081&f=PNG?w=760&h=400" alt="redshift-utils-mcp MCP server" /> </div> <!-- Stats in a clean format --> <p> <a href="https://pypi.org/project/redshift-utils-mcp/"><img src="https://img.shields.io/pypi/v/redshift-utils-mcp.svg" alt="PyPI 版本"></a> <a href="https://pypi.org/project/redshift-utils-mcp/"><img src="https://img.shields.io/pypi/dm/redshift-utils-mcp.svg" alt="下载量"></a> <a href="https://pypi.org/project/redshift-utils-mcp/"><img src="https://img.shields.io/pypi/pyversions/redshift-utils-mcp.svg" alt="Python 版本"></a> <img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="许可证"> <img src="https://img.shields.io/badge/Language-Python-blue.svg" alt="Python"> </p> </div>

概述

该项目实现了一个专门用于与Amazon Redshift数据库交互的模型上下文协议(MCP)服务器。

它弥合了大型语言模型(LLMs)或AI助手(如Claude、Cursor或自定义应用程序)与您的Redshift数据仓库之间的差距,使用户能够通过自然语言或AI驱动的提示来查询数据、理解数据库结构以及执行监控和诊断操作。

此服务器适用于希望以结构化和安全的方式将其Amazon Redshift数据环境与LLM能力直接集成的开发人员、数据分析师或团队。

目录

特性

  • 安全的Redshift连接(通过Data API): 使用Boto3通过AWS Redshift Data API连接到您的Amazon Redshift集群,并利用AWS Secrets Manager通过环境变量安全地管理凭证。
  • 🔍 模式发现: 提供MCP资源以列出指定模式内的模式和表。
  • 📊 元数据及统计信息: 提供一个工具(handle_inspect_table)来收集详细的表元数据、统计信息(如大小、行数、偏斜度、统计信息过时状态)和维护状态。
  • 📝 只读查询执行: 提供一个安全的MCP工具(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、顶级查询和资源使用情况。
  • 📝 DDL检索: 提供一个工具(handle_get_table_definition)来检索指定表的SHOW TABLE输出(DDL)。
  • 🛡️ 输入净化: 在适用的情况下,通过Boto3 Redshift Data API客户端使用参数化查询来缓解SQL注入风险。
  • 🧩 标准化的MCP接口: 遵循模型上下文协议规范,以便与兼容客户端(例如Claude Desktop、Cursor IDE、自定义应用程序)无缝集成。

前提条件

软件:

  • Python 3.10+
  • uv(推荐的包管理器)或pip

基础设施及访问:

  • 访问Amazon Redshift集群。
  • 具有使用Redshift Data API (redshift-data:*) 和访问指定Secrets Manager密钥 (secretsmanager:GetSecretValue) 权限的AWS账户。
  • 存储在AWS Secrets Manager中的Redshift用户帐户。此用户需要具有执行此服务器启用的操作所需的权限(例如,CONNECT 到数据库,SELECT 目标表,SELECT 相关系统视图如 pg_classpg_namespacesvv_all_schemassvv_tablessvv_table_info)。强烈建议使用最小特权原则的角色。参见安全性考虑

凭据:

您的Redshift连接详情由AWS Secrets Manager管理,服务器通过Redshift Data API连接。您需要:

  • Redshift集群标识符。
  • 集群内的数据库名称。
  • 包含数据库凭证(用户名和密码)的AWS Secrets Manager密钥的ARN。
  • 集群和密钥所在的AWS区域。
  • 如果不使用默认凭证/区域,则可选的AWS配置文件名称。

这些详情将在配置部分中通过环境变量设置。

安装

从PyPI安装(推荐)

最简单的安装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加载的工具如uvpython-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_ARNAWS Secrets Manager中Redshift凭证的ARN。arn:aws:secretsmanager:us-east-1:123456789012:secret:mysecret-abcdef
AWS_REGIONData 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

连接到Claude Desktop / Anthropic Console:

在您的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 Code CLI:

使用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

连接到Cursor IDE:

  1. 使用使用/快速开始部分中的说明本地启动MCP服务器。
  2. 在Cursor中打开命令面板(Cmd/Ctrl + Shift + P)。
  3. 输入“连接到MCP服务器”或导航到MCP设置。
  4. 添加一个新的服务器连接。
  5. 选择stdio传输类型。
  6. 输入启动服务器所需的命令和参数(uvx run redshift_utils_mcp)。确保运行的命令可以访问任何必要的环境变量。
  7. Cursor应检测到服务器及其可用的工具/资源。

可用的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用户的权限。

可用的MCP工具

工具名称描述关键参数(必需*)示例调用
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_nametable_nameuse_mcp_tool("redshift-admin", "handle_get_table_definition", {"schema_name": "public", ...})
handle_inspect_table检索有关特定Redshift表的详细信息,涵盖设计、存储、健康和使用情况。schema_nametable_nameuse_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})

待办事项

  • 改善提示选项
  • 增加更多凭据方法的支持
  • 增加对Redshift Serverless的支持

参考资料