Skip to main content
Glama
Postgres MCP Server

Postgres MCP Server

Postgres MCP Server

npm version Tests GitHub issues

A Model Context Protocol (MCP) server that provides secure database access to PostgreSQL through Kysely ORM. This server enables Claude Desktop to interact with PostgreSQL databases using natural language.

Features

  • MCP Tools: Query execution, table listing, schema inspection, and constraint information

  • Type Safety: Full TypeScript support with typed inputs/outputs

  • Connection Pooling: Configurable connection limits with idle timeout

  • Error Handling: Graceful error messages for connection and query issues

  • Security: Parameterized queries to prevent SQL injection

Related MCP server: PostgreSQL MCP Server

Installation

npx postgres-mcp-server

Configuration

Create a .env file with your database credentials:

DB_HOST=127.0.0.1
DB_PORT=5432
DB_USER=postgres
DB_PASSWORD=your_password_here
DB_NAME=postgres
DB_SSL=true

Available Tools

Tool

Description

Required Parameters

Optional Parameters

query

Execute SQL queries with pagination support

sql (string)

pageSize (1-500), offset (number), parameters (array)

describe_table

Get table structure and column details

schema (string), table (string)

-

list_tables

List all tables in a schema

schema (string)

-

list_schemas

List all schemas in the database

-

includeSystemSchemas (boolean)

get_constraints

Get table constraints (PK, FK, etc.)

schema (string), table (string)

-

list_indexes

List indexes for a table or schema

schema (string)

table (string)

list_views

List views in a schema

schema (string)

-

list_functions

List functions and procedures

schema (string)

-

explain_query

Get query execution plan

sql (string)

analyze (boolean), format (text/json/xml/yaml)

get_table_stats

Get table size and statistics

schema (string)

table (string)

Key Features

  • Pagination: Query tool supports up to 500 rows per page with automatic LIMIT/OFFSET handling

  • Security: Parameterized queries prevent SQL injection, READ_ONLY mode by default

  • Type Safety: Full TypeScript support with Zod schema validation

Claude Desktop Configuration

Add this server to your Claude Desktop configuration file:

Edit claude_desktop_config.json:

{
  "mcpServers": {
    "postgres-mcp-server": {
      "command": "npx",
      "args": ["postgres-mcp-server"],
      "env": {
        "DB_HOST": "127.0.0.1",
        "DB_PORT": "5432",
        "DB_USER": "postgres",
        "DB_PASSWORD": "your_password_here",
        "DB_NAME": "your_database_name",
        "DB_SSL": "true"
      }
    }
  }
}

Configuration File Locations

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Development

# Clone and install dependencies
git clone https://github.com/bonboncinnabon/postgres-mcp.git
cd postgres-mcp-server
npm install

# Run in development mode with hot reload
npm run dev

# Build for production
npm run build

# Run tests
npm run test

# Run specific test suites
npm run test:unit
npm run test:integration

Environment Variables

Variable

Default

Description

DB_HOST

127.0.0.1

PostgreSQL host

DB_PORT

5432

PostgreSQL port

DB_USER

postgres

Database user

DB_PASSWORD

required

Database password

DB_NAME

postgres

Database name

DB_SSL

true

Enable SSL connection

READ_ONLY

true

Restrict to SELECT/WITH/EXPLAIN queries

QUERY_TIMEOUT

30000

Query timeout in milliseconds

MAX_PAGE_SIZE

500

Maximum rows per page

DEFAULT_PAGE_SIZE

100

Default page size when not specified

License

ISC

Available Tools

10 tools
describe_tableB

Get table structure including columns, constraints, and size statistics

Inputs: table (required), schema (required).

diagnose_databaseC

Composite database health check: cache, connections, vacuum, indexes, sequences

Inputs: include_queries, include_connections.

explain_queryC

Get query execution plan (EXPLAIN)

Inputs: sql (required), costs, format, analyze, +1 more.

get_connectionsB

Show active database connections, utilization, and idle-in-transaction warnings

Inputs: group_by, include_queries.

get_slow_queriesC

Analyze slow queries via pg_stat_statements with filtering and sorting

Inputs: limit, sort_by, min_calls, min_duration_ms, +1 more.

list_indexesC

List indexes for a table or schema

Inputs: schema (required), table.

list_objectsB

List tables, views, or functions in a schema

Inputs: type (required), schema.

list_schemasC

List all schemas in the database

Inputs: includeSystemSchemas.

queryC

Execute SQL with pagination and parameterization

Inputs: sql (required), offset, pageSize, parameters.

search_objectsB

Find tables, columns, functions, views by name pattern across schemas

Inputs: pattern (required), limit, schemas, object_types.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.2/5.0

    Scored across 10 tools

    Disambiguation4/5

    Most tools have distinct purposes (describe_table for structure, list_schemas/list_indexes for enumeration, query for execution, and diagnostic tools). Minor overlap exists: list_objects and search_objects both enumerate objects (one by schema, one by pattern), and diagnose_database overlaps in scope with get_connections and get_slow_queries. Descriptions are clear enough to guide selection.

    Naming Consistency4/5

    Nearly all tools follow a clean verb_noun pattern (describe_table, list_schemas, list_indexes, explain_query, search_objects, get_connections, get_slow_queries, list_objects), with diagnose_database fitting the same shape. The lone outlier is 'query', a bare verb that breaks the convention.

    Tool Count5/5

    Ten tools is well-scoped for a Postgres introspection/diagnostics server, with each tool covering a distinct area of database exploration and execution. No redundancy that would bloat the surface.

    Completeness4/5

    Good coverage of introspection (schemas, tables, indexes, objects), query execution, and health diagnostics for a read/diagnostic-oriented server. Writes are handled via the generic query tool, but there is no explicit transaction or schema-modification surface, a minor gap agents can work around.

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      B
      quality
      D
      maintenance
      A TypeScript-based Model Context Protocol server that enables AI assistants to perform secure database operations on PostgreSQL databases through structured tool interfaces.
      8
      22 npm
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      A Model Context Protocol (MCP) Server that allows AI models to securely interact with data hosted in Azure Database for PostgreSQL. It enables natural language querying, schema exploration, and data management through MCP clients like Claude Desktop and Visual Studio Code.
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      A Model Context Protocol (MCP) server that provides secure, role-based access to PostgreSQL databases for AI agents.
      MIT