🔌 Cos'è MCP?
The Model Context Protocol (MCP) è uno standard aperto pubblicato da Anthropic nel dicembre 2024 che definisce un'interfaccia universale per connettere modelli AI a strumenti esterni, sorgenti di dati e servizi. Prima di MCP, ogni integrazione AI era un'implementazione personalizzata e unica. MCP standardizza come i client AI comunicano con capacità esterne — così una singola integrazione funziona con qualsiasi sistema AI compatibile.
MCP è un protocollo client-server: Client MCP sono sistemi AI (come Claude, Cursor, VS Code con Copilot) che vogliono usare capacità esterne. Server MCP sono servizi che espongono quelle capacità (GitHub, un database, un file system, un browser web) tramite un'API standardizzata che qualsiasi client MCP può consumare.
🔋 La metafora USB-C
Prima di USB-C, ogni dispositivo aveva il proprio connettore proprietario — un caricatore per telefono non funzionava con un laptop, un cavo video non funzionava con dispositivi di archiviazione. USB-C ha risolto questo con un unico standard universale: una porta, un cavo, dispositivi infiniti.
Le integrazioni AI prima di MCP erano lo stesso caos. Collegare Claude a GitHub richiedeva codice personalizzato. Collegare GPT-4 alla stessa API GitHub richiedeva codice diverso. Aggiungere un nuovo strumento significava ricostruire integrazioni da zero per ogni piattaforma AI.
MCP è l'USB-C per l'AI. Un solo standard:
- Costruisci un server MCP una volta — qualsiasi client MCP può usarlo
- Adotta un nuovo modello AI — i tuoi server MCP esistenti funzionano immediatamente
- L'ecosistema di server MCP cresce indipendentemente dallo sviluppo dei modelli AI
⚙️ Come funziona MCP
MCP usa un protocollo JSON-RPC 2.0 sopra un livello di trasporto (stdio per server locali, HTTP/SSE per server remoti). La comunicazione segue un ciclo di vita di inizializzazione, scoperta delle capacità, e gestione delle richieste.
Tre primitive principali
| Primitive | Cosa espone | Example |
|---|---|---|
| Tools | Funzioni che l'AI può chiamare (controllate dal modello) | search_github_issues, run_sql_query, send_email |
| Resources | Dati che l'AI può leggere (controllati dall'applicazione) | file:///workspace/src, db://customers/schema |
| Prompts | Modelli di prompt riutilizzabili (controllati dall'utente) | code-review, summarize-pr, explain-error |
Il flusso di comunicazione
- Inizializza: Il client si connette al server, scambia versione del protocollo e capacità
- Scopri: Il client richiede la lista degli strumenti, delle risorse e dei prompt disponibili
- Invoca: Il modello AI decide di chiamare uno strumento; il client invia la richiesta al server
- Ritorno: Il server esegue l'azione e restituisce risultati strutturati al client
- Continua: Il modello AI incorpora i risultati e continua il ragionamento
Opzioni di trasporto
| Transport | Ideale per | Notes |
|---|---|---|
| stdio | Strumenti locali, integrazioni CLI | Il client lancia il server come subprocess; configurazione più semplice |
| HTTP + SSE | Servizi remoti/cloud, team condivisi | Il server gira indipendentemente; supporta header di auth |
| WebSocket | Bidirezionale in tempo reale (bozza) | Proposto per casi d'uso streaming |
🔄 MCP vs Function Calling
Function calling (uso di strumenti) è una funzionalità inclusa in specifiche API AI — OpenAI, Anthropic, Google — che consente di definire funzioni personalizzate che il modello può invocare. MCP è uno strato sopra o affianco al function calling che standardizza come quelle funzioni vengono scoperte e collegate.
| Function Calling | MCP | |
|---|---|---|
| Scope | Specifico per API, per richiesta | Multipiattaforma, standardizzato |
| Discovery | Hardcoded nella tua chiamata API | Dinamico — il server pubblicizza le capacità |
| Portability | Legato a un provider AI | Funziona con qualsiasi client compatibile MCP |
| Resources | Non standardizzato | Primaria (file, DB, URI) |
| Ideale per | Casi semplici, single-provider | Sistemi di produzione multi-tool, multi-model |
Nella pratica, i server MCP spesso usano function calling internamente — MCP fornisce lo strato di scoperta e connessione, mentre il function calling gestisce la vera invocazione LLM→strumento.
🏢 Chi supporta MCP
L'adozione di MCP è cresciuta rapidamente dal lancio di dicembre 2024. A partire da aprile 2026, l'ecosistema include:
Client AI con supporto MCP
- Claude (Anthropic) — supporto MCP nativo in Claude.ai e Claude Code
- Cursor — server MCP per assistenza AI consapevole del codice
- VS Code (GitHub Copilot) — integrazione MCP in modalità agente
- Windsurf (Codeium) — supporto server MCP
- Continue.dev — assistente IDE open-source con MCP
Server MCP popolari
- Filesystem — lettura/scrittura file locali (ufficiale Anthropic)
- GitHub — repo, PR, issue, ricerca codice
- PostgreSQL / SQLite — query su database ed esplorazione di schema
- Brave Search / Exa — ricerca web senza API key
- Puppeteer / Playwright — automazione del browser
- Slack / Linear / Notion — integrazioni con strumenti di produttività
🚀 Primi passi con MCP
Opzione 1: Usare server MCP esistenti (5 minuti)
Il modo più rapido per provare MCP è usare Claude Desktop con server preconfigurati. Modifica la tua configurazione di Claude Desktop in ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/Users/yourname/Documents"]
},
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_..." }
}
}
} Opzione 2: Costruire un server MCP (30 minuti)
SDK ufficiali sono disponibili per TypeScript, Python e Kotlin:
// TypeScript MCP server example
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
const server = new Server({ name: "my-server", version: "1.0.0" });
server.setRequestHandler("tools/list", async () => ({
tools: [{
name: "get_weather",
description: "Get current weather for a city",
inputSchema: {
type: "object",
properties: { city: { type: "string" } },
required: ["city"]
}
}]
}));
server.setRequestHandler("tools/call", async (request) => {
const { city } = request.params.arguments;
// ... fetch weather data
return { content: [{ type: "text", text: `Weather in ${city}: sunny, 22°C` }] };
});
const transport = new StdioServerTransport();
await server.connect(transport); 🔐 Considerazioni sulla sicurezza MCP
Il potere di MCP — dare ai modelli AI accesso a strumenti, file e servizi — introduce anche rischi di sicurezza che gli sviluppatori devono mitigare.
| Risk | Description | Mitigation |
|---|---|---|
| Iniezione di prompt tramite MCP | Contenuti dannosi nei risultati degli strumenti manipolano l'AI | Sanifica l'output degli strumenti; usa modelli separati per ragionamento e azione |
| Server con privilegi eccessivi | Il server MCP ha più permessi del necessario | Principio del minimo privilegio; preferire sola lettura quando possibile |
| Confused deputy | L'AI agisce per conto di un attaccante senza che l'utente ne sia consapevole | Conferma HITL per azioni distruttive/irreversibili |
| Supply chain del server | Un server MCP di terze parti malevolo esfiltra dati | Usa solo server affidabili e sottoposti a audit; rivedi il codice del server |
Per un'analisi approfondita sulle vulnerabilità di sicurezza AI — incluso come l'iniezione di prompt può essere strumentalizzata tramite i risultati degli strumenti MCP — vedi la nostra guida: Prompt Injection Explained.