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
- 如果在中配置,将自动检测服务器
mcp.json - 工具将出现在MCP设置中的“可用工具”下
- 代理将在相关时自动使用这些工具
其他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
安装
- 克隆此存储库或将文件复制到本地系统
- 安装依赖项:
npm install- 构建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:///schema/)
- 列出特定架构中的所有表 - 从数据库元数据中自动发现
- 持微软签名的表模式 (
redshift://///schema)
- 每个表的JSON模式信息 - 包括列名、数据类型和Redshift特定的属性(分布和排序键)
- 样品数据 (
redshift://///sample)
- 每个表中的示例行(限制为5行) - 敏感数据会自动编辑
- 统计 (
redshift://///statistics)
- 表统计信息,包括大小、行数和创建时间 - 分布和压缩信息
安全考虑
此服务器:
- 对查询使用只读事务以防止修改
- 对输入进行消毒以防止SQL注入
- 不在资源URI中公开原始密码信息
- 自动编辑样本结果中的敏感数据(电子邮件、电话)
- 应在安全的环境中使用,因为它可以访问您的数据库
光标交互示例
以下是连接Cursor后可以问的一些示例问题:
- “显示公共架构中的所有表”
- “客户表的结构是什么?”
- “查找包含客户信息的所有表”
- “编写一个查询,按状态统计订单”
- “显示产品表中的示例数据”
扩展服务器
您可以通过以下方式扩展此服务器:
- 在中添加新的资源类型
ListResourcesRequestSchema和ReadResourceRequestSchema处理器 - 在中添加新工具
ListToolsRequestSchema和CallToolRequestSchema处理器 - 增强安全功能或添加身份验证
发展
对于开发,您可以使用 npm run dev 命令,它使用ts节点直接运行TypeScript代码,而无需预编译。
许可证
麻省理工学院
