Skip to main content

Introduzione al Model Context Protocol (MCP)

Alessandro Mengoli
Serie: Model Context Protocol - Parte 1

Il Model Context Protocol è un protocollo open source nato da Anthropic nel 2024 con l’obiettivo di creare un canale standard attraverso cui le applicazioni di intelligenza artificiale possono accedere a sistemi esterni, come ad esempio l’accesso ad un file locale o interrogare un database. Pensa ad applicazioni come Claude Desktop che fino a pochi mesi fa non avevano la possibilità di accedere ai file per modificarli, mentre ora possono averne la capacità grazie ad MCP. Essendo un protocollo che fornisce un linguaggio comune tra modelli e sistemi esterni sta avendo un grande impatto e sta venendo universalmente riconosciuto.

Casi d’uso

Nonostante sia stato rilasciato da pochi mesi, MCP sta rapidamente guadagnando terreno nell’ecosistema dell’IA. Quello che lo rende interessante è la velocità con cui la community sta abbracciando lo standard.

Nel mondo dello sviluppo

Se sei uno sviluppatore, probabilmente stai già usando strumenti che hanno iniziato a integrare MCP. Visual Studio Code lo utilizza come client per GitHub Copilot, permettendo di accedere al contesto del progetto in modo standardizzato. Anche Visual Studio ha seguito la stessa strada per arricchire il contesto disponibile ai suoi strumenti di IA.

Claude Desktop è stato uno dei primi esempi di client MCP maturo. Grazie a questa integrazione, Claude può ora accedere al filesystem locale, interrogare database o connettersi a servizi esterni. È un cambio di paradigma: prima Claude poteva solo “parlare”, ora può effettivamente “fare” cose sul tuo computer.

Anche Docker sta integrando MCP per permettere agli assistenti IA di interagire con container e ambienti di sviluppo.

Un ecosistema in crescita

Nel repository ufficiale puoi già trovare decine di server pronti all’uso. Alcuni esempi per ambito:

Development:

  • PostgreSQL MCP - interroga database in linguaggio naturale: “mostrami gli ultimi 10 ordini con valore superiore a 100 euro”
  • Git MCP - gestisci repository via conversazione: “crea un branch per la feature login con OAuth”
  • Azure DevOps MCP - integra work items e pipeline: “quali sono i bug aperti nel progetto X?”

Produttività:

  • Filesystem MCP - leggi e scrivi file locali: “crea un README con la struttura standard del progetto”
  • Google Drive MCP - accedi ai documenti cloud senza lasciare l’IA
  • Slack MCP - invia messaggi e cerca conversazioni

Monitoring:

  • Grafana MCP - interroga metriche e crea dashboard conversazionalmente
  • Prometheus MCP - analizza metriche e alert senza scrivere PromQL

La potenza di questo ecosistema sta nella riusabilità: un server MCP configurato può essere utilizzato da qualsiasi client compatibile, che sia Claude Desktop, Copilot o strumenti futuri.

Architettura: Host, Client e Server

L’architettura di MCP è composta da tre elementi principali che lavorano insieme per gestire la comunicazione:

  • Host è l’applicazione di IA con cui l’utente interagisce, si occupa di coordinare e gestire diversi Client MCP. Può essere, ad esempio, Visual Studio Code.

  • Client è un componente che si occupa di instaurare la connessione con un Server MCP. Un esempio può essere Github Copilot.

  • Il Server, infine, è il componente che espone le risorse, i dati o gli strumenti esterni che vogliamo rendere accessibili. l server offre le funzionalità e gestisce la logica di dominio, che viene poi condivisa come contesto con il client e i modelli di IA.

Comunicazione e primitive

Protocollo di comunicazione

MCP utilizza JSON-RPC 2.0, un protocollo leggero per chiamate remote che comunica tramite messaggi JSON. In pratica, client e server si scambiano richieste e risposte in formato JSON strutturato, rendendo la comunicazione semplice da debuggare e indipendente dal linguaggio di programmazione.

Esempio di una richiesta JSON-RPC:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "query_database",
    "arguments": {
      "sql": "SELECT * FROM users LIMIT 10"
    }
  }
}

MCP può utilizzare due metodi di trasporto:

  • stdio che usa lo stram input/output per gestire comunicazioni con processi locali sulla stessa macchina
  • streamable HTTP che usa delle POST HTTP per la comunicazioni remote. Supporta l’autenticazione e si raccomanda l’utilizzo di OAuth

Oltre alla comunicazione abbiamo un elemento chiave, ovvero le primitive. Le primitive definiscono cosa possono offrire e scambiarsi a vicenda i client ed i server e vengono poi condivise con le applicazioni di IA.

Il Server MCP può esporre tre tipi di primitive:

  • i Tool, cioè funzioni eseguibili come operazioni su file o chiamate API
  • le Risorse, che rappresentano i dati di contesto accessibili al modello (come lo schema di un database o della documentazione)
  • i Prompt, ovvero template o messaggi predefiniti che il modello può riutilizzare

Sfruttando l’esempio fornito dalla documentazione ufficiale si può pensare ad un esempio concreto considerando un server MCP che fornisce contesto riferito ad un database. Può esporre tool per fare query su database, una risorsa che contiene lo schema del database ed un prompt che fornisce alcuni esempi di interazione con i tool.

Anche il Client espone delle primitive, utili per gestire la comunicazione inversa. Tra queste troviamo:

  • il Logging, che permette al Server di inviare messaggi di log
  • il Sampling, che permette al server di richiedere una completion ai modelli di IA lasciando al client il completo controllo
  • l’Elicitation, che permette di coinvolgere direttamente l’utente, ad esempio per richiedere conferme o preferenze

A livello di esempi possiamo avere un server che espone dei tool di prenotazione voli, fornendo l’elenco dei voli possibili e demanda al client ed all’LLM la scelta del volo più adatto per l’utente.

Il protocollo supporta inoltre notifiche in tempo reale, così Client e Server possono aggiornarsi dinamicamente quando cambia qualcosa — come l’aggiunta di un nuovo Tool.

Conclusioni

Il Model Context Protocol rappresenta uno dei passi più importanti verso un’integrazione nativa e standardizzata tra intelligenza artificiale e applicazioni reali. Nonostante sia un protocollo molto recente, sta trovando uno sviluppo molto rapido grazie all’adozione da parte della community.

Un’importante nota sulla sicurezza

Prima di iniziare a usare MCP, è fondamentale ricordare il principio del minimo privilegio: dai ai server MCP solo i permessi strettamente necessari. Se un server deve solo leggere file, non dargli permessi di scrittura. Se deve interrogare un database, crea un utente con accesso limitato alle sole tabelle necessarie. La potenza di MCP porta con sé la responsabilità di usarlo con attenzione.

Prossimi passi

Nei prossimi articoli della serie esploreremo:

  • Come creare un MCP Server in .NET da zero
  • Come integrarlo con VSCode e altri client
  • Analisi dettagliata della comunicazione tra Client e Server con esempi pratici
  • Best practices di sicurezza e deployment