Skip to main content
Glama

pgsql-mcp

License: MIT PyPI - Version

A PostgreSQL MCP server with index tuning, explain plans, health checks, and safe SQL execution.

Features

  • Database Health - analyze index health, connection utilization, buffer cache, vacuum health, and more

  • Index Tuning - find optimal indexes for your workload using industrial-strength algorithms

  • Query Plans - review EXPLAIN plans and simulate hypothetical indexes

  • Schema Intelligence - context-aware SQL generation

  • Safe SQL Execution - configurable read-only mode for production use

Quick Start

Claude Code / Cloud IDEs

For Claude Code or cloud-based IDEs, add to your MCP configuration:

{
  "mcpServers": {
    "postgres": {
      "command": "uvx",
      "args": ["pgsql-mcp", "--access-mode=unrestricted"],
      "env": {
        "DATABASE_URI": "postgresql://username:password@localhost:5432/dbname"
      }
    }
  }
}

VS Code / Cursor / Windsurf

Using SSE (recommended for IDEs):

  1. Start the server:

docker run -p 8000:8000 \
  -e DATABASE_URI=postgresql://username:password@localhost:5432/dbname \
  pgsql-mcp --access-mode=unrestricted --transport=sse
  1. Add to your MCP config (mcp.json for Cursor, mcp_config.json for Windsurf):

{
  "mcpServers": {
    "postgres": {
      "type": "sse",
      "url": "http://localhost:8000/sse"
    }
  }
}

Note: Windsurf uses serverUrl instead of url.

Using stdio:

{
  "mcpServers": {
    "postgres": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-e", "DATABASE_URI",
        "pgsql-mcp",
        "--access-mode=unrestricted"
      ],
      "env": {
        "DATABASE_URI": "postgresql://username:password@localhost:5432/dbname"
      }
    }
  }
}

Docker

docker pull pgsql-mcp

Run with stdio:

docker run -i --rm \
  -e DATABASE_URI=postgresql://username:password@localhost:5432/dbname \
  pgsql-mcp --access-mode=unrestricted

Run with SSE:

docker run -p 8000:8000 \
  -e DATABASE_URI=postgresql://username:password@localhost:5432/dbname \
  pgsql-mcp --access-mode=unrestricted --transport=sse

Python Installation

pipx install pgsql-mcp
# or
uv pip install pgsql-mcp

Access Modes

  • --access-mode=unrestricted - Full read/write access (development)

  • --access-mode=restricted - Read-only with resource limits (production)

Optional: Postgres Extensions

For full index tuning capabilities, install these extensions:

CREATE EXTENSION IF NOT EXISTS pg_stat_statements;
CREATE EXTENSION IF NOT EXISTS hypopg;

Available Tools

Tool

Description

list_schemas

List all database schemas

list_objects

List tables, views, sequences in a schema

get_object_details

Get columns, constraints, indexes for an object

execute_sql

Execute SQL (read-only in restricted mode)

explain_query

Get query execution plans with hypothetical index support

get_top_queries

Find slowest queries via pg_stat_statements

analyze_workload_indexes

Recommend indexes for your workload

analyze_query_indexes

Recommend indexes for specific queries

analyze_db_health

Run comprehensive health checks

License

MIT

-
security - not tested
A
license - permissive license
-
quality - not tested

Resources

Looking for Admin?

Admins can modify the Dockerfile, update the server description, and track usage metrics. If you are the server author, to access the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/surajmandalcell/pgsql-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server