Model Context Protocol (MCP)

Model Context Protocol (MCP)

Model Context Protocol (MCP)

Il Model Context Protocol (MCP) è un protocollo open source progettato per standardizzare il modo in cui le applicazioni forniscono contesto ai modelli di linguaggio di grandi dimensioni (LLM). Analogamente a una porta USB-C, che permette una connessione universale tra dispositivi, MCP consente di collegare in modo uniforme i LLM a diverse fonti di dati e strumenti, facilitando l’integrazione e la creazione di workflow complessi.

Concetti Chiave e Architettura di Model Context Protocol (MCP)

Architettura Client-Server

Al cuore di MCP vi è un’architettura client-server che prevede:

  • MCP Hosts: applicazioni come IDE, strumenti AI o interfacce desktop (ad es. Claude Desktop) che necessitano di accedere ai dati.
  • MCP Clients: componenti che stabiliscono connessioni 1:1 con i server, garantendo una comunicazione affidabile.
  • MCP Servers: piccoli server che espongono capacità specifiche attraverso l’implementazione standard del protocollo.
  • Fonti Dati Locali e Servizi Remoti: MCP consente di accedere in maniera sicura a file, database e servizi esterni tramite API.

Questa struttura permette di disaccoppiare il consumo dei dati dalla loro origine, offrendo flessibilità e scalabilità nella gestione delle informazioni contestuali.

Prompts, Tools e Integrazione con LLM

Il protocollo MCP introduce il concetto di prompts e tools che aiutano gli LLM ad interagire in maniera dinamica con le fonti dati:

  • Prompts: modelli di input predefiniti che guidano il comportamento del LLM nel recuperare informazioni o eseguire azioni specifiche.
  • Tools: strumenti integrati che consentono ai LLM di compiere operazioni come eseguire query, analizzare dati e gestire risorse.
  • Sampling e Transports: meccanismi che permettono di ottenere risposte in maniera ottimizzata e sicura, utilizzando canali di comunicazione standardizzati.

Esempio Pratico con Codice

Un esempio pratico di come un LLM potrebbe utilizzare MCP per interrogare un database potrebbe essere il seguente:

# Esempio di prompt per eseguire una query tramite MCP
prompt = """
Utilizza il server MCP per analizzare il database. 
Strumenti disponibili:
- connect: stabilisci una connessione e ottieni un connection ID
- pg_query: esegui query SQL in sola lettura
- disconnect: chiudi la connessione al termine
Esegui la query: 'SELECT * FROM customers ORDER BY total_sales DESC LIMIT 5;'
"""

# Funzione fittizia che simula l'invio del prompt a un LLM integrato con MCP
def invia_prompt(prompt):
    # In un ambiente reale, qui verrebbe invocata l'API del LLM con il prompt MCP
    print("Prompt inviato al LLM:")
    print(prompt)

invia_prompt(prompt)

Questo esempio mostra come l’LLM possa ricevere un prompt strutturato che specifica gli strumenti disponibili, migliorando l’interazione tra il modello e i dati.

PostgreSQL Model Context Protocol (PG-MCP) Server

Il PG-MCP Server rappresenta un’implementazione concreta del protocollo MCP focalizzata sui database PostgreSQL. Basato sul repository pg-mcp su GitHub, questo server offre un’API completa che permette agli agenti AI di:

  • Scoprire e navigare le strutture del database (schemi, tabelle, colonne e vincoli).
  • Gestire le connessioni in maniera sicura, registrando stringhe di connessione e ottenendo ID di connessione opachi.
  • Eseguire query in modalità read-only, garantendo la sicurezza dei dati.
  • Analizzare piani di esecuzione tramite strumenti dedicati come pg_explain.

Caratteristiche Principali

  1. Gestione delle Connessioni
    • Connect Tool: registra le stringhe di connessione a PostgreSQL e restituisce un connection ID sicuro.
    • Disconnect Tool: chiude esplicitamente le connessioni non più necessarie.
    • Connection Pooling: ottimizza la gestione delle risorse di connessione.
  2. Strumenti di Query
    • pg_query: esegue query SQL in sola lettura sfruttando il connection ID.
    • pg_explain: fornisce analisi dettagliate dei piani di esecuzione delle query, utili per l’ottimizzazione.
  3. Risorse di Schema Discovery
    • Esplorazione dei vari schemi, tabelle e colonne, con informazioni dettagliate sul catalogo del database.
    • Supporto per estensioni come PostGIS e pgvector, che arricchiscono il contesto con dati specifici e best practices.

Installazione e Utilizzo

Il PG-MCP Server può essere installato in due modalità principali: tramite Docker o manualmente.

Installazione con Docker

# Clonare il repository
git clone https://github.com/stuzero/pg-mcp.git
cd pg-mcp

# Costruire ed eseguire il server con Docker Compose
docker-compose up -d

Installazione Manuale

# Clonare il repository
git clone https://github.com/stuzero/pg-mcp.git
cd pg-mcp

# Creare e attivare un ambiente virtuale
python -m venv .venv
source .venv/bin/activate  # Su Windows: .venv\Scripts\activate

# Installare le dipendenze
uv sync --frozen

# Avviare il server
python -m server.app

Architettura e Sicurezza

Il PG-MCP Server è realizzato con componenti moderni come:

  • FastMCP: una libreria Python per l’implementazione di MCP.
  • asyncpg: un client asincrono per PostgreSQL, che consente un’efficiente gestione delle query.
  • YAML: utilizzato per configurare in maniera estensibile il contesto delle estensioni PostgreSQL.

Dal punto di vista della sicurezza, il server:

  • Opera in modalità read-only per default, proteggendo i dati da modifiche indesiderate.
  • Utilizza connection ID opachi per non esporre informazioni sensibili nelle URL.
  • Richiede che le credenziali del database siano inviate una sola volta durante la connessione iniziale.

MCP: Uno Standard Emergente per l’Accesso ai Dati Strutturati

MCP sta rivoluzionando il modo in cui i sistemi di intelligenza artificiale accedono e interagiscono con dati strutturati. Grazie al protocollo standardizzato, è possibile:

  • Integrare facilmente LLM con database e altre fonti dati.
  • Creare soluzioni personalizzate che sfruttano il potere degli LLM senza dover reinventare la gestione del contesto.
  • Garantire la sicurezza e l’efficienza delle operazioni, mantenendo al contempo una grande flessibilità.

Infografica Riassuntiva Model Context Protocol (MCP)

Conclusione Model Context Protocol (MCP)

Il Model Context Protocol (MCP) e la sua implementazione per PostgreSQL rappresentano un notevole passo avanti nella standardizzazione dell’accesso ai dati da parte degli LLM. Questi strumenti permettono di sviluppare agenti intelligenti e flessibili che possono interagire con infrastrutture dati complesse in maniera sicura e modulare. In questo scenario in continua evoluzione, Innovaformazione si distingue come una scuola IT all’avanguardia, capace di affiancare le aziende nella formazione continua dei team di sviluppatori, garantendo sempre un aggiornamento costante sui trend di mercato.

Visionate l’offerta formativa sul nostro sito QUI.

Contatti: info@innovaformazione.net – tel. 3471012275 (Dario Carrassi)

Vuoi essere ricontattato? Lasciaci il tuo numero telefonico e la tua email, ti richiameremo nelle 24h:

    Ti potrebbe interessare

    Articoli correlati