Serveur MCP PostgreSQL
Commit 14 nov. 2026Fournit aux assistants IA un accès structuré aux bases de données PostgreSQL pour l'exploration de schémas, le profilage de données et des opérations de lecture/écriture sécurisées.
Aussi connu sous ralscha/postgresql-mcp
- Étoiles
- 0
- Outils
- 24
- Téléchargements, 30 jours
- —
- Dernière version
- —
- Dernier commit
- 14 nov. 2026
- Licence
- MIT
Qu'est-ce que PostgreSQL MCP ?
PostgreSQL est un serveur MCP. Fournit aux assistants IA un accès structuré aux bases de données PostgreSQL pour l'exploration de schémas, le profilage de données et des opérations de lecture/écriture sécurisées. Il expose 24 outils, comme search_schema, describe_table, list_table.
Résumé généré à partir du README du projet
À propos du MCP server PostgreSQL
Ce serveur permet de connecter des assistants IA à des bases de données PostgreSQL pour l'exploration de schémas et la gestion de données. Il fournit une interface structurée permettant aux développeurs d'effectuer des tâches allant de la simple description de tables à l'analyse de relations complexes et à l'inspection des performances de requêtes. Le serveur prend en charge la communication locale via stdio ainsi que le transport HTTP à distance, permettant une intégration flexible dans diverses configurations de clients.
La sécurité est gérée par un modèle d'accès hiérarchisé contrôlé par la variable POSTGRESQL_ACCESS_LEVEL. Les utilisateurs peuvent opérer en mode READONLY pour la recherche de schémas et le profilage de données, en DML-RW pour l'insertion ou la mise à jour de lignes, ou en DDL-RW pour la création et la suppression de tables. Pour éviter toute perte de données accidentelle, le serveur inclut un système de confirmation de mutation qui affiche les lignes affectées avant d'exécuter les écritures lorsque POSTGRESQL_REQUIRE_CONFIRMATION est actif.
Les fonctionnalités techniques incluent l'explication de requêtes via des plans d'exécution JSON, le décodage automatique des données jsonb et des limites de lignes faisant autorité pour éviter de saturer le client. Les développeurs peuvent configurer les détails de connexion tels que l'hôte, le port et le mode SSL via des variables d'environnement, et peuvent sécuriser les endpoints HTTP à l'aide de bearer tokens.
Ce que vous pouvez faire avec
- 1Analyser les structures de schémas de base de donnéesDemandez à l'IA de trouver des tables spécifiques ou de décrire les colonnes et les clés au sein d'une base de données.
- 2Optimiser les requêtes SQL lentesDemandez un plan d'exécution pour comprendre pourquoi une requête spécifique est peu performante.
- 3Profiler les statistiques de tableObtenez un résumé du nombre de lignes, des valeurs nulles et de la distribution des données pour une table spécifique.
Extrait du README du projet. Chaque cas d'utilisation est vérifié par rapport à une citation du document.
Outils MCP PostgreSQL 24
Détectés depuis le READMEsearch_schemadescribe_tablelist_tablelist_databaseslist_environmentsprofile_tableinspect_relationshipsinspect_dependenciesexplain_queryread_datatest_connectionvalidate_environment_config
| search_schema | — | |
| describe_table | — | |
| list_table | — | |
| list_databases | — | |
| list_environments | — | |
| profile_table | — | |
| inspect_relationships | — | |
| inspect_dependencies | — | |
| explain_query | — | |
| read_data | — | |
| test_connection | — | |
| validate_environment_config | — |
Afficher les 24 outilsAfficher moins d'outils
list_schemaslist_extensionslist_viewslist_triggersshow_create_tabletable_sizeinsert_dataupdate_datadelete_datacreate_tablecreate_indexdrop_table
| list_schemas | — | |
| list_extensions | — | |
| list_views | — | |
| list_triggers | — | |
| show_create_table | — | |
| table_size | — | |
| insert_data | — | |
| update_data | — | |
| delete_data | — | |
| create_table | — | |
| create_index | — | |
| drop_table | — |
Configuration
POSTGRESQL_ACCESS_LEVELPOSTGRESQL_DATABASEPOSTGRESQL_HOSTPOSTGRESQL_HTTP_ADDRPOSTGRESQL_HTTP_PATHPOSTGRESQL_PASSWORDPOSTGRESQL_SSLMODEPOSTGRESQL_TRANSPORTPOSTGRESQL_USER
| Nom | Description | Type |
|---|---|---|
| POSTGRESQL_ACCESS_LEVEL | — | |
| POSTGRESQL_DATABASE | — | |
| POSTGRESQL_HOST | — | |
| POSTGRESQL_HTTP_ADDR | — | |
| POSTGRESQL_HTTP_PATH | — | |
| POSTGRESQL_PASSWORD | — | |
| POSTGRESQL_SSLMODE | — | |
| POSTGRESQL_TRANSPORT | — | |
| POSTGRESQL_USER | — |
Vérifications automatisées
Exécuté le 14 nov. 2026Rapport complet →Pas encore vérifié. Un serveur nécessite un score de 80, aucune faille sérieuse et suffisamment de données pour que nous puissions effectuer les vérifications. Fonctionnement des vérifications · Ce qu'il faut corriger pour gagner des points
- Dépôt source lié et accessibleralscha/postgresql-mcp is public and reachablegithub.com/ralscha/postgresql-mcp ↗Réussi
- Le nom du package correspond au dépôt sourceNon vérifié
- Provenance du build (attestation Sigstore)Non vérifié
- Licence open source (OSI)MITspdx.org/licenses/MIT.html ↗Réussi
- Commit ou version publiée au cours de l'année écouléeLast commit or release 2026-11-09github.com/ralscha/postgresql-mcp ↗Réussi
- OpenSSF ScorecardNon vérifié
- Nom du package non proche d'un package populaireNon vérifié
- Aucun avis critique dans le package ou ses dépendancesNon vérifié
- Aucune instruction cachée destinée au modèle24 tool descriptions and the README read; no override phrases, credential paths or hidden charactersRéussi
- Les outils destructifs sont étiquetésNon vérifié
- Le point de terminaison distant répond à la poignée de main MCPNon vérifié
README
Voir sur GitHubpostgresql-mcp
An MCP (Model Context Protocol) server that gives AI assistants structured, read-optimized access to PostgreSQL databases. It exposes schema exploration, data profiling, relationship analysis, query explanation, and safe read/write operations through a standardized MCP interface.
Features
- 24 MCP tools covering schema search, table description, data profiling, relationship/dependency inspection, query explanation, connection testing, schema/extension/view/trigger listing, CREATE TABLE DDL generation, table sizing, and tiered write access
- Tiered access model via
POSTGRESQL_ACCESS_LEVEL:READONLY(default),DML-RW(adds insert/update/delete),DDL-RW(adds create/drop table/index) - SQL-safe design with identifier validation, exact named-parameter binding, single-statement checks, and database-enforced read-only transactions
- Authoritative row limits that cap
read_dataresults even when the submitted query contains its own largerLIMIT - Mutation confirmation with preview mode that shows affected rows before executing writes when
POSTGRESQL_REQUIRE_CONFIRMATIONis enabled - Explain plan via
EXPLAIN (FORMAT JSON)for understanding query performance - Connection testing that validates connectivity and reports latency
- Environment listing showing current host, database, and access-level configuration
- Optional HTTP bearer authentication, same-origin protection, request-size limits, and graceful shutdown
Installation
Download the latest release for your platform from the Releases page.
Usage
Environment Variables
| Variable | Required | Default | Description |
|---|---|---|---|
POSTGRESQL_HOST |
Yes | — | PostgreSQL hostname or IP |
POSTGRESQL_DATABASE |
Yes | — | Database name |
POSTGRESQL_USER |
Yes | — | Login username |
POSTGRESQL_PASSWORD |
Yes | — | Login password |
POSTGRESQL_PORT |
No | 5432 |
PostgreSQL port |
POSTGRESQL_SSLMODE |
No | prefer |
SSL mode: disable, allow, prefer, require, verify-ca, verify-full |
POSTGRESQL_ACCESS_LEVEL |
No | READONLY |
READONLY, DML-RW, or DDL-RW |
POSTGRESQL_CONNECTION_TIMEOUT |
No | 30 |
Connection timeout in seconds |
POSTGRESQL_QUERY_TIMEOUT |
No | 120 |
Query timeout in seconds |
POSTGRESQL_MAX_ROWS_DEFAULT |
No | 1000 |
Default row limit for queries |
POSTGRESQL_REQUIRE_CONFIRMATION |
No | true |
Require confirm flag for writes |
POSTGRESQL_TRANSPORT |
No | stdio |
MCP transport: stdio or http |
POSTGRESQL_HTTP_ADDR |
No | 127.0.0.1:8080 |
HTTP listen address when POSTGRESQL_TRANSPORT=http |
POSTGRESQL_HTTP_PATH |
No | /mcp |
Stateless Streamable HTTP endpoint path when POSTGRESQL_TRANSPORT=http |
POSTGRESQL_HTTP_BEARER_TOKEN |
No | — | Require Authorization: Bearer <token> for HTTP requests |
Running as an MCP Server
By default, the server communicates over stdio. Configure your MCP client to launch it:
{
"mcpServers": {
"postgresql": {
"command": "/path/to/bin/postgresql-mcp",
"env": {
"POSTGRESQL_HOST": "localhost",
"POSTGRESQL_DATABASE": "YourDatabase",
"POSTGRESQL_USER": "postgres",
"POSTGRESQL_PASSWORD": "YourPassword",
"POSTGRESQL_SSLMODE": "disable",
"POSTGRESQL_ACCESS_LEVEL": "READONLY"
}
}
}
}
To serve MCP using the stateless Streamable HTTP transport, set POSTGRESQL_TRANSPORT=http:
POSTGRESQL_TRANSPORT=http \
POSTGRESQL_HTTP_ADDR=127.0.0.1:8080 \
POSTGRESQL_HTTP_PATH=/mcp \
/path/to/bin/postgresql-mcp
Then configure a Streamable HTTP MCP client to connect to:
http://localhost:8080/mcp
Set POSTGRESQL_HTTP_BEARER_TOKEN when the endpoint is reachable by anything other than a trusted local client. Binding to a non-loopback address without authentication exposes every tool allowed by POSTGRESQL_ACCESS_LEVEL.
Access Levels
READONLY(default) — Schema exploration, data reading, profiling, relationship inspection, query explanation, connection testing, schema listing, extensions, views, triggers, CREATE TABLE DDL generation, table sizing. 18 tools.DML-RW— All read-only tools plusinsert_data,update_data,delete_data. 21 tools.DDL-RW— All DML tools pluscreate_table,create_index,drop_table. 24 tools.
Mutations (update_data, delete_data, drop_table) require a "confirm": true flag when POSTGRESQL_REQUIRE_CONFIRMATION is enabled (the default). Without confirmation, the server returns a preview of the affected rows instead.
update_data and delete_data predicates use named placeholders. For example, use "where": "id = $id AND tenant = $tenant" with "params": {"id": 42, "tenant": "acme"}. Every placeholder must have a value and every supplied parameter must be used.
Query results decode json/jsonb into structured JSON, encode bytea as base64, and suffix duplicate column names (id, id_2, and so on) so joined results do not silently lose values.
MCP Tools
Read-Only (READONLY)
| Tool | Description |
|---|---|
search_schema |
Search tables and columns by name pattern with pagination |
describe_table |
Get columns, primary keys, foreign keys, and indexes for a table |
list_table |
List tables, optionally filtered by schema and name |
list_databases |
List all databases on the server |
list_environments |
Show current connection and access-level configuration |
profile_table |
Row count, null counts, distinct counts, min/max when supported, with optional data samples |
inspect_relationships |
List foreign keys going out of and into a table |
inspect_dependencies |
Find objects (views, functions) that depend on a table |
explain_query |
Get the JSON execution plan for a read-only query |
read_data |
Execute a read-only SELECT query with row limits |
test_connection |
Ping the server and return latency and server version info |
validate_environment_config |
Validate that all environment variables are correctly configured |
list_schemas |
List all user schemas with owner and description |
list_extensions |
List installed PostgreSQL extensions with version |
list_views |
List views with their SQL definitions |
list_triggers |
List triggers with event, timing, and definition |
show_create_table |
Generate CREATE TABLE DDL including defaults, generated/identity columns, and table constraints |
table_size |
Table and index sizes, toast size, and estimated row counts, optionally for one table |
DML (DML-RW)
| Tool | Description |
|---|---|
insert_data |
Insert one or more rows into a table |
update_data |
Update rows matching a WHERE clause (with optional preview) |
delete_data |
Delete rows matching a WHERE clause (with optional preview) |
DDL (DDL-RW)
| Tool | Description |
|---|---|
create_table |
Create a table with column definitions, primary keys, and identity columns |
create_index |
Create a standard or unique index on specified columns |
drop_table |
Drop a table (with optional preview/confirmation) |
License
MIT License. See LICENSE for details.
Questions sur PostgreSQL MCP
Quels outils PostgreSQL MCP fournit-il ?
Il expose 24 outils, dont search_schema, describe_table, list_table, list_databases, list_environments.
Quels sont les niveaux d'accès disponibles ?
Le serveur prend en charge trois niveaux d'accès hiérarchisés : READONLY (par défaut), DML-RW (ajoute insert/update/delete) et DDL-RW (ajoute create/drop table/index).
Comment puis-je garantir la sécurité des opérations d'écriture ?
Vous pouvez activer la confirmation de mutation avec un mode de prévisualisation qui affiche les lignes affectées avant d'exécuter les écritures en réglant POSTGRESQL_REQUIRE_CONFIRMATION sur true.
Puis-je utiliser ce serveur via HTTP ?
Oui, en réglant la variable d'environnement POSTGRESQL_TRANSPORT sur 'http', vous pouvez servir le MCP via un endpoint Streamable HTTP sans état.
Comment le serveur gère-t-il les résultats de requêtes volumineux ?
Le serveur utilise des limites de lignes faisant autorité pour plafonner les résultats de l'outil read_data, même si la requête elle-même contient une clause LIMIT plus importante.