Claude Code ha introdotto il supporto ai MCP Tasks, l’estensione del Model Context Protocol (MCP) che consente a un server MCP di rispondere a una chiamata lunga fornendo subito un task ID anziché attendere il risultato finale. In pratica, Claude continua a dialogare con l’utente mentre il server elabora il lavoro in background, e verifica lo stato del task interrogando periodicamente il server.
Che cosa sono i MCP Tasks e perché sono importanti
Un MCP task rappresenta un lavoro prolungato – ad esempio l’esportazione di un rapporto di dieci minuti, la compilazione di una build o l’esecuzione di una pipeline – che il server MCP esegue autonomamente. Quando Claude Code invia una chiamata tools/call, il server risponde immediatamente con un oggetto contenente:
taskId: identificatore unico del lavoro (max 128 caratteri ASCII stampabili, senza spazi)status: inizialmenteworkingpollIntervalMs: intervallo consigliato per il polling (tra 250 ms e 30 000 ms)
Claude Code mostra nella barra inferiore un contatore del tipo “1 MCP task”. Quando il lavoro termina, il transcript registra una riga del tipo MCP task <id> (server/tool) completed. Il risultato viene inviato a Claude, non al transcript.
Differenze rispetto al background precedente
Fin dalla versione 2.1.212, Claude Code spostava in background le chiamate MCP che superavano i due minuti, ma il lavoro rimaneva legato alla sessione del client: chiudendo Claude Code il task veniva interrotto. Con i MCP Tasks il lavoro vive sul server, e Claude Code conserva solo l’identificatore per interrogare lo stato, garantendo continuità anche se la sessione viene chiusa.
Come funziona un MCP Task: passo per passo
Il meccanismo segue la specifica dell’estensione io.modelcontextprotocol/tasks e si articola in cinque fasi principali:
- Claude Code dichiara la capacità
io.modelcontextprotocol/tasksnelle proprie capabilities. - Il server decide, per ogni chiamata, se creare un task.
- Il server risponde a
tools/callcon un oggettotaskcontenentetaskId,statusworkingepollIntervalMs. - Claude Code invoca
tasks/getsubito dopo la risposta e poi ad ogni intervallo di polling, rispettando il valore dipollIntervalMs. - Il server può passare lo stato a
input_required(richiesta di input), acompleted(con risultato) o afailed/cancelled(stati terminali).
Se il server richiede una decisione, lo stato diventa input_required e Claude Code apre una finestra di elicitation per raccogliere l’input strutturato dell’utente. La risposta viene inviata con tasks/update. In sessioni non interattive, Claude Code non può chiedere input e richiede al server di cancellare il task.
Stati possibili di un task
working: il lavoro è in corso.input_required: è necessaria un’interazione da parte dell’utente.completed: il lavoro è terminato con successo; il camporesultcontiene il risultato.failed: il lavoro è terminato con errore; il campoerrorfornisce i dettagli.cancelled: il lavoro è stato annullato.
I tre ultimi stati sono terminali: una volta raggiunti, il task non cambia più. Il server può anche inviare aggiornamenti tramite notifications/tasks, ma il polling rimane il comportamento di base.
Implicazioni pratiche per gli utenti
Per provare la nuova funzionalità è sufficiente aggiornare Claude Code alla versione 2.1.304 (o successive) e collegare un server MCP che supporti i task. Attualmente la funzionalità è disponibile solo nella CLI da terminale; non è ancora attiva nell’estensione VS Code né nell’app desktop.
Il server deve essere aggiornato alla revisione del protocollo del 28‑07‑2026, la prima a includere ufficialmente i Tasks. Se il server utilizza una versione precedente, continuerà a rispondere in modo sincrono, senza generare task.
Cosa succede chiudendo Claude Code
| Situazione | Effetto sul task |
|---|---|
| Chiudi Claude Code, server remoto | Il task continua a essere eseguito sul server. |
| Chiudi Claude Code, server stdio (processo locale) | Il processo locale si interrompe e il task termina. |
Apri una nuova sessione con --resume o --continue | Claude Code riprende il task in corso e riceve il risultato. |
Avvia una sessione nuova con --fork-session | La nuova sessione non segue il task in corso. |
In sintesi, la continuità è garantita solo quando il server è remoto; i server locali (stdio) muoiono con la sessione.
Chi può utilizzare i MCP Tasks oggi
Per sfruttare i task, sono necessari tutti i seguenti requisiti:
- Claude Code eseguito da terminale, tramite Agent SDK o GitHub Actions (non disponibile in VS Code o app desktop).
- Un server HTTP, stdio o connettore
claude.aiaggiornato alla revisione 2026‑07‑28, senza le variabiliMCPSDKGENERATION=v1oMCPPROTOCOLNEGOTIATION=legacy. - Una sessione che ottenga i feature flag corretti; questo esclude provider terzi come Amazon Bedrock e installazioni con telemetria disattivata.
- Chiamate provenienti dalla conversazione principale (non da sub‑agent o server IDE).
- Versioni del protocollo MCP con data 2026‑07‑28 o successive.
- Esecuzioni “one‑shot” con
claude -p "<prompt>"non generano task.
Guida per gli sviluppatori di server MCP
Chi espone un servizio come server MCP (ad esempio l’MCP Adapter per WordPress) deve decidere quali operazioni restituire come task. La risposta a tools/call deve contenere un oggetto JSON con la seguente struttura:
{
"resultType": "task",
"taskId": "build-7f3a9c2e",
"status": "working",
"createdAt": "2026-10-22T14:03:07Z",
"lastUpdatedAt": "2026-10-22T14:03:07Z",
"ttlMs": null,
"pollIntervalMs": 5000
}
Il taskId è obbligatorio, massimo 128 caratteri ASCII stampabili, senza spazi. Claude Code impone che pollIntervalMs sia compreso tra 250 ms e 30 000 ms.
Flusso di lavoro tipico
- Claude Code invia
tools/callal server. - Il server risponde con un oggetto
task(statusworking). - Claude Code effettua polling con
tasks/getad intervalli definiti. - Se necessario, il server imposta
input_requirede inviainputRequests. - L’utente fornisce l’input tramite la finestra di elicitation; Claude Code invia
tasks/update. - Il server completa il lavoro, imposta
completede fornisceresultoppurefailedconerror.
Conclusioni
L’introduzione dei MCP Tasks in Claude Code rappresenta un salto di qualità nella gestione di operazioni prolungate, separando la durata del lavoro dall’interazione con l’utente. Grazie al task ID persistente, è possibile chiudere e riaprire le sessioni senza perdere il progresso, a patto di utilizzare server remoti aggiornati. Gli sviluppatori di tool e integrazioni dovranno adeguare i propri server alla revisione del protocollo del 28‑07‑2026 per beneficiare di questa funzionalità, mentre gli utenti finali potranno già sperimentarla aggiornando Claude Code alla versione 2.1.304 e collegando un server compatibile.
