Skip to main content

A secure, read-only PostgreSQL Model Context Protocol (MCP) server for AI assistant integration with automatic database discovery and connection management

Project description

PostgreSQL MCP Server

A secure, read-only PostgreSQL Model Context Protocol (MCP) server for AI assistant integration with automatic database discovery and connection management.

What It Does

This tool provides two main components:

  • Query Executor (execute_query.py): Interactive PostgreSQL query execution with support for direct queries, file input, and interactive mode
  • MCP Server (mcp_postgresql_server.py): AI assistant integration that allows natural language database interactions through Claude and other MCP clients

Key Features

  • Automatic Database Discovery: Scans project files for database configurations and presents options for selection
  • Read-Only Safety: Blocks write operations by default (configurable)
  • Interactive Configuration: Guides users through database setup with automatic .env file management
  • Connection Pooling: Efficient PostgreSQL connection management
  • AI Integration: Works seamlessly with Claude Desktop and Cursor IDE

Quick Start

Prerequisites: Ensure you have uv installed.

Using uvx (Recommended)

Run directly without installation:

# MCP Server for AI integration
uvx mcp-postgresql-server

# Query executor
uvx --from mcp-postgresql-server execute-query "SELECT version()"

Configuration

Set your database connection:

export MCP_POSTGRESQL_DATABASE="postgres://username:password@hostname:port/database"

Or create a .env file:

MCP_POSTGRESQL_DATABASE=postgres://username:password@hostname:port/database
MCP_POSTGRESQL_READ_ONLY=true
MCP_POSTGRESQL_LOG_FILE=./mcp-postgresql.log
MCP_POSTGRESQL_LOG_LEVEL=info

Usage Examples

Query Executor

Using uvx (recommended):

# Interactive mode
uvx --from mcp-postgresql-server execute-query

# Direct query
uvx --from mcp-postgresql-server execute-query "SELECT COUNT(*) FROM users"

# From file
uvx --from mcp-postgresql-server execute-query --file queries.sql

Using Python directly:

# Interactive mode
python3 execute_query.py

# Direct query
python3 execute_query.py "SELECT COUNT(*) FROM users"

# From file
python3 execute_query.py --file queries.sql

MCP Server with Claude Code (globally)

Add to ~/.claude.json:

{
  "mcpServers": {
    "mcp-postgres": {
      "command": "uvx",
      "args": ["mcp-postgresql-server"],
      "env": {
        "MCP_POSTGRESQL_CWD": "${PWD}"
      }
    }
  }
}

Then ask Claude:

  • "Show me all tables in the database"
  • "Execute SELECT COUNT(*) FROM users"
  • "Help me write a query to find recent orders"

Cursor IDE Integration

Create/update mcp.json in your project root:

{
  "mcpServers": {
    "mcp-postgresql-server": {
      "command": "uvx",
      "args": ["mcp-postgresql-server"],
      "env": {
        "MCP_POSTGRESQL_CWD": "."
      }
    }
  }
}

Configuration Discovery

The server automatically discovers database configurations from:

  • .env files
  • .conf and .ini files
  • .json and .yaml files
  • Individual parameter files (db.host, db.user, etc.)

When multiple configurations are found, it presents an interactive selection menu. Saved configurations are stored in a .env file for future use using MCP_POSTGRESQL_DATABASE variable.

Environment Variables

Variable Description Default
MCP_POSTGRESQL_DATABASE PostgreSQL connection URI Required
MCP_POSTGRESQL_READ_ONLY Enable read-only mode true
MCP_POSTGRESQL_LOG_FILE Log file path (optional) None
MCP_POSTGRESQL_LOG_LEVEL Log level (debug, info, warning, error, critical) error
MCP_POSTGRESQL_CWD Path of the project working directory .

Security

  • Read-only by default: Blocks INSERT, UPDATE, CREATE, ALTER, DROP operations
  • Connection validation: Validates all database connections before use
  • Credential protection: Supports environment variables and .env files
  • Error handling: Comprehensive error reporting without exposing sensitive data

Common Issues

Connection errors: Verify MCP_POSTGRESQL_DATABASE format: postgres://user:password@host:port/database

Permission issues: Ensure database user has appropriate SELECT permissions

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mcp_postgresql_server-1.4.0.tar.gz (21.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mcp_postgresql_server-1.4.0-py3-none-any.whl (22.5 kB view details)

Uploaded Python 3

File details

Details for the file mcp_postgresql_server-1.4.0.tar.gz.

File metadata

File hashes

Hashes for mcp_postgresql_server-1.4.0.tar.gz
Algorithm Hash digest
SHA256 47057faa940e7848b87d697ab31ab993c5cca69c8ef1332f7e6f73dff79e0e4d
MD5 80d50dba71f3aa09f59eb801cac815ca
BLAKE2b-256 2caf1bdbea1bf0edfb675dd786eab7a40665581ad935f5c0b39e1e8b8da5f8c7

See more details on using hashes here.

File details

Details for the file mcp_postgresql_server-1.4.0-py3-none-any.whl.

File metadata

File hashes

Hashes for mcp_postgresql_server-1.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2a06863d98006be77d1c2475a5fe253cd07043c7c3e578cae0a924d175ed4d01
MD5 e16cd8bd2d4d02f40efc74f6420aa870
BLAKE2b-256 ec786617eb88d0ccf80b9fcd99211080b1d40d9c42cadaf79926adccf8a463db

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page