subnetmarco/pgmcp

๐Ÿ—„๏ธ Databases
0 Views
0 Installs

๐ŸŽ๏ธ ๐Ÿ  - Natural language PostgreSQL queries with automatic streaming, read-only safety, and universal database compatibility.

Quick Install

One-Click IDE Configuration
claude_desktop_config.json
{
  "mcpServers": {
    "subnetmarco-pgmcp": {
      "command": "npx",
      "args": [
        "-y",
        "subnetmarco-pgmcp"
      ]
    }
  }
}
Or

Using an AI coding agent (Claude Code, Cursor, etc.)? Copy a ready-made prompt that tells it to fetch the setup instructions and install this server for you.

Documentation Overview

ci Go Report Card License

PGMCP - PostgreSQL Model Context Protocol Server

PGMCP connects AI assistants to any PostgreSQL database through natural language queries. Ask questions in plain English and get structured SQL results with automatic streaming and robust error handling.

Works with: Cursor, Claude Desktop, VS Code extensions, and any MCP-compatible client

Quick Start

PGMCP connects to your existing PostgreSQL database and makes it accessible to AI assistants through natural language queries.

Prerequisites

  • PostgreSQL database (existing database with your schema)
  • OpenAI API key (optional, for AI-powered SQL generation)

Basic Usage

# Set up environment variables
export DATABASE_URL="postgres://user:password@localhost:5432/your-existing-db"
export OPENAI_API_KEY="your-api-key"  # Optional

# Run server (using pre-compiled binary)
./pgmcp-server

# Test with client in another terminal
./pgmcp-client -ask "What tables do I have?" -format table
./pgmcp-client -ask "Who is the customer that has placed the most orders?" -format table
./pgmcp-client -search "john" -format table

Here is how it works:

๐Ÿ‘ค User / AI Assistant
         โ”‚
         โ”‚ "Who are the top customers?"
         โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                    Any MCP Client                           โ”‚
โ”‚                                                             โ”‚
โ”‚  PGMCP CLI  โ”‚  Cursor  โ”‚  Claude Desktop  โ”‚  VS Code  โ”‚ ... โ”‚
โ”‚  JSON/CSV   โ”‚  Chat    โ”‚  AI Assistant    โ”‚  Editor   โ”‚     โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
         โ”‚
         โ”‚ Streamable HTTP / MCP Protocol
         โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                    PGMCP Server                             โ”‚
โ”‚                                                             โ”‚
โ”‚  ๐Ÿ”’ Security    ๐Ÿง  AI Engine      ๐ŸŒŠ Streaming              โ”‚
โ”‚  โ€ข Input Valid  โ€ข Schema Cache    โ€ข Auto-Pagination         โ”‚
โ”‚  โ€ข Audit Log    โ€ข OpenAI API      โ€ข Memory Management       โ”‚
โ”‚  โ€ข SQL Guard    โ€ข Error Recovery  โ€ข Connection Pool         โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
         โ”‚
         โ”‚ Read-Only SQL Queries
         โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                Your PostgreSQL Database                     โ”‚
โ”‚                                                             โ”‚
โ”‚  Any Schema: E-commerce, Analytics, CRM, etc.               โ”‚
โ”‚  Tables โ€ข Views โ€ข Indexes โ€ข Functions                       โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

External AI Services:
OpenAI API โ€ข Anthropic โ€ข Local LLMs (Ollama, etc.)

Key Benefits:
โœ… Works with ANY PostgreSQL database (no assumptions about schema)
โœ… No schema modifications required  
โœ… Read-only access (100% safe)
โœ… Automatic streaming for large results
โœ… Intelligent query understanding (singular vs plural)
โœ… Robust error handling (graceful AI failure recovery)
โœ… PostgreSQL case sensitivity support (mixed-case tables)
โœ… Production-ready security and performance
โœ… Universal database compatibility
โœ… Multiple output formats (table, JSON, CSV)
โœ… Free-text search across all columns
โœ… Authentication support
โœ… Comprehensive testing suite

Features

  • Natural Language to SQL: Ask questions in plain English
  • Automatic Streaming: Handles large result sets automatically
  • Safe Read-Only Access: Prevents any write operations
  • Text Search: Search across all text columns
  • Multiple Output Formats: Table, JSON, and CSV
  • PostgreSQL Case Sensitivity: Handles mixed-case table names correctly
  • Universal Compatibility: Works with any PostgreSQL database

Environment Variables

Required:

  • DATABASE_URL: PostgreSQL connection string to your existing database

Optional:

  • OPENAI_API_KEY: OpenAI API key for AI-powered SQL generation
  • OPENAI_MODEL: Model to use (default: "gpt-4o-mini")
  • HTTP_ADDR: Server address (default: ":8080")
  • HTTP_PATH: MCP endpoint path (default: "/mcp")
  • AUTH_BEARER: Bearer token for authentication

Installation

Download Pre-compiled Binaries

  1. Go to GitHub Releases
  2. Download the binary for your platform (Linux, macOS, Windows)
  3. Extract and run:
# Example for macOS/Linux
tar xzf pgmcp_*.tar.gz
cd pgmcp_*
./pgmcp-server

Alternative Options

# Homebrew (macOS/Linux) - Available after first release
brew tap subnetmarco/homebrew-tap
brew install pgmcp

# Build from source
go build -o pgmcp-server ./server
go build -o pgmcp-client ./client

Add -ldflags="-s -w -extldflags=-static" -trimpath if you want to get stripped executables (no debug info):

go build -ldflags="-s -w -extldflags=-static" -trimpath -o pgmcp-server ./server
go build -ldflags="-s -w -extldflags=-static" -trimpath -o pgmcp-client ./client

Docker/Kubernetes

# Docker
docker run -e DATABASE_URL="postgres://user:pass@host:5432/db" \
  -p 8080:8080 ghcr.io/subnetmarco/pgmcp:latest

# Kubernetes (see examples/ directory for full manifests)
kubectl create secret generic pgmcp-secret \
  --from-literal=database-url="postgres://user:pass@host:5432/db"
kubectl apply -f examples/k8s/

Quick Start

# Set up database (optional - works with any existing PostgreSQL database)
export DATABASE_URL="postgres://user:password@localhost:5432/mydb"
psql $DATABASE_URL < schema.sql

# Run server
export OPENAI_API_KEY="your-api-key"
./pgmcp-server

# Test with client
./pgmcp-client -ask "Who is the user that places the most orders?" -format table
./pgmcp-client -ask "Show me the top 40 most reviewed items in the marketplace" -format table

Environment Variables

Required:

  • DATABASE_URL: PostgreSQL connection string

Optional:

  • OPENAI_API_KEY: OpenAI API key for SQL generation
  • OPENAI_MODEL: Model to use (default: "gpt-4o-mini")
  • HTTP_ADDR: Server address (default: ":8080")
  • HTTP_PATH: MCP endpoint path (default: "/mcp")
  • AUTH_BEARER: Bearer token for authentication

Usage Examples

# Ask questions in natural language
./pgmcp-client -ask "What are the top 5 customers?" -format table
./pgmcp-client -ask "How many orders were placed today?" -format json

# Search across all text fields
./pgmcp-client -search "john" -format table

# Multiple questions at once
./pgmcp-client -ask "Show tables" -ask "Count users" -format table

# Different output formats
./pgmcp-client -ask "Export all data" -format csv -max-rows 1000

Example Database

The project includes two schemas:

  • schema.sql: Full Amazon-like marketplace with 5,000+ records
  • schema_minimal.sql: Minimal test schema with mixed-case "Categories" table

Key features:

  • Mixed-case table names ("Categories") for testing case sensitivity
  • Composite primary keys (order_items) for testing AI assumptions
  • Realistic relationships and data types

Use your own database:

export DATABASE_URL="postgres://user:pass@host:5432/your_db"
./pgmcp-server
./pgmcp-client -ask "What tables do I have?"

AI Error Handling

When AI generates incorrect SQL, PGMCP handles it gracefully:

{
  "error": "Column not found in generated query",
  "suggestion": "Try rephrasing your question or ask about specific tables",
  "original_sql": "SELECT non_existent_column FROM table..."
}

Instead of crashing, the system provides helpful feedback and continues operating.

MCP Integration

Cursor Integration

# Start server
export DATABASE_URL="postgres://user:pass@localhost:5432/your_db"
./pgmcp-server

Add to Cursor settings:

{
  "mcp.servers": {
    "pgmcp": {
      "transport": {
        "type": "http",
        "url": "http://localhost:8080/mcp"
      }
    }
  }
}

Claude Desktop Integration

Edit ~/.config/claude-desktop/claude_desktop_config.json:

{
  "mcpServers": {
    "pgmcp": {
      "transport": {
        "type": "http",
        "url": "http://localhost:8080/mcp"
      }
    }
  }
}

API Tools

  • ask: Natural language questions โ†’ SQL queries with automatic streaming
  • search: Free-text search across all database text columns
  • stream: Advanced streaming for very large result sets with pagination

Safety Features

  • Read-Only Enforcement: Blocks write operations (INSERT, UPDATE, DELETE, etc.)
  • Query Timeouts: Prevents long-running queries
  • Input Validation: Sanitizes and validates all user input
  • Transaction Isolation: All queries run in read-only transactions

Testing

# Unit tests
go test ./server -v

# Integration tests (requires PostgreSQL)
go test ./server -tags=integration -v

License

Apache 2.0 - See LICENSE file for details.

Related Projects


PGMCP makes your PostgreSQL database accessible to AI assistants through natural language while maintaining security through read-only access controls.

Related MCP Servers

modelcontextprotocol/server-postgresVerified

๐Ÿ“‡ ๐Ÿ  - PostgreSQL database integration with schema inspection and query capabilities

๐Ÿ—„๏ธ Databases1 views
Aiven-Open/mcp-aiven

๐Ÿ โ˜๏ธ ๐ŸŽ–๏ธ - Navigate your Aiven projects and interact with the PostgreSQLยฎ, Apache Kafkaยฎ, ClickHouseยฎ and OpenSearchยฎ services

๐Ÿ—„๏ธ Databases0 views
alexanderzuev/supabase-mcp-server

Supabase MCP Server with support for SQL query execution and database exploration tools

๐Ÿ—„๏ธ Databases0 views
aliyun/alibabacloud-tablestore-mcp-server

โ˜• ๐Ÿ โ˜๏ธ - MCP service for Tablestore, features include adding documents, semantic search for documents based on vectors and scalars, RAG-friendly, and serverless.

๐Ÿ—„๏ธ Databases0 views

Engagement

Views
0
Installs
0
Upvotes
0

Views and upvotes are unique per visitor network (hashed IP). Installs count copy actions.

Status

Health: Not checked yet

We have not completed a health check for this listing yet.

No check timestamp yet.

Unclaimed listing (imported or pending owner verification). Claim it โ†’
โ˜… Spotlight Slot

Feature Your MCP Server

Get maximum visibility for your server across our directory, search results, and detail pages.

Spotlight Your Server

Own this project?

This directory is pre-filled from public sources. Claim via GitHub README, site badge, or DNS TXT to get the verified badge and attach your website.

Claim this listing

Promote this listing

Optional paid placement. Free listings stay free forever.

Share & Embed

Add our SVG badge (dark/light directory styles) or embeddable widget to your site.