startino/unrestricted-postgres-mcp
If you are the rightful owner of unrestricted-postgres-mcp and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
A powerful Model Context Protocol server providing full read-write access to PostgreSQL databases, enabling LLMs to query and modify database content with transaction management and safety controls.
Unrestricted PostgreSQL MCP Server
Fork of mcp-postgres-full-access by Syahiid Nur Kamil - Enhanced with modern tooling, transaction recovery tools, and improved developer experience.
A powerful Model Context Protocol (MCP) server that provides full read-write access to PostgreSQL databases. Unlike read-only MCP servers, this implementation enables Large Language Models to safely query, modify, and manage database content with comprehensive transaction management and recovery capabilities.
⨠Key Features
š Safe Full Database Access
- Read Operations: Execute SELECT queries with automatic read-only transaction protection
- Write Operations: Safely perform INSERT, UPDATE, DELETE with explicit transaction management
- Schema Management: Create, alter, and drop database objects with DDL operations
- Maintenance Commands: Execute VACUUM, ANALYZE, and CREATE DATABASE operations
š”ļø Advanced Transaction Management
- Explicit Commit/Rollback: Two-step process requiring user confirmation for all changes
- Transaction Recovery: Tools to recover from aborted transaction states
- Timeout Protection: Automatic rollback of abandoned transactions
- Session Reset: Complete session reset capabilities for stuck connections
- Connection Status: Real-time monitoring of database connection state
š Rich Schema Information
- Comprehensive Metadata: Detailed column information, data types, constraints
- Relationship Mapping: Primary keys, foreign keys, and index information
- Performance Insights: Row count estimates and table statistics
- Documentation Support: Table and column descriptions when available
š§ Developer Experience
- Modern Build System: Powered by Vite for fast development and building
- TypeScript Support: Full type safety and IntelliSense support
- Hot Reload: Instant development server with
vite-node
- Comprehensive Tooling: 10+ specialized tools for database operations
š Quick Start
Prerequisites
- Node.js 18.0.0 or higher
- PostgreSQL 12.0 or higher
- Claude Desktop (for MCP integration)
Installation
# Install globally
npm install -g unrestricted-postgres-mcp
# Or use with npx (recommended)
npx unrestricted-postgres-mcp postgresql://user:password@localhost:5432/database
Claude Desktop Configuration
Add to your 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"
}
}
}
}
š ļø Available Tools
Query & Analysis Tools
Tool | Purpose | Parameters |
---|---|---|
execute_query | Execute read-only SELECT queries | sql (string) |
list_tables | List all tables in a schema | schema_name (string, optional) |
describe_table | Get detailed table schema information | table_name (string), schema_name (string, optional) |
Data Modification Tools
Tool | Purpose | Parameters |
---|---|---|
execute_dml_ddl_dcl_tcl | Execute data modification operations | sql (string) |
execute_maintenance | Run maintenance commands (VACUUM, ANALYZE) | sql (string) |
execute_commit | Commit a pending transaction | transaction_id (string) |
execute_rollback | Rollback a pending transaction | transaction_id (string) |
Transaction Management & Recovery
Tool | Purpose | Parameters |
---|---|---|
list_transactions | List all active transactions | None |
force_rollback | Force rollback aborted transactions | None |
reset_session | Reset database session completely | None |
get_connection_status | Check connection and transaction state | None |
š Workflow Examples
Safe Data Modification Workflow
- Analyze: Use
execute_query
to understand current data - Modify: Use
execute_dml_ddl_dcl_tcl
to make changes - Review: Transaction is created but not committed
- Decide: Use
execute_commit
orexecute_rollback
based on review
Recovery from Stuck Transactions
- Diagnose: Use
get_connection_status
to check state - List: Use
list_transactions
to see active transactions - Recover: Use
force_rollback
to clear aborted state - Reset: If needed, use
reset_session
for complete reset
Schema Exploration
- Discover: Use
list_tables
to see available tables - Examine: Use
describe_table
for detailed schema information - Query: Use
execute_query
to explore data patterns
āļø Configuration
Environment Variables
Variable | Default | Description |
---|---|---|
TRANSACTION_TIMEOUT_MS | 15000 | Transaction timeout in milliseconds |
MAX_CONCURRENT_TRANSACTIONS | 10 | Maximum concurrent transactions |
PG_STATEMENT_TIMEOUT_MS | 30000 | SQL statement execution timeout |
PG_MAX_CONNECTIONS | 20 | Maximum PostgreSQL connections |
ENABLE_TRANSACTION_MONITOR | true | Enable transaction monitoring |
MONITOR_INTERVAL_MS | 5000 | Transaction monitor check interval |
Security Best Practices
-
Create Dedicated Database User:
CREATE USER mcp_user WITH PASSWORD 'secure_password'; GRANT SELECT, INSERT, UPDATE, DELETE ON specific_tables TO mcp_user;
-
Use "Allow Once" for All Operations:
- Never select "Always allow" for database modifications
- Review all SQL operations before approval
-
Test with Non-Production Data:
- Use a development database for initial testing
- Implement regular backups before extensive use
šļø Development
Prerequisites
- Node.js 18+
- pnpm (recommended) or npm
- PostgreSQL database
Setup
# 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
Available Scripts
Script | Purpose |
---|---|
pnpm run dev | Start development server with hot reload |
pnpm run build | Build for production |
pnpm run start | Run production build |
pnpm run type-check | Run TypeScript type checking |
Project Structure
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
š Troubleshooting
Common Issues
"Current transaction is aborted" Error:
- Use
get_connection_status
to diagnose - Use
force_rollback
to clear aborted state - If still stuck, use
reset_session
Connection Timeouts:
- Check
PG_STATEMENT_TIMEOUT_MS
setting - Increase
TRANSACTION_TIMEOUT_MS
if needed - Verify database connection limits
Permission Errors:
- Verify database user permissions
- Check table-specific access rights
- Ensure user has necessary schema access
š Comparison with Official MCP Servers
Feature | This Server | Official PostgreSQL MCP |
---|---|---|
Read Access | ā Enhanced | ā Basic |
Write Access | ā Full Support | ā Not Available |
Transaction Management | ā Advanced | ā Not Available |
Schema Details | ā Comprehensive | ā Basic |
Recovery Tools | ā Multiple Options | ā Not Available |
Type Safety | ā Full TypeScript | ā Not Available |
Modern Tooling | ā Vite + Hot Reload | ā Not Available |
š¤ Contributing
We welcome contributions! Please see our for details.
Quick Contribution Guide
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature
- Make your changes
- Run tests:
pnpm run type-check && pnpm run build
- Commit changes:
git commit -m 'Add amazing feature'
- Push to branch:
git push origin feature/amazing-feature
- Open a Pull Request
š License
This project is licensed under the Apache License Version 2.0 - see the file for details.
š„ Credits
- Original Creator: Syahiid Nur Kamil - mcp-postgres-full-access
- Current Maintainer: Jonas Lindberg - Enhanced version with modern tooling and recovery capabilities
š Acknowledgments
- Model Context Protocol for the MCP specification
- Anthropic for Claude and MCP integration
- PostgreSQL for the excellent database system
- Vite for the modern build tooling
ā ļø Important: This server provides full database access. Always review operations before committing changes and use appropriate database user permissions for security.