Skip to main content
Glama

pg-context

Model Context Protocol (MCP) server that gives AI coding assistants deep PostgreSQL context: live schemas as DDL, index health, foreign key associations, query execution plans, and performance statistics.

pg-context connects directly to your PostgreSQL database in read-only mode and exposes tools and resources for AI assistants such as Cursor, Claude Code, Cline, and Antigravity.


Why pg-context?

Generic SQL tools often execute arbitrary queries without giving the AI assistant structural context. This causes models to guess column names, hallucinate relations, and generate invalid joins.

pg-context resolves this problem by providing:

  • Zero-guess schema context: Exports real table structures formatted as PostgreSQL CREATE TABLE DDL statements with foreign key comments and index definitions.

  • Read-only security: Automatically sets default_transaction_read_only = ON on every client connection and rejects mutating SQL statements (such as DROP, DELETE, UPDATE, INSERT, TRUNCATE, ALTER).

  • Optimization insights: Detects unindexed foreign keys, high sequential scan ratios, unused indexes, and slow queries from pg_stat_statements.

  • Extension awareness: Identifies PostGIS, TimescaleDB, and pgvector extensions.


Related MCP server: PostgreSQL MCP Server

Quick Start

You can run pg-context directly via npx without manual installation:

npx -y pg-context-mcp

Or install it globally:

npm install -g pg-context-mcp
pg-context-mcp

Configuration

pg-context reads connection parameters from environment variables or standard PostgreSQL connection strings:

Variable

Description

Default

DATABASE_URL

Standard PostgreSQL connection URI

undefined

PGHOST

Database host

localhost

PGPORT

Database port

5432

PGDATABASE

Database name

postgres

PGUSER

Database user

postgres

PGPASSWORD

Database password

""

PGSSL

Enable SSL connection (true/false)

false

PG_SCHEMAS

Comma-separated list of target schemas

public

PG_MAX_CONNECTIONS

Connection pool size

5

PG_CACHE_TTL

Schema cache TTL in seconds

60

PG_QUERY_LIMIT

Default row limit for read_query

100

PG_QUERY_LIMIT_MAX

Hard upper limit for read_query

1000


Client Integration

1. Claude Desktop & Antigravity

Add the following entry to your claude_desktop_config.json or Antigravity MCP settings:

{
  "mcpServers": {
    "pg-context": {
      "command": "npx",
      "args": ["-y", "pg-context-mcp"],
      "env": {
        "DATABASE_URL": "postgresql://user:password@localhost:5432/my_database"
      }
    }
  }
}

2. Cursor

Add the following to your Cursor MCP configuration (.cursor/mcp.json or Cursor Settings > Features > MCP):

{
  "mcpServers": {
    "pg-context": {
      "command": "npx",
      "args": ["-y", "pg-context-mcp"],
      "env": {
        "DATABASE_URL": "postgresql://user:password@localhost:5432/my_database"
      }
    }
  }
}

3. Cline (VS Code Extension)

Add this configuration into cline_mcp_settings.json:

{
  "mcpServers": {
    "pg-context": {
      "command": "npx",
      "args": ["-y", "pg-context-mcp"],
      "env": {
        "DATABASE_URL": "postgresql://user:password@localhost:5432/my_database"
      }
    }
  }
}

Tools Reference

pg-context exposes 12 MCP tools:

Tool

Parameters

Description

list_schemas

none

Lists all non-system schemas in the database.

list_tables

schema (default: "public")

Lists tables and views with sizes, estimated row counts, and comments.

describe_table

table, schema (default: "public")

Returns full structural DDL of a table including columns, types, defaults, NOT NULL, foreign keys, and indexes.

list_foreign_keys

schema (default: "public"), table (optional)

Displays foreign key relationships as readable source -> target associations.

list_indexes

schema (default: "public"), table (optional)

Displays indexes, definitions, sizes, and scan counts.

suggest_indexes

schema (default: "public"), table (optional)

Identifies unindexed foreign keys, sequential scan warnings, and unused indexes.

read_query

sql, limit (optional)

Executes read-only queries with enforced limits and returns Markdown tables.

explain_query

sql, analyze (boolean, default: false)

Returns query execution plans from PostgreSQL EXPLAIN or EXPLAIN ANALYZE.

get_database_info

none

Returns PostgreSQL version, total database size, connection counts, and buffer settings.

get_table_stats

schema (default: "public"), table (optional)

Returns sequential vs index scans, live rows, dead rows, and maintenance dates.

get_slow_queries

limit (default: 15)

Fetches top slowest queries recorded by pg_stat_statements.

list_extensions

none

Lists installed PostgreSQL extensions and flags capabilities for PostGIS, TimescaleDB, and pgvector.


Resources Reference

pg-context exposes 3 MCP resources:

Resource URI

MIME Type

Description

pg://schema/full

text/x-sql

Full DDL dump of all tables across configured schemas.

pg://schema/{tableName}

text/x-sql

DDL definition for an individual table.

pg://stats/overview

text/markdown

Database health overview: storage sizes, dead rows, and optimization alerts.


Development

# Clone the repository
git clone https://github.com/mewsyy/pg-context.git
cd pg-context

# Install dependencies
npm install

# Run test suite
npm test

# Build TypeScript
npm run build

# Start local server
npm start

License

MIT (c) Semen

Available Tools

12 tools
describe_tableB

Get full structural details of a table as CREATE TABLE DDL, including columns, data types, constraints, foreign keys, and indexes

Inputs: table (required), schema.

explain_queryB

Get query execution plan via PostgreSQL EXPLAIN (or EXPLAIN ANALYZE) to debug performance bottlenecks

Inputs: sql (required), analyze.

get_database_infoA

Get high-level PostgreSQL database runtime information: version, size, active connection count, and server settings

Inputs: no named parameters.

get_slow_queriesB

Retrieve top slowest queries recorded by pg_stat_statements extension (if enabled in PostgreSQL)

Inputs: limit.

get_table_statsA

Get scan statistics, tuple counts, dead row accumulation, and maintenance history for tables

Inputs: table, schema.

list_extensionsA

List installed PostgreSQL extensions with version information and specialized framework detection (PostGIS, TimescaleDB, pgvector)

Inputs: no named parameters.

list_foreign_keysA

List foreign key relationships between tables to understand data model associations and joins

Inputs: table, schema.

list_indexesA

List indexes on tables with sizes and scan usage statistics to evaluate index health

Inputs: table, schema.

list_schemasA

List all available database schemas (excluding system schemas like pg_catalog and information_schema)

Inputs: no named parameters.

list_tablesA

List all tables and views in a given schema with estimated row counts, sizes, and comments

Inputs: schema.

read_queryA

Execute a safe read-only SQL query (SELECT, WITH, SHOW) with strict LIMIT enforcement and formatting

Inputs: sql (required), limit.

suggest_indexesB

Analyze query patterns, scan ratios, and missing foreign key indexes to provide index recommendations

Inputs: table, schema.

Tool Schema Changelog

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

Loading tool schema changelog…

    TDQS

    A4/5.0

    Scored across 12 tools

    Disambiguation5/5

    Each tool targets a distinct aspect of PostgreSQL database introspection: schemas, tables, relationships, indexes, query execution, performance stats, and extensions. There is no overlap in purpose.

    Naming Consistency5/5

    All tools follow a consistent verb_noun pattern in snake_case (e.g., list_schemas, describe_table, read_query), making the API predictable and easy to navigate.

    Tool Count5/5

    With 12 tools, the server covers the key areas of database analysis without being bloated. Each tool serves a distinct role, and the count is appropriate for the domain.

    Completeness5/5

    The set covers schema exploration, table details, indexing, query analysis, performance monitoring, and extension information. No obvious gaps for a read-only database context server.

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      A Model Context Protocol server that provides AI assistants with secure, read-only access to PostgreSQL databases while offering comprehensive tools for schema exploration, query validation, and performance optimization.
      MIT
    • F
      license
      Not graded
      quality
      D
      maintenance
      An MCP server that enables AI assistants to interact with PostgreSQL databases by executing SQL queries and inspecting database schemas. It provides tools for standardized database exploration and management through the Model Context Protocol.
      -
    • A
      license
      A
      quality
      C
      maintenance
      An MCP server that gives AI agents direct read-only access to PostgreSQL databases, enabling natural language analytics through tools for schema exploration, querying, trend analysis, and data quality checks.
      11
      5
      MIT
    • A
      license
      A
      quality
      D
      maintenance
      A Model Context Protocol (MCP) server that gives AI assistants deep visibility into databases, inspecting schemas, detecting index problems, analyzing table bloat, and explaining query plans across PostgreSQL, MySQL, and SQLite.
      9
      27 npm
      1
      MIT