关于 pgEdge MCP Server for Postgres
pgEdge Postgres MCP Server 让 MCP 兼容客户端对 PostgreSQL 数据库执行 SQL 查询,并附带自然语言 Agent 以辅助生成 SQL。适合内部工具、开发者工作流等所有用户都可信的环境,不适用于面向公众的应用。
主要功能
- 01默认在只读事务中执行查询
- 02提供数据库统计等资源与查询、schema 分析等工具
- 03混合检索(BM25+MMR)与嵌入生成
- 04提供 Web 界面、Go 命令行客户端及 HTTP 模式
- 05用户与 API 令牌认证,支持 TLS
- 06支持 PostgreSQL 14 及以上版本
适用场景
- 01开发者通过 Claude Desktop 或 Cursor 查询数据库
- 02用自然语言生成并执行 SQL 查询
- 03团队内部通过 Web 界面探索数据库结构
MCP 相关
该项目是 MCP 服务,向 MCP 客户端暴露 PostgreSQL 的查询工具、统计资源与提示词。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
docker run -i --rm ghcr.io/pgedge/postgres-mcp:latest本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
ghcr.io/pgedge/postgres-mcp:lateststdio工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
pgEdge Postgres MCP 服务和自然语言 Agent
- 关于 pgEdge Postgres MCP 服务
- 安装 MCP 服务
- 配置 MCP 服务
- 配置和使用客户端应用
- 查看服务日志
- 身份验证和安全
- 参考
- 高级主题
- 面向开发者
- 贡献
- 访问在线帮助
- 故障排除
- 发行说明
- 许可证 pgEdge Postgres Model Context Protocol(MCP)服务支持通过兼容 MCP 的 客户端对 PostgreSQL 数据库执行 SQL 查询。自然语言 Agent 提供辅助 功能,让你能够使用自然语言构造 SQL 查询。
支持的版本: PostgreSQL 14 及更高版本。
不适用于面向公众的应用程序:此 MCP 服务会向大模型提供对整个数据库架构和数据的只读访问权限。 它仅应在内部工具、开发工作流或所有用户都可信的环境中使用。对于面向公众的 应用程序,请考虑改用 pgEdge RAG Server。 详情请参阅 选择合适的解决方案指南。
快速入门
快速入门指南介绍了所有受支持客户端的安装和设置:
| 客户端 | 传输方式 | 适用场景 |
|---|---|---|
| CLI(Stdio) | Stdio | 本地单用户开发 |
| CLI(HTTP) | HTTP | 多用户或远程访问 |
| Web UI | HTTP | 基于浏览器的聊天界面 |
| Claude Code | Stdio | Anthropic CLI Agent |
| Claude Desktop | Stdio | Anthropic 桌面应用 |
| Cursor | Stdio | AI 代码编辑器 |
| Windsurf | Stdio | Codeium 代码编辑器 |
| VS Code Copilot | Stdio | GitHub Copilot Agent |
如需使用示例数据进行引导式演示,请参阅 Northwind 快速入门演示。
主要功能
- 只读保护 - 默认情况下,所有查询都在只读事务中运行
- 资源 - 访问 PostgreSQL 统计信息等
- 工具 - 查询执行、架构分析、高级混合搜索(BM25+MMR)、嵌入生成、资源读取等
- 提示词 - 语义搜索设置、数据库探索、查询诊断等引导式工作流
- 生产级聊天客户端 - 功能齐全的 Go 客户端,支持 Anthropic 提示词缓存(降低 90% 成本)
- HTTP/HTTPS 模式 - 通过用户和令牌身份验证直接访问 API
- Web 界面 - 现代化的 React 界面,提供 AI 驱动的聊天功能,可通过自然语言与数据库交互
- Docker 支持 - 在 GitHub Container Registry 上提供预构建镜像,并支持使用 Docker Compose 部署
- 安全 - 支持 TLS、用户和令牌身份验证,并强制只读
- 热重载 - 无需重启服务即可自动重新加载身份验证文件
开发
先决条件
- Go 1.21 或更高版本
- PostgreSQL 14 或更高版本(用于测试)
- golangci-lint v1.x(用于代码检查)
设置代码检查工具
项目使用 golangci-lint v1.x。使用以下命令安装:
go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest
注意:配置文件 .golangci.yml
兼容 golangci-lint v1.x(不兼容 v2)。
构建
git clone https://github.com/pgEdge/pgedge-postgres-mcp.git
cd pgedge-postgres-mcp
make build
测试
# Run all tests
make test
# Run server tests with a database
export TEST_PGEDGE_POSTGRES_CONNECTION_STRING=\
"postgres://localhost/postgres?sslmode=disable"
go test ./...
# Run with coverage
go test -v -cover ./...
# Run linting
make lint
Web UI 测试
Web UI 有一套全面的测试。详情请参阅 web/TEST_SUMMARY.md。
cd web
npm test # Run all tests
npm run test:watch # Watch mode
npm run test:coverage # With coverage
安全
- 强制使用只读事务(可按数据库配置)
- 用户和 API 令牌身份验证,并支持过期时间
- TLS/HTTPS 支持
- SHA256 令牌哈希
- 强制文件权限(0600)
- 输入验证和清理
如需完整的安全文档,请参阅安全指南。
故障排除
Claude Desktop 中看不到工具?
- 在配置中使用绝对路径
- 完全重启 Claude Desktop
- 检查 JSON 语法
数据库连接错误?
- 确保在启动服务前已配置数据库连接(通过配置文件、环境变量或命令行标志)
- 确认 PostgreSQL 正在运行:
pg_isready - 检查连接参数是否正确
如需详细解决方案,请参阅故障排除指南。
支持
如需报告软件问题,请访问: GitHub Issues
如需了解更多信息,请访问 docs.pgedge.com
本项目采用 PostgreSQL License 许可。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。