这个项目是一个基于Model Context Protocol (MCP) 的服务器,专门用于与Amazon Redshift数据库交互。它使得大型语言模型(LLM)或AI助手能够以安全、标准化的方式访问和操作Redshift数据,支持自然语言查询、数据库结构理解、监控和诊断等功能。
主要功能点
- 安全连接Redshift: 通过AWS Redshift Data API连接,利用AWS Secrets Manager管理凭据。
- 数据库架构发现: 暴露MCP资源,用于列出schema、表和WLM配置。
- 只读查询执行: 提供工具安全执行任意SELECT查询。
- 表和Schema操作: 提供工具列出schema、表,获取表定义(DDL)。
- 数据库诊断和监控: 提供工具进行集群健康检查、分析查询性能、诊断锁争用、监控工作负载。
- 标准化接口: 遵循MCP规范,可与兼容的MCP客户端(如Claude Desktop, Cursor IDE)集成。
安装步骤
- 环境准备: 确保您已安装 Python 3.8+ 以及 'uv'(推荐包管理器)或 'pip'。
- 克隆项目: 使用 Git 克隆项目仓库到您的本地机器。
- 进入目录: 导航到克隆的项目根目录。
- 安装依赖: 运行以下命令安装项目所需的库:
- 如果使用 'uv': 'uv pip install -r requirements.txt'
- 如果使用 'pip': 'pip install -r requirements.txt'
服务器配置
本MCP服务器需要配置您的Amazon Redshift连接信息。这些信息通过环境变量提供。您需要在启动服务器的环境中设置这些变量。
重要环境变量 (必须设置):
- 'REDSHIFT_CLUSTER_ID': 您的 Amazon Redshift 集群标识符。
- 'REDSHIFT_DATABASE': 要连接的数据库名称。
- 'REDSHIFT_SECRET_ARN': 存储 Redshift 数据库用户凭据的 AWS Secrets Manager Secret 的 ARN。
- 'AWS_REGION' 或 'AWS_DEFAULT_REGION': 您的 AWS 区域(Data API 和 Secrets Manager 所在区域)。
可选环境变量:
- 'AWS_PROFILE': 要使用的 AWS 配置文件名(如果您不使用默认凭据链)。
示例 (非用于MCP客户端配置,仅说明环境变量):
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" # export AWS_PROFILE="my-redshift-profile"
在 MCP 客户端中配置服务器:
MCP 客户端(如 Claude Desktop 或 Cursor IDE)通常通过一个 JSON 文件(例如 'mcp.json')来配置服务器连接。配置 MCP 服务器时,您需要指定启动服务器的命令 ('command') 及其参数 ('args'),并确保上述环境变量在该命令执行时可用。
以下是一个示例 MCP 客户端配置块。请根据您的实际安装路径和MCP客户端的配置方法进行调整。切勿将敏感信息(如 ARN、密钥)直接写在此 JSON 文件中。大多数 MCP 客户端提供了更安全的方式来配置环境变量,请查阅您的客户端文档。
{ "mcpServers": { "redshift-utils-mcp": { // command 和 args 指向您的 MCP 服务器启动脚本或模块 // 如果您使用 uv 安装,通常是 uvx <模块名> "command": "uvx", "args": ["redshift_utils_mcp"], // 或者如果您使用 pip 并希望直接运行模块: // "command": "python", // "args": ["-m", "redshift_utils_mcp"], // IMPORTANT: MCP客户端应通过其自身的界面或配置文件安全地管理环境变量 // DO NOT store secrets directly in this JSON block in production. // The 'env' block below is conceptual - consult your client documentation! // "env": { // "REDSHIFT_CLUSTER_ID": "your-cluster-id", // "REDSHIFT_DATABASE": "your_database_name", // "REDSHIFT_SECRET_ARN": "arn:aws:secretsmanager:...", // "AWS_REGION": "us-east-1" // } } } }
确保用于运行服务器的 AWS 凭据(通过环境变量、共享配置文件或 EC2/ECS/EKS IAM 角色)拥有访问 Secrets Manager 秘密 ('secretsmanager:GetSecretValue') 和调用 Redshift Data API ('redshift-data:*') 的权限。存储在 Secrets Manager 中的 Redshift 数据库用户需要执行服务器所需操作(如 'SELECT' 系统视图和目标表)的权限。
基本使用方法
配置并连接 MCP 服务器后,您的 LLM 客户端将能够发现并利用服务器提供的 资源 (Resources) 和 工具 (Tools)。
- 访问资源: 您可以直接通过客户端的界面或交互方式访问服务器暴露的数据,例如查看可用的 schema 列表 ('redshift://schemas') 或特定 schema 下的表列表 ('redshift://schema/public/tables')。
- 调用工具: LLM 可以根据您的自然语言请求,选择并调用服务器提供的工具来执行具体任务,例如:
- 提问关于某个表的信息 → LLM 调用 'handle_inspect_table' 工具。
- 要求执行一个 SQL 查询 → LLM 调用 'handle_execute_ad_hoc_query' 工具。
- 询问集群的健康状况 → LLM 调用 'handle_check_cluster_health' 工具。
- 询问是否有锁阻塞 → LLM 调用 'handle_diagnose_locks' 工具。
- 询问某个查询的性能 → LLM 调用 'handle_diagnose_query_performance' 工具。
服务器将处理这些请求,与 Redshift Data API 交互,并将结果返回给客户端。
信息
分类
数据库与文件