Connettere Claude Code a un database: query su dati reali con MCP

Connetti PostgreSQL a Claude Code via MCP, configura un account in sola lettura con controllo dei permessi e lascia che Claude legga schemi, scriva query e analizzi dati direttamente.


Una volta connesso un database, Claude Code funziona in modo diverso. Non è necessario incollare la struttura delle tabelle nel prompt o spiegare i nomi dei campi — Claude si connette direttamente, legge lo schema da solo, scrive le query e analizza i risultati.

Questo articolo usa PostgreSQL come esempio e percorre l'intero processo dalla configurazione all'uso reale.

Quale MCP Server usare

L'ufficiale @modelcontextprotocol/server-postgres supporta:

  • Lettura dello schema di tutte le tabelle (nomi dei campi, tipi, vincoli)
  • Esecuzione di query SQL e restituzione dei risultati
  • Schema multipli

Solo lettura. Questo Server è progettato unicamente per le query — non esegue INSERT, UPDATE o DELETE.

Installazione

npm install -g @modelcontextprotocol/server-postgres

Configurazione

Modifica .claude/settings.json (livello progetto):

{
  "mcpServers": {
    "db": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-postgres",
        "postgresql://readonly_user:password@localhost:5432/myapp_production"
      ]
    }
  }
}

Formato della stringa di connessione: postgresql://USER:PASSWORD@HOST:PORT/DATABASE

Per non mettere la password nel file di configurazione, usa una variabile d'ambiente:

{
  "mcpServers": {
    "db": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-postgres"],
      "env": {
        "DATABASE_URL": "postgresql://readonly_user:password@localhost:5432/myapp_production"
      }
    }
  }
}

Se .claude/settings.json viene committato su git, assicurati che non contenga password in chiaro. Metti la configurazione sensibile in .claude/settings.local.json e aggiungilo al .gitignore.

Prima crea un account in sola lettura

Non dare a Claude un account con permessi di scrittura. Crea un utente in sola lettura in PostgreSQL:

CREATE USER claude_readonly WITH PASSWORD 'your_password';
GRANT CONNECT ON DATABASE myapp_production TO claude_readonly;
GRANT USAGE ON SCHEMA public TO claude_readonly;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO claude_readonly;
ALTER DEFAULT PRIVILEGES IN SCHEMA public
  GRANT SELECT ON TABLES TO claude_readonly;

Per le tabelle che non vuoi che Claude veda (sessions, audit_logs…), non concedere i permessi o spostale in uno schema separato.

Verificare la connessione

Riavvia Claude Code e chiedi:

Elenca tutte le tabelle del database

Se Claude restituisce un elenco di tabelle invece di "non ho accesso al database", la connessione MCP funziona.

Esempi di utilizzo reale

Scenario 1: Capire la struttura dei dati

Qual è la relazione tra le tabelle users e orders?
Ci sono vincoli di chiave esterna?

Scenario 2: Analisi dei dati

Degli utenti registrati negli ultimi 30 giorni,
quale percentuale ha effettuato almeno un ordine?
Suddiviso per canale di registrazione.

Scenario 3: Debug

Trova gli ordini con status = 'pending' creati più di 7 giorni fa.
Quanti sono e quando è stato creato l'ultimo?

Scenario 4: Supporto allo sviluppo

Voglio aggiungere una colonna last_login_at alla tabella users.
Scrivi il SQL di migrazione e verifica se gli indici esistenti sono sufficienti.

Controllare cosa può vedere Claude

Controllo per tabella

GRANT SELECT ON TABLE users, orders, products TO claude_readonly;

Filtrare colonne sensibili con una view

CREATE VIEW users_safe AS
  SELECT id, email, created_at, plan, status FROM users;
GRANT SELECT ON users_safe TO claude_readonly;

Connessione a un database remoto

Usa un tunnel SSH:

ssh -L 5433:localhost:5432 [email protected] -N

Poi usa la porta locale nella configurazione.

Cosa cambia in pratica

Il cambiamento più evidente: le conversazioni sui dati non richiedono più preparazione. Niente schema da spiegare, niente tipi di campo da descrivere — dici cosa ti serve e Claude cerca. Particolarmente utile nel debug: invece di fare la query, copiare e incollare, descrivi il problema e Claude interroga direttamente.