# Fai interrogare Postgres a Claude

> I colleghi chiedono al team tecnico numeri che stanno già nel database.

Questa configurazione è pensata per i team tecnici e data che rispondono di continuo alle stesse domande dei colleghi sul database. Claude si collega a Postgres tramite un server MCP con un ruolo in sola lettura, scrive ed esegue l'SQL e pubblica su Slack i numeri ricorrenti. Ottieni un modo sicuro per fare domande in linguaggio normale, senza dare accesso alla produzione.

## Passaggi

1. **Crea un ruolo in sola lettura**: Crea un ruolo Postgres dedicato con LOGIN e concedigli USAGE sugli schemi necessari e SELECT solo sulle tabelle necessarie. Imposta default_transaction_read_only e uno statement_timeout su questo ruolo, così le query lunghe o di scrittura falliscono subito. Non riutilizzare mai l'utente del database della tua applicazione.
   Consiglio: Esegui SET ROLE sul nuovo ruolo e prova un INSERT per verificare che fallisca.
2. **Collegalo a una replica**: Collega l'agente a una replica in lettura, o a un database di reporting copiato dalla produzione. Se hai solo il database principale, usa il ruolo in sola lettura con un limite di connessioni basso. Limita l'accesso di rete in modo che solo la macchina su cui gira il server MCP possa raggiungerlo.
   Consiglio: Uno statement_timeout di pochi secondi evita che una join fuori controllo si prenda tutte le risorse.
3. **Registralo in Claude**: Aggiungi un server MCP per Postgres, come Postgres MCP Pro in modalità ristretta o un altro server in sola lettura, con la stringa di connessione in sola lettura. Registralo nella configurazione di Claude Desktop, nelle impostazioni MCP di Cursor o con claude mcp add in Claude Code. Tieni la stringa di connessione in una variabile d'ambiente invece che in un file sotto controllo di versione.
   Consiglio: Cerca nella documentazione del server un'opzione read-only o restricted e attivala.
4. **Descrivi lo schema**: Scrivi un breve file di note che spieghi le tabelle principali, cosa rappresenta una riga, come si collegano le tabelle e quali colonne contengono importi o date. Aggiungilo a un progetto Claude, a CLAUDE.md o alle regole di Cursor. Chiedi a Claude di mostrare l'SQL eseguito insieme a ogni risposta, così qualcuno può controllarlo.
   Consiglio: Includi la definizione dei termini di business, come cliente attivo, così i numeri tornano con le tue dashboard.
5. **Condividi le risposte**: Collega il server MCP di Slack e limitalo a un solo canale per le metriche. Chiedi a Claude di pubblicare la domanda, il numero e l'SQL usato. Per numeri programmati, avvia Claude Code da cron o dalla CI con la stessa configurazione.
   Consiglio: Pubblica l'SQL insieme alla risposta, così chiunque può riprodurla.

## Prompt da provare

- Quanti nuovi account si sono registrati ogni settimana nelle ultime otto settimane? Mostrami l'SQL.
- Quali sono i dieci clienti con il valore d'ordine più alto il mese scorso, e come si confrontano con il mese prima?
- Spiegami cosa contiene la tabella subscriptions e come si collega alle fatture.
- Trova gli ordini bloccati in attesa da più di 48 ore e pubblica il loro numero in #metrics.
- Scrivi una query per il churn settimanale secondo la nostra definizione di cliente attivo, ma non eseguirla ancora.

## Cosa ti serve

- Un database Postgres in cui puoi creare ruoli e permessi
- Idealmente una replica in lettura o una copia per il reporting
- Claude Desktop, Claude Code o Cursor
- Un canale Slack per le metriche condivise

## Limiti

- Claude può scrivere un SQL che funziona ma risponde alla domanda sbagliata: i numeri importanti vanno controllati da una persona.
- I risultati grandi vengono troncati o riassunti; chiedi aggregati invece di righe grezze.
- L'agente conosce solo lo schema e le tue note; la logica di business non documentata nel codice dell'applicazione gli resta invisibile.

## Note di sicurezza

- Solo un ruolo di database in sola lettura.
- Escludi le tabelle con dati personali, salvo stretta necessità.
- Preferisci una replica al database principale.

## Server 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

## Domande frequenti

**L'agente può modificare o cancellare dati?**

No, se segui i passaggi: il ruolo ha solo permessi SELECT e transazioni in sola lettura. Molti server MCP offrono anche una modalità in sola lettura, ma considera il ruolo del database come la vera protezione.

**Quali app sono compatibili?**

Claude Desktop, Claude Code e Cursor supportano tutti i server MCP locali configurati con un comando e variabili d'ambiente. Claude Code è il più semplice per le esecuzioni programmate.

**E i dati personali?**

I risultati delle query passano dal modello: lascia fuori dai permessi le tabelle o colonne con dati personali, oppure esponi una vista che non li contiene. Controlla la policy sui dati della tua azienda prima di collegare dati dei clienti.

**E se le risposte sono sbagliate?**

I numeri sbagliati di solito nascono da join errate o da definizioni di business sbagliate. Leggi l'SQL mostrato da Claude, poi aggiungi la correzione al tuo file di note per migliorare la risposta successiva.

## Strumenti

- **[Supabase](https://suiteintent.com/t/supabase?m=IT)**: Postgres in hosting con autenticazione e storage. · Ideale per: Un backend per un'app creata con l'AI · Piano gratuito
- **[Slack](https://suiteintent.com/t/slack?m=IT)**: Messaggistica di team organizzata in canali. · Ideale per: Togliere le conversazioni di team dall'email · Piano gratuito · Gratis per non profit
