# Laisser Claude interroger Postgres

> Les collègues demandent à l'équipe technique des chiffres qui se trouvent dans la base de données.

Cette configuration s'adresse aux équipes techniques et data qui répondent sans cesse aux mêmes questions de leurs collègues sur la base de données. Claude se connecte à Postgres via un serveur MCP avec un rôle en lecture seule, écrit et exécute le SQL, et publie les chiffres récurrents dans Slack. Vous obtenez un moyen sûr de poser des questions en langage courant, sans donner accès à la production.

## Étapes

1. **Créer un rôle en lecture seule**: Créez un rôle Postgres dédié avec LOGIN et accordez-lui USAGE sur les schémas nécessaires et SELECT uniquement sur les tables nécessaires. Définissez default_transaction_read_only et un statement_timeout sur ce rôle pour que les requêtes longues ou en écriture échouent rapidement. Ne réutilisez jamais l'utilisateur de base de données de votre application.
   Astuce: Exécutez SET ROLE vers le nouveau rôle et essayez un INSERT pour vérifier qu'il échoue.
2. **Le connecter à un réplica**: Connectez l'agent à un réplica en lecture, ou à une base de reporting copiée depuis la production. Si vous n'avez qu'une base principale, utilisez le rôle en lecture seule avec une limite de connexions basse. Restreignez l'accès réseau pour que seule la machine qui exécute le serveur MCP puisse l'atteindre.
   Astuce: Un statement_timeout de quelques secondes empêche une jointure incontrôlée d'accaparer les ressources.
3. **L'enregistrer dans Claude**: Ajoutez un serveur MCP Postgres, comme Postgres MCP Pro en mode restreint ou un autre serveur en lecture seule, avec la chaîne de connexion en lecture seule. Enregistrez-le dans la configuration de Claude Desktop, dans les paramètres MCP de Cursor ou avec claude mcp add dans Claude Code. Conservez la chaîne de connexion dans une variable d'environnement plutôt que dans un fichier versionné.
   Astuce: Cherchez dans la documentation du serveur une option read-only ou restricted et activez-la.
4. **Décrire le schéma**: Rédigez un court fichier de notes qui explique les tables clés, ce que représente une ligne, comment les tables se joignent et quelles colonnes contiennent des montants ou des dates. Ajoutez-le à un projet Claude, à CLAUDE.md ou aux règles de Cursor. Demandez à Claude d'afficher le SQL exécuté avec chaque réponse pour que quelqu'un puisse le vérifier.
   Astuce: Incluez la définition des termes métier, comme client actif, pour que les chiffres correspondent à vos tableaux de bord.
5. **Partager les réponses**: Connectez le serveur MCP de Slack et limitez-le à un seul canal pour les indicateurs. Demandez à Claude de publier la question, le chiffre et le SQL utilisé. Pour des chiffres planifiés, lancez Claude Code depuis cron ou la CI avec la même configuration.
   Astuce: Publiez le SQL avec la réponse pour que chacun puisse la reproduire.

## Prompts à essayer

- Combien de nouveaux comptes se sont inscrits chaque semaine au cours des huit dernières semaines ? Montre le SQL.
- Quels sont les dix clients avec la plus forte valeur de commande le mois dernier, et comment cela se compare-t-il au mois précédent ?
- Explique ce que contient la table subscriptions et comment elle est liée aux factures.
- Trouve les commandes bloquées en attente depuis plus de 48 heures et publie leur nombre dans #metrics.
- Écris une requête pour le churn hebdomadaire selon notre définition du client actif, mais ne l'exécute pas encore.

## Ce qu'il vous faut

- Une base Postgres où vous pouvez créer des rôles et des droits
- Idéalement un réplica en lecture ou une copie de reporting
- Claude Desktop, Claude Code ou Cursor
- Un canal Slack pour les indicateurs partagés

## Limites

- Claude peut écrire un SQL qui s'exécute mais répond à la mauvaise question : les chiffres importants doivent être vérifiés par une personne.
- Les gros résultats sont tronqués ou résumés ; demandez des agrégats plutôt que des lignes brutes.
- L'agent ne connaît que le schéma et vos notes ; la logique métier non documentée dans le code applicatif lui reste invisible.

## Notes de sécurité

- Uniquement un rôle de base de données en lecture seule.
- Excluez les tables contenant des données personnelles, sauf nécessité stricte.
- Préférez un réplica à la base principale.

## Serveurs MCP

- [Postgres MCP Server](https://github.com/modelcontextprotocol/servers-archived): database-read
- [Slack MCP Server](https://docs.slack.dev/ai/mcp-server): channel-read, message-write

## Questions fréquentes

**L'agent peut-il modifier ou supprimer des données ?**

Pas si vous suivez les étapes : le rôle n'a que des droits SELECT et des transactions en lecture seule. Beaucoup de serveurs MCP proposent aussi un mode lecture seule, mais considérez le rôle de base de données comme la vraie protection.

**Quelles applications sont compatibles ?**

Claude Desktop, Claude Code et Cursor prennent tous en charge les serveurs MCP locaux configurés avec une commande et des variables d'environnement. Claude Code est le plus simple pour les exécutions planifiées.

**Et les données personnelles ?**

Les résultats des requêtes passent par le modèle : laissez hors des droits les tables ou colonnes contenant des données personnelles, ou exposez une vue qui ne les contient pas. Vérifiez la politique de données de votre entreprise avant de connecter des données clients.

**Et si les réponses sont fausses ?**

Les chiffres faux viennent généralement de mauvaises jointures ou de définitions métier erronées. Lisez le SQL affiché par Claude, puis ajoutez la correction à votre fichier de notes pour améliorer la réponse suivante.

## Outils

- **[Supabase](https://suiteintent.com/t/supabase?m=FR)**: Postgres hébergé avec authentification et stockage. · Idéal pour: Un backend pour une appli créée avec l'IA · Offre gratuite
- **[Slack](https://suiteintent.com/t/slack?m=FR)**: Messagerie d'équipe organisée en canaux. · Idéal pour: Sortir les échanges d'équipe de l'e-mail · Offre gratuite · Gratuit pour les associations
