# postgres [Health: Active]

**Category:** 🗄️ Databases  
**Repository:** https://github.com/ofershap/mcp-server-postgres  
**GitHub Stars:** 0  
**npm Downloads (last month):** 61735156  
**Views:** 0  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/postgres

## Description
PostgreSQL MCP — query databases, inspect schemas, explain queries.

## Tools
Capabilities this server exposes over MCP:

- **query** — Execute SQL (SELECT, WITH, EXPLAIN, SHOW, ANALYZE). Returns a text table.
- **schema** — Tables in a schema (default `public`) with columns and approximate row counts
- **table_info** — One table: columns, types, null/default, PK, exact row count
- **explain** — EXPLAIN (FORMAT TEXT), optional ANALYZE
- **list_schemas** — List non-system schemas

## Claude Desktop Quick Installation
Install path detected from listing signals. Uses `npx` (confidence: high):

```json
"mcpServers": {
  "postgres": {
    "command": "npx",
    "args": ["-y","mcp-pg-server"]
  }
}
```

## Documentation & README

# mcp-server-postgres

[![npm version](https://img.shields.io/npm/v/mcp-pg-server.svg)](https://www.npmjs.com/package/mcp-pg-server)
[![npm downloads](https://img.shields.io/npm/dm/mcp-pg-server.svg)](https://www.npmjs.com/package/mcp-pg-server)
[![CI](https://github.com/ofershap/mcp-server-postgres/actions/workflows/ci.yml/badge.svg)](https://github.com/ofershap/mcp-server-postgres/actions/workflows/ci.yml)
[![TypeScript](https://img.shields.io/badge/TypeScript-strict-blue.svg)](https://www.typescriptlang.org/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

Query PostgreSQL, inspect schemas, and explain queries from your AI assistant. A daily-driver MCP for local and dev Postgres — same belt as docker and sqlite servers, not an enterprise DBA suite.

```bash
DATABASE_URL=postgres://user:pass@localhost:5432/mydb npx mcp-pg-server
```

> Works with Claude Desktop, Cursor, VS Code Copilot, and any MCP client. Connects via `DATABASE_URL` or per-call `connectionString`.

## Why

Postgres is the default for most new backends, local dev stacks, and agent workflows that need a real SQL database. You already run it in Docker or on localhost — this server lets your assistant query it, read schemas, and explain plans without leaving the IDE. Read-only by default so exploration stays safe; opt into writes when you need them.

## Tools

| Tool           | What it does                                                                  |
| -------------- | ----------------------------------------------------------------------------- |
| `query`        | Execute SQL (SELECT, WITH, EXPLAIN, SHOW, ANALYZE). Returns a text table.     |
| `schema`       | Tables in a schema (default `public`) with columns and approximate row counts |
| `table_info`   | One table: columns, types, null/default, PK, exact row count                  |
| `explain`      | EXPLAIN (FORMAT TEXT), optional ANALYZE                                       |
| `list_schemas` | List non-system schemas                                                       |

## Quick Start

### Cursor

Add to `.cursor/mcp.json`:

```json
{
  "mcpServers": {
    "postgres": {
      "command": "npx",
      "args": ["mcp-pg-server"],
      "env": {
        "DATABASE_URL": "postgres://user:pass@localhost:5432/mydb"
      }
    }
  }
}
```

### Claude Desktop

Add to `claude_desktop_config.json` (macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`):

```json
{
  "mcpServers": {
    "postgres": {
      "command": "npx",
      "args": ["mcp-pg-server"],
      "env": {
        "DATABASE_URL": "postgres://user:pass@localhost:5432/mydb"
      }
    }
  }
}
```

### VS Code

Configure the MCP server in your VS Code settings to run `npx mcp-pg-server` with `DATABASE_URL` set.

## Example prompts

- "Show me the schema of the public tables"
- "Query users: SELECT * FROM users LIMIT 10"
- "Explain this join query"
- "What schemas exist in this database?"
- "How many rows are in the orders table?"

## Safety

Read-only by default. The `query` tool accepts only SELECT, WITH, EXPLAIN, SHOW, and ANALYZE in readonly mode. Set `readonly=false` to enable INSERT, UPDATE, DELETE, and DDL.

Pass `connectionString` on any tool to override `DATABASE_URL` for a single call.

## Development

```bash
npm install
npm run typecheck
npm run build
npm test
npm run format
npm run lint
```

## See also

More MCP servers and developer tools on my [portfolio](https://gitshow.dev/ofershap).

## Author

[![Made by ofershap](https://gitshow.dev/api/card/ofershap)](https://gitshow.dev/ofershap)

[![LinkedIn](https://img.shields.io/badge/LinkedIn-Connect-0A66C2?style=flat&logo=linkedin&logoColor=white)](https://linkedin.com/in/ofershap)
[![GitHub](https://img.shields.io/badge/GitHub-Follow-181717?style=flat&logo=github&logoColor=white)](https://github.com/ofershap)

## License

MIT © 2026 Ofer Shapira

