Neon PostgreSQL MCP服务器
一个模型上下文协议(MCP)服务器,提供对Neon PostgreSQL数据库的安全访问,使像Claude这样的人工智能助手能够通过标准化工具与您的数据库进行交互。
概述
此MCP服务器允许AI助手:
- 使用SELECT语句查询数据
- 执行数据修改(INSERT、UPDATE、DELETE)
- 列出可用表格
- 描述表格结构
服务器实现了多个版本来演示不同的方法:
pg-mcp-server.js-使用最新MCP SDK实现现代ES模块index.js-基于类架构的CommonJS实现basic-pg-server.js-通过基本的MCP协议处理简化实现src/index.ts-TypeScript实现(需要编译)
特性
- 安全连接:与Neon PostgreSQL的SSL/TLS加密连接
- 连接池:高效的数据库连接管理
- 类型安全:所有操作的输入验证
- 错误处理:通过有意义的消息进行全面的错误处理
- MCP合规性:全面实施模型上下文协议规范
先决条件
- Node.js 18+
- Neon PostgreSQL数据库帐户和连接字符串
- MCP兼容客户端(例如,Claude Desktop、Cursor IDE)
安装
- 克隆此存储库:
git clone
cd neon-pg-server- 安装依赖项:
npm install- 将Neon PostgreSQL连接字符串设置为环境变量:
export NEON_PG_CONNECTION_STRING="postgresql://user:password@host/database?sslmode=require"用法
运行服务器
选择一个可用的实现:
ES模块版本(推荐):
node pg-mcp-server.jsCommonJS版本:
node index.js基本版本:
node basic-pg-server.jsTypeScript版本:
# First compile
npm run build
# Then run
node build/index.js与Claude Desktop集成
- 打开克劳德桌面设置
- 导航到开发人员→ MCP服务器
- 添加新的服务器配置:
{
"neon-postgres": {
"command": "node",
"args": ["/path/to/neon-pg-server/pg-mcp-server.js"],
"env": {
"NEON_PG_CONNECTION_STRING": "your-connection-string-here"
}
}
}与Cursor IDE集成
- 打开文件→ 偏好设置→ 光标设置→ MCP
- 添加新服务器
- 使用服务器脚本的路径进行配置
可用工具
1.查询工具
执行SELECT查询以从数据库中检索数据。
参数:
sql(必需):要执行的SQL SELECT查询params(可选):参数化查询的查询参数数组
例子:
SELECT * FROM users WHERE age > $12.执行工具
执行修改数据的SQL语句(INSERT、UPDATE、DELETE)。
参数:
sql(必需):要执行的SQL语句params(可选):语句参数数组
例子:
INSERT INTO users (name, email) VALUES ($1, $2)3.获取表格工具
列出数据库公共架构中的所有表。
参数: 无
退货: 表名数组
4.描述表格工具
获取特定表的详细结构信息。
参数:
table(必填):要描述的表的名称
退货:
- 列信息(名称、数据类型、可空、默认值)
- 主键列
安全考虑
- 连接字符串:将连接字符串存储为环境变量,切勿将其提交给版本控制
- SSL/TLS:服务器强制与Neon PostgreSQL建立SSL连接
- 查询验证:服务器验证:
- 查询工具只接受SELECT和WITH语句 - Execute工具拒绝SELECT语句(请改用Query工具)
- 参数化查询:使用参数化查询来防止SQL注入
配置
连接池设置
服务器使用以下默认池设置:
- 最大连接数:10
- 空闲超时:30秒
您可以在连接池初始化中修改这些:
this.pool = new pg.Pool({
connectionString: CONNECTION_STRING,
ssl: { rejectUnauthorized: true },
max: 10, // Adjust as needed
idleTimeoutMillis: 30000 // Adjust as needed
});发展
项目结构
neon-pg-server/
├── pg-mcp-server.js # Main ES module implementation
├── index.js # CommonJS implementation
├── basic-pg-server.js # Basic implementation
├── src/
│ └── index.ts # TypeScript implementation
├── build/ # Compiled TypeScript output
├── package.json # Project dependencies
├── tsconfig.json # TypeScript configuration
└── README.md # This file基于TypeScript构建
如果你想使用TypeScript版本:
# Install dev dependencies
npm install
# Compile TypeScript
npx tsc
# Run compiled version
node build/index.js故障排除
连接问题
- 验证您的连接字符串是否正确
- 确保您的Neon数据库处于活动状态
- 检查SSL是否已启用(Neon需要)
MCP客户端问题
- 确保MCP客户端可以找到服务器可执行文件
- 检查环境变量是否正确传递给服务器
- 查看服务器日志(输出到stderr)中的错误消息
查询错误
- 验证SQL语法是否正确
- 检查表和列是否存在
- 确保数据库操作的适当权限
贡献
欢迎投稿!拜托:
- 分叉存储库
- 创建要素分支
- 添加新功能的测试
- 提交拉取请求
许可证
MIT许可证-有关详细信息,请参阅许可证文件
致谢
- 与 模型上下文协议SDK
- 由...驱动 Neon PostgreSQL
- 受到MCP生态系统和社区的启发
