使用说明
PostgreSQL MCP服务器
基于Docker 模型上下文协议(MCP) 提供全面PostgreSQL数据库交互功能的服务器。该服务器使AI助手和其他MCP客户端能够通过标准化的接口查询、检查和管理PostgreSQL数据库。
特性
🔍 查询执行
- 使用参数绑定执行原始SQL查询
- 在事务中运行多个查询
- 使用EXPLAIN/EXPLAIN ANALYZE获取查询执行计划
📊 架构检查
- 列出数据库、模式、表、视图和函数
- 用列、类型和约束描述表结构
- 查看索引及其定义
- 获取表大小和行数统计信息
📝 数据操作
- 插入单行或多行
- 使用WHERE子句进行更新和删除
- 从JSON数组批量插入
- 将表数据导出为JSON
⚙️ 数据库管理
- 查看数据库统计信息和连接信息
- 列出并终止活动连接
- 运行VACUUM和ANALYZE操作
- 检查桌子是否膨胀
快速开始
先决条件
- Docker和Docker Compose
- MCP客户端(例如,Claude Desktop、带MCP扩展的VS Code)
安装
-
克隆仓库
git clone <repository-url> cd postgresql-mcp-server -
配置环境变量
cp .env.example .env # Edit .env with your preferred settings -
启动服务
docker-compose up -d -
验证服务器是否正在运行
docker-compose logs mcp-server
配置
服务器是通过环境变量配置的。看 .env.example 对于所有可用选项:
| 变量 | 描述 | 默认值 |
|---|---|---|
POSTGRES_HOST |
PostgreSQL主机 | postgres |
POSTGRES_PORT |
PostgreSQL端口 | 5432 |
POSTGRES_DB |
数据库名称 | postgres |
POSTGRES_USER |
数据库用户 | postgres |
POSTGRES_PASSWORD |
数据库密码 | postgres |
POSTGRES_MAX_CONNECTIONS |
最大连接池大小 | 20 |
与MCP客户端一起使用
克劳德桌面版
添加到您的Claude Desktop配置(~/Library/Application Support/Claude/claude_desktop_config.json 在macOS上):
{
"mcpServers": {
"postgresql": {
"command": "docker",
"args": ["exec", "-i", "postgresql-mcp-server", "node", "dist/index.js"]
}
}
}
VS代码MCP扩展
添加到您的VS Code MCP设置中:
{
"mcp.servers": {
"postgresql": {
"command": "docker",
"args": ["exec", "-i", "postgresql-mcp-server", "node", "dist/index.js"]
}
}
}
可用命令
服务器提供 20+命令 横跨4个类别。看 COMMANDS.md 详细文档。
查询工具
execute_query-使用参数绑定执行SQL查询execute_transaction-在事务中运行多个查询explain_query-获取查询执行计划
架构工具
list_databases-列出所有数据库list_schemas-列出当前数据库中的架构list_tables-列出架构中的表describe_table-获取表结构和约束list_indexes-列出表的索引list_views-列出架构中的视图list_functions-列出存储的函数/过程get_table_size-获取表大小和行数
数据工具
insert_data-插入一行update_data-使用WHERE子句更新行delete_data-使用WHERE子句删除行bulk_insert-从JSON插入多行export_table-将表数据导出为JSON
管理工具
get_database_stats-获取数据库统计信息list_active_connections-显示活动连接terminate_connection-通过PID终止连接vacuum_table-在桌子上运行VACUUManalyze_table-在表上运行ANALYZEcheck_table_bloat-检查桌子是否膨胀
发展
从源头构建
# Install dependencies
npm install
# Build TypeScript
npm run build
# Run locally (requires PostgreSQL)
npm start
项目结构
postgresql-mcp-server/
├── src/
│ ├── index.ts # Main server entry point
│ ├── database.ts # Database connection manager
│ └── tools/
│ ├── query.ts # Query execution tools
│ ├── schema.ts # Schema inspection tools
│ ├── data.ts # Data manipulation tools
│ └── admin.ts # Administrative tools
├── Dockerfile # Multi-stage Docker build
├── docker-compose.yml # Docker Compose configuration
└── package.json # Node.js dependencies
Docker命令
# Start services
docker-compose up -d
# Stop services
docker-compose down
# View logs
docker-compose logs -f mcp-server
# Rebuild after code changes
docker-compose up -d --build
# Access PostgreSQL directly
docker-compose exec postgres psql -U postgres
安全注意事项
- 凭证:从不承诺
.env具有真实凭据的文件 - 网络MCP服务器和PostgreSQL通过私有Docker网络进行通信
- 权限:服务器在容器中以非root用户身份运行
- SQL注入:始终使用参数化查询(工具支持参数绑定)
故障排除
服务器无法连接到PostgreSQL
- 检查PostgreSQL是否健康:
docker-compose ps - 验证中的环境变量
.env - 检查日志:
docker-compose logs postgres
MCP客户端无法连接到服务器
- 确保容器正在运行:
docker ps - 验证MCP客户端配置中的命令
- 检查服务器日志:
docker-compose logs mcp-server
权限被拒绝错误
- 确保您的数据库用户具有适当的权限
- 检查PostgreSQL日志中的身份验证错误
贡献
欢迎投稿!请随时提交拉取请求。
支持这个项目
如果您发现此MSSQL MCP服务器对您的项目有用,请考虑支持其开发!
☕ 成为赞助人
该项目由独立开发人员维护。您的支持有助于我们:
- 🚀 添加新功能和改进
- 🐛 修复错误并提高稳定性
- 📚 创建更好的文档和教程
- 🔒 增强安全功能
- 🎯 提供更快的支持和更新
支持者福利
顾客可以访问:
- 🎯 优先支持 -在需要帮助时更快地获得帮助
- 📝 抢先体验 -在公开发布之前尝试新功能
- 💬 直接通信 -影响项目路线图
- 🎓 独家教程 -高级使用指南和示例
- 🏆 认可 -您的名字在我们的SUPPORTERS.md文件中
其他支持方式
- ⭐ 标记此存储库 在GitHub上
- 🐛 报告错误 并通过以下方式请求功能 GitHub问题
- 📖 改进文档 通过提交pull请求
- 💬 传话 -与同事分享并在社交媒体上分享
许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。