← Retour à la liste
★★★☆☆ 3 / 5
Catégorie 05MCP

MCP Postgres

Requêtes SQL et exploration de schéma depuis l'IA

Installation
⚠️ Utiliser le fork patché (recommandé)# Fork maintenu avec correction SQL injection : claude mcp add postgres \ -e DATABASE_URL="postgresql://readonly_user:pass@localhost:5432/mydb" \ -- npx @zeddotdev/postgres-context-server
Créer un user PostgreSQL read-only dédié-- Dans psql : CREATE USER ai_readonly WITH PASSWORD 'mot_de_passe_fort'; GRANT CONNECT ON DATABASE ma_base TO ai_readonly; GRANT USAGE ON SCHEMA public TO ai_readonly; GRANT SELECT ON ALL TABLES IN SCHEMA public TO ai_readonly; -- Empêcher les modifications futures : ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO ai_readonly;
Versionv0.6.2 (archivé) — fork @zeddotdev/postgres-context-server v0.1.4
PrixGratuit (open source)
Plateformes
WindowsmacOSLinux
Commandes4
Exemples3
MCP
À propos

Serveur MCP pour PostgreSQL exposant 4 outils — query (SQL en lecture seule), list_schemas, list_tables et describe_table. Le package officiel @modelcontextprotocol/server-postgres (v0.6.2) a été archivé par Anthropic en mai 2025 et contient une vulnérabilité SQL injection confirmée. Utiliser le fork maintenu @zeddotdev/postgres-context-server ou une alternative communautaire patched.

Fonctionnalités clés
Requêtes SQL read-onlyL'outil query exécute du SQL en lecture seule — SELECT, EXPLAIN, WITH. L'IA peut analyser des données, compter des enregistrements, joindre des tables, sans risque d'écriture.
Exploration de schémalist_schemas, list_tables et describe_table permettent à l'IA de découvrir la structure d'une base de données inconnue — colonnes, types, contraintes, clés étrangères.
Aide aux migrationsEn combinaison avec MCP Filesystem, l'IA peut lire les fichiers de migration existants, analyser le schéma courant et générer les ALTER TABLE ou CREATE INDEX manquants.
Analyse de performanceEXPLAIN ANALYZE sur les requêtes lentes, identification des index manquants, profiling des jointures — depuis le chat sans quitter l'éditeur.
Commandes
CommandeDescription
queryExécuter une requête SQL (read-only) — param: sql (string)
list_schemasLister tous les schémas de la base de données
list_tablesLister les tables d'un schéma — param: schema (string, défaut: public)
describe_tableColonnes, types, contraintes et clés étrangères d'une table — params: schema, table
Exemples
Explorer un schéma inconnuCODE
"Liste tous les schémas et toutes les tables de ma base.
Pour chaque table, décris les colonnes et identifie les
relations (clés étrangères) entre elles. Génère un diagramme
ERD en texte ASCII."
Analyser les performancesCODE
"Exécute EXPLAIN ANALYZE sur cette requête :
SELECT u.*, COUNT(o.id) FROM users u LEFT JOIN orders o ON o.user_id = u.id
WHERE u.created_at > NOW() - INTERVAL '30 days' GROUP BY u.id;
Identifie les index manquants et propose les CREATE INDEX correspondants."
Aide à la migrationCODE
"Décris le schéma actuel de la table 'products'.
Je veux ajouter un champ 'slug' unique non nullable.
Génère la migration SQL avec la gestion des données existantes
(slug généré depuis le nom) et le rollback correspondant."
Points forts & faibles
Points forts
+Exploration de schéma sans credentials admin
+Mode lecture seule — risque d'écriture limité (voir avertissement)
+Requêtes complexes — jointures, agrégations, CTEs
+Aide aux migrations et optimisation des index
+Forks communautaires actifs avec corrections de sécurité
Points faibles
⚠️ CRITIQUE : @modelcontextprotocol/server-postgres v0.6.2 archivé et vulnérable (SQL injection — CVE confirmé par Datadog Labs, mai 2025)
Le mode read-only du package officiel peut être contourné via injection
Pas de chiffrement natif des credentials dans la config
Les requêtes longues peuvent saturer la fenêtre de contexte
Pas de support des types PostgreSQL custom (hstore, arrays, jsonb complexe)
Verdict

Concept indispensable, implémentation officielle défaillante. Utiliser impérativement un fork patché ou une alternative communautaire. Toujours créer un user PostgreSQL en lecture seule dédié — ne jamais passer les credentials d'un user admin.

Développeurs qui ont besoin d'explorer une DB, générer des requêtes complexes ou auditer un schéma depuis l'IA. Avec les précautions de sécurité nécessaires.