postgres-mcp
Provides tools for interacting with PostgreSQL databases, including schema exploration, safe SQL execution, EXPLAIN, health checks, and index recommendations.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@postgres-mcp show me the tables in the staging database"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
postgres-mcp
Multi-DB Postgres MCP Server für Cursor / andere MCP-Clients.
Unterstützt Schema-Exploration, sicheres SQL, EXPLAIN, Health-Checks und Index-Empfehlungen.
Voraussetzungen
Node.js 22+
Postgres-Zugang (Connection-URI)
Optional: Docker
Empfohlene Postgres-Extensions (für Slow-Queries / Index-Tuning):
CREATE EXTENSION IF NOT EXISTS pg_stat_statements;
CREATE EXTENSION IF NOT EXISTS hypopg;pg_stat_statements muss zusätzlich in shared_preload_libraries aktiv sein und Postgres neu gestartet werden.
Related MCP server: postgres-mcp
Schnellstart (lokal)
npm install
npm run buildEine DB:
DATABASE_URL='postgresql://user:pass@host:5432/dbname' \
ACCESS_MODE=restricted \
npm startMehrere DBs:
DB_STAGING_URL='postgresql://user:pass@host:5432/staging' \
DB_PROD_URL='postgresql://user:pass@host:5432/prod' \
DEFAULT_DB=staging \
ACCESS_MODE=restricted \
npm startHTTP-Transport (für Docker / Remote):
npm run start:http
# -> http://0.0.0.0:8000/mcp
# Health: http://0.0.0.0:8000/healthKonfiguration
Datenbanken
Variable | Beschreibung |
| Einzelne DB (Alias |
| Multi-DB, z. B. |
| Alternativ: |
| Default-Alias, wenn mehrere DBs konfiguriert sind |
Tools akzeptieren optional db (Alias aus list_databases). Ohne Angabe wird DEFAULT_DB verwendet.
Access Mode
Wert | Bedeutung |
| Read/Write (Default, für Dev) |
| Read-only, 30s Statement-Timeout, kein |
Setzen über Env oder CLI:
ACCESS_MODE=restricted
# oder
node dist/index.js --access-mode=restrictedTransport
Variable / Flag | Default | Beschreibung |
|
|
|
|
| HTTP Bind-Adresse (nicht |
|
| HTTP Port |
Cursor einbinden
Stdio (lokal)
In Cursor MCP Settings / mcp.json:
{
"mcpServers": {
"postgres": {
"command": "node",
"args": [
"/ABSOLUTER/PFAD/postgres-mcp/dist/index.js",
"--access-mode=restricted"
],
"env": {
"DB_STAGING_URL": "postgresql://user:pass@host:5432/staging",
"DB_PROD_URL": "postgresql://user:pass@host:5432/prod",
"DEFAULT_DB": "staging"
}
}
}
}Vorher einmal npm run build ausführen.
HTTP (Docker / Remote)
{
"mcpServers": {
"postgres": {
"url": "http://localhost:8000/mcp"
}
}
}Docker
Build:
docker build -t postgres-mcp .Run:
docker run --rm -p 8000:8000 \
-e ACCESS_MODE=restricted \
-e DEFAULT_DB=staging \
-e DB_STAGING_URL='postgresql://user:pass@host:5432/staging' \
-e DB_PROD_URL='postgresql://user:pass@host:5432/prod' \
postgres-mcpEndpoints:
MCP:
http://localhost:8000/mcpHealth:
http://localhost:8000/health
Hinweis: Wenn Postgres auf dem Host läuft, localhost in der URI je nach OS durch host.docker.internal ersetzen.
Tools
Tool | Zweck |
| Konfigurierte DB-Aliase anzeigen |
| Schemas listen |
| Tables / Views / Sequences / Extensions |
| Spalten + Indexes eines Objekts |
| SQL ausführen (max. 50 Rows default) |
| EXPLAIN / EXPLAIN ANALYZE / hypopg |
| Slow Queries ( |
| Index-Empfehlungen aus Workload |
| Index-Empfehlungen für konkrete Queries |
| Health: index, connection, vacuum, sequence, replication, buffer, constraint, all |
Typischer KI-Flow:
list_databaseslist_schemas/list_objectsget_object_detailsexecute_sqlmitdb: "staging"
Tests
Read-only Integrationstests gegen eine echte DB:
export TEST_DATABASE_URL='postgresql://user:pass@host:5432/dbname'
npm testDie Tests laufen im restricted-Mode und prüfen alle Tools inkl. Multi-DB und Error-Cases.
Vorlage: .env.test.example
Entwicklung
npm install
npm run build
npm start
npm run start:http
npm testBuild-Output liegt in dist/.
Available Tools
10 toolsanalyze_db_healthB
Health checks: index,connection,vacuum,sequence,replication,buffer,constraint,all
Inputs: db, health_type.
analyze_query_indexesB
Recommend indexes for up to 10 specific queries
Inputs: queries (required), db, max_index_size_mb.
analyze_workload_indexesB
Recommend indexes based on pg_stat_statements workload
Inputs: db, max_index_size_mb.
execute_sqlC
Execute SQL (max 50 rows returned)
Inputs: sql (required), db, limit.
explain_queryC
EXPLAIN a SQL query, optionally with hypothetical indexes
Inputs: sql (required), db, analyze, hypothetical_indexes.
get_object_detailsC
Columns and indexes for a table/view
Inputs: object_name (required), schema_name (required), db, object_type.
get_top_queriesC
Slow or resource-heavy queries from pg_stat_statements
Inputs: db, limit, sort_by.
list_databasesA
List configured database connections. Call first when unsure which db to use.
Inputs: no named parameters.
list_objectsB
List tables, views, sequences, or extensions in a schema
Inputs: schema_name (required), db, object_type.
list_schemasA
List schemas (user schemas only by default)
Inputs: db, include_system.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 10 tools
Each tool targets a distinct aspect of PostgreSQL introspection and analysis: listing databases/schemas/objects, fetching details, executing/explaining SQL, and performance tuning. Even the two index analysis tools are clearly differentiated by workload vs. specific queries.
All tool names follow a consistent verb_noun pattern using lowercase with underscores (list_*, get_*, execute_sql, explain_query, analyze_*). The naming is predictable and easy to navigate.
With 10 tools, the server is well-scoped for a PostgreSQL administration and performance analysis purpose. Each tool has a clear role without redundancy or bloat.
The tool set covers the full lifecycle of database inspection and optimization: discovery (databases, schemas, objects), exploration (details, SQL execution, explain), performance analysis (top queries, index recommendations), and health checks. No obvious gaps for its stated purpose.
Maintenance
Related MCP Connectors
Hosted MCP server for PostgreSQL diagnostics: slow queries, missing indexes, connection pressure.
Managed Postgres MCP: projects, SQL, docs search, and storage buckets via OAuth.
Hosted PostgreSQL MCP server for Claude, ChatGPT and Cursor, with each action switched per account.
PostgreSQL, MySQL, and SQL Server in one session. 26 read-only MCP tools for AI agents.
Related MCP Servers
- AlicenseAqualityBmaintenanceMCP server with 14 tools for PostgreSQL database operations. Query databases, explore schemas, analyze tables, with SQL injection prevention and read-only mode by default.1412MIT
- AlicenseAqualityDmaintenanceA Postgres MCP server with index tuning, explain plans, health checks, and safe sql execution.10MIT
- AlicenseAqualityCmaintenanceA Postgres MCP server with index tuning, explain plans, health checks, and safe SQL execution.9MIT
- AlicenseAqualityDmaintenanceAn MCP server for PostgreSQL with index tuning, explain plans, health checks, and safe SQL execution.9MIT