无限制PostgreSQL MCP服务器
 ](LICENSE) ](https://nodejs.org/)  
叉子 Syahiid Nur Kamil完全访问mcp postgres -通过现代工具、事务恢复工具和改进的开发人员体验进行了增强。
一个强大的 模型上下文协议(MCP)服务器 这提供了 完全读写访问 PostgreSQL数据库。与只读MCP服务器不同,此实现使大型语言模型能够通过全面的事务管理和恢复功能安全地查询、修改和管理数据库内容。
✨ 主要特点
🔐 安全完整数据库访问
- 读取操作:使用自动只读事务保护执行SELECT查询
- 写入操作:通过显式事务管理安全执行INSERT、UPDATE、DELETE
- 模式管理:使用DDL操作创建、更改和删除数据库对象
- 维护命令:执行VACUUM、ANALYZE和CREATE DATABASE操作
🛡️ 高级交易管理
- 显式提交/回滚:两步流程要求用户确认所有更改
- 事务恢复:从中止的事务状态恢复的工具
- 超时保护:自动回滚已放弃的交易
- 会话重置:为卡住的连接提供完整的会话重置功能
- 连接状态:实时监控数据库连接状态
📊 丰富的架构信息
- 综合元数据:详细的列信息、数据类型、约束
- 关系映射:主键、外键和索引信息
- 性能洞察:行数估计和表统计
- 文档支持:表和列说明(如有)
🔧 开发者体验
- 现代建筑系统:由Vite提供技术支持,实现快速发展和建设
- TypeScript支持:完全类型安全和IntelliSense支持
- 热重载:即时开发服务器
vite-node - 综合工具:10多种数据库操作专用工具
🚀 快速开始
先决条件
- Node.js 18.0.0或更高
- PostgreSQL 12.0或更高
- Claude桌面版 (用于MCP集成)
安装
# Install globally
npm install -g unrestricted-postgres-mcp
# Or use with npx (recommended)
npx unrestricted-postgres-mcp postgresql://user:password@localhost:5432/databaseClaude桌面配置
添加到您的 claude_desktop_config.json:
{
"mcpServers": {
"postgres-unrestricted": {
"command": "npx",
"args": [
"-y",
"unrestricted-postgres-mcp",
"postgresql://username:password@localhost:5432/database"
],
"env": {
"TRANSACTION_TIMEOUT_MS": "60000",
"MAX_CONCURRENT_TRANSACTIONS": "5",
"PG_STATEMENT_TIMEOUT_MS": "30000"
}
}
}
}🛠️ 可用工具
查询和分析工具
| 工具 | 用途 | 参数 |
|---|---|---|
execute_query | 执行只读SELECT查询 | sql (字符串) |
get_database_schema | 获取全面的数据库架构概述 | 无 |
search_text | 使用全文搜索跨表搜索文本 | search_term (字符串), tables (数组,可选), columns (数组,可选), limit (数字,可选) |
list_tables | 列出架构中的所有表 | schema_name (字符串,可选) |
describe_table | 获取详细的表架构信息 | table_name (字符串), schema_name (字符串,可选) |
数据修改工具
| 工具 | 用途 | 参数 |
|---|---|---|
execute_dml_ddl_dcl_tcl | 执行数据修改操作(自动提交) | sql (字符串) |
execute_maintenance | 运行维护命令(VACUUM、ANALYZE) | sql (字符串) |
execute_rollback | 回滚待处理的交易 | transaction_id (字符串) |
交易管理和恢复
| 工具 | 用途 | 参数 |
|---|---|---|
list_transactions | 列出所有活动交易 | 无 |
force_rollback | 强制回滚中止的事务 | 无 |
reset_session | 完全重置数据库会话 | 无 |
🔄 工作流示例
典型使用模式
- 查询数据以了解当前状态
- 执行修改(自动提交)
- 再次查询以验证更改
从卡住的交易中恢复
- 诊断:使用
list_transactions检查状态 - 列表:使用
list_transactions查看活动交易 - 恢复:使用
force_rollback清除中止状态 - 重置:如果需要,使用
reset_session用于完全重置
模式探索
- 发现:使用
list_tables查看可用表格 - 检查:使用
describe_table有关详细的模式信息 - 查询:使用
execute_query探索数据模式
⚙️ 配置
环境变量
| 变量 | 默认值 | 描述 |
|---|---|---|
TRANSACTION_TIMEOUT_MS | 15000 | 事务超时(毫秒) |
MAX_CONCURRENT_TRANSACTIONS | 10 | 最大并发事务数 |
PG_STATEMENT_TIMEOUT_MS | 30000 | SQL语句执行超时 |
PG_MAX_CONNECTIONS | 20 | PostgreSQL最大连接数 |
ENABLE_TRANSACTION_MONITOR | true | 启用交易监控 |
MONITOR_INTERVAL_MS | 5000 | 事务监视器检查间隔 |
安全最佳实践
- 创建专用数据库用户:
CREATE USER mcp_user WITH PASSWORD 'secure_password';
GRANT SELECT, INSERT, UPDATE, DELETE ON specific_tables TO mcp_user;- 对所有操作使用“允许一次”:
- 切勿选择“始终允许”进行数据库修改 - 在批准之前检查所有SQL操作
- 使用非生产数据进行测试:
- 使用开发数据库进行初始测试 - 在广泛使用之前实施定期备份
🏗️ 发展
先决条件
- Node.js 18+
- pnpm(推荐)或npm
- PostgreSQL数据库
设置
# Clone the repository
git clone https://github.com/your-username/unrestricted-postgres-mcp.git
cd unrestricted-postgres-mcp
# Install dependencies
pnpm install
# Create environment file
cp .env.example .env
# Edit .env with your database connection details
# Start development server
pnpm run dev
# Build for production
pnpm run build可用脚本
| 脚本 | 目的 |
|---|---|
pnpm run dev | 使用热重新加载启动开发服务器 |
pnpm run build | 为生产而建 |
pnpm run start | 运行生产构建 |
pnpm run type-check | 运行TypeScript类型检查 |
项目结构
src/
├── index.ts # Main server entry point
├── lib/
│ ├── config.ts # Configuration management
│ ├── tool-handlers.ts # Tool implementation functions
│ ├── transaction-manager.ts # Transaction lifecycle management
│ ├── types.ts # TypeScript type definitions
│ └── utils.ts # Utility functions
└── types.ts # Additional type definitions🔍 故障排除
常见问题
“当前事务已中止”错误:
- 使用
list_transactions诊断 - 使用
force_rollback清除中止状态 - 如果仍然卡住,请使用
reset_session
连接超时:
- 检查
PG_STATEMENT_TIMEOUT_MS设置 - 增加
TRANSACTION_TIMEOUT_MS如有需要 - 验证数据库连接限制
权限错误:
- 验证数据库用户权限
- 检查表特定的访问权限
- 确保用户具有必要的架构访问权限
📊 与官方MCP服务器的比较
| 功能 | 此服务器 | PostgreSQL官方MCP |
|---|---|---|
| 读取权限 | ✅ 增强 | ✅ 基础 |
| 写入权限 | ✅ 全力支持 | ❌ 不可用 |
| 交易管理 | ✅ 高级 | ❌ 不可用 |
| 架构详细信息 | ✅ 综合 | ✅ 基础 |
| 恢复工具 | ✅ 多种选择 | ❌ 不可用 |
| 类型安全 | ✅ 完整TypeScript | ❌ 不可用 |
| 现代工具 | ✅ Vite+热重载 | ❌ 不可用 |
🤝 贡献
我们欢迎捐款!请查看我们的 贡献指南 了解详情。
快速贡献指南
- 分叉存储库
- 创建要素分支:
git checkout -b feature/amazing-feature - 进行更改
- 运行测试:
pnpm run type-check && pnpm run build - 提交更改:
git commit -m 'Add amazing feature' - 推送到分支:
git push origin feature/amazing-feature - 打开拉取请求
📄 许可证
该项目根据 Apache许可证版本2.0 -看看 许可证 文件以获取详细信息。
👥 鸣谢
- 当前维护人员: 乔纳斯·林德伯格 -具有现代工具和恢复功能的增强版本
🙏 致谢
- 模型上下文协议 对于MCP规范
- Anthropic 用于Claude和MCP集成
- PostgreSQL 优秀的数据库系统
- 维特 用于现代构建工具
______________________________________________________________________
⚠️ 重要:此服务器提供完整的数据库访问权限。在提交更改之前,请务必检查操作,并使用适当的数据库用户权限以确保安全。
