Redshift MCP服务器

这是一个为Amazon Redshift实现的模型上下文协议(MCP)服务器,提供数据库模式检查和只读查询功能,适用于数据仓库管理和SQL开发。

  • by paschmaria
  • JavaScript
  • 本地部署
  • 3 星标
  • 更新于
在 GitHub 查看 paschmaria/redshift-mcp-server

使用说明

Redshift MCP服务器(TypeScript)

这是一个用TypeScript实现的Amazon Redshift的模型上下文协议(MCP)服务器。它遵循Anthropic的实现模式,为Cursor IDE和其他MCP兼容客户端提供有关Redshift数据仓库的丰富上下文信息。此服务器使LLM能够检查数据库模式并执行只读查询。

与MCP客户端集成

项目特定配置

创建一个 .cursor/mcp.json 项目目录中的文件:

{
  "mcpServers": {
    "redshift-mcp": {
      "command": "node",
      "args": ["path/to/dist/index.js"],
      "env": {
        "DATABASE_URL": "redshift://username:password@hostname:port/database?ssl=true"
      }
    }
  }
}

全局配置

要在所有项目中使用,请创建 ~/.cursor/mcp.json 在您的主目录中使用相同的配置。

客户端特定设置

光标IDE

  1. 如果在中配置,将自动检测服务器 mcp.json
  2. 工具将出现在MCP设置中的“可用工具”下
  3. 代理将在相关时自动使用这些工具

其他MCP客户端

使用stdio传输配置服务器:

{
  "servers": [
    {
      "name": "redshift-mcp",
      "transport": {
        "kind": "stdio",
        "command": ["node", "path/to/dist/index.js"]
      }
    }
  ]
}

先决条件

  • Node.js 16或更高版本
  • TypeScript
  • 访问Amazon Redshift集群
  • Redshift和SQL的基本知识
  • 已安装游标IDE

安装

  1. 克隆此存储库或将文件复制到本地系统
  2. 安装依赖项:
npm install
  1. 构建TypeScript代码:
npm run build

用法

服务器需要通过Redshift连接URL DATABASE_URL 环境变量:

export DATABASE_URL="redshift://username:password@hostname:port/database?ssl=true"
npm start

或者你可以直接运行:

DATABASE_URL="redshift://username:password@hostname:port/database?ssl=true" node dist/index.js

对于开发,您可以使用:

DATABASE_URL="redshift://username:password@hostname:port/database?ssl=true" npm run dev

连接URL格式

redshift://username:password@hostname:port/database?ssl=true
  • 用户名:您的Redshift用户名
  • 密码:您的Redshift密码
  • 主机名:您的Redshift集群端点
  • 端口:红移通常为5439
  • 数据库:数据库的名称
  • 安全套接层:设置为“true”以实现安全连接(推荐)

其他连接参数:

  • ssl=true:安全连接所需(推荐)
  • timeout=10:连接超时(秒)
  • keepalives=1:启用TCP保活
  • keepalives_idle=130:TCP保持活动空闲时间

项目结构

  • src/index.ts:TypeScript的主要实现
  • dist/:编译的JavaScript输出
  • package.json:项目依赖关系和脚本
  • tsconfig.json:TypeScript配置

组件

游标中可用的工具

  • 怎么翻译

    • 对连接的Redshift数据库执行只读SQL查询
    • 示例:“编写一个查询以显示公共架构中的所有表”
  • describe_table

    • 获取特定表格的详细信息
    • 示例:“显示用户表的结构”
  • find_column

    • 查找包含具有特定名称模式的列的表
    • 示例:“查找所有列中包含'email'的表”

游标可用资源

服务器提供Cursor可以使用的架构信息:

  • 架构列表 (redshift://<host>/schema/<schema_name>)

    • 列出特定架构中的所有表
    • 从数据库元数据中自动发现
  • 持微软签名的表模式 (redshift://<host>/<schema>/<table>/schema)

    • 每个表的JSON模式信息
    • 包括列名、数据类型和Redshift特定的属性(分布和排序键)
  • 样品数据 (redshift://<host>/<schema>/<table>/sample)

    • 每个表中的示例行(限制为5行)
    • 敏感数据会自动编辑
  • 统计 (redshift://<host>/<schema>/<table>/statistics)

    • 表统计信息,包括大小、行数和创建时间
    • 分布和压缩信息

安全考虑

此服务器:

  • 对查询使用只读事务以防止修改
  • 对输入进行消毒以防止SQL注入
  • 不在资源URI中公开原始密码信息
  • 自动编辑样本结果中的敏感数据(电子邮件、电话)
  • 应在安全的环境中使用,因为它可以访问您的数据库

光标交互示例

以下是连接Cursor后可以问的一些示例问题:

  1. “显示公共架构中的所有表”
  2. “客户表的结构是什么?”
  3. “查找包含客户信息的所有表”
  4. “编写一个查询,按状态统计订单”
  5. “显示产品表中的示例数据”

扩展服务器

您可以通过以下方式扩展此服务器:

  1. 在中添加新的资源类型 ListResourcesRequestSchema 和 ReadResourceRequestSchema 处理器
  2. 在中添加新工具 ListToolsRequestSchema 和 CallToolRequestSchema 处理器
  3. 增强安全功能或添加身份验证

发展

对于开发,您可以使用 npm run dev 命令,它使用ts节点直接运行TypeScript代码,而无需预编译。

许可证

麻省理工学院