Claude Code ha introdotto il supporto per MCP Tasks, una funzionalità che permette ai server MCP di rispondere a richieste lunghe con un task invece che con il risultato finale. Questo consente a Claude di continuare a lavorare con l'utente mentre il server esegue il lavoro in background. La funzione è attualmente in beta pubblica nella CLI e richiede la versione 2.1.304 o superiore, rilasciata il 19 ottobre.

Cos'è MCP e come funziona

MCP (Model Context Protocol) è il protocollo aperto di Anthropic che consente agli assistenti come Claude di connettersi a strumenti e dati esterni tramite server dedicati. Un tool call è di default sincrono, il che significa che l'assistente invia la richiesta e attende la risposta. Questo è accettabile per operazioni semplici come la lettura di un file, ma non per operazioni più complesse come l'esportazione di un report di dieci minuti o l'avvio di un build.

Come funziona un MCP Task

Un MCP Task è un lavoro lungo (come l'esportazione di un report, un build, o una pipeline) che il server MCP esegue autonomamente mentre la chiamata di Claude Code torna immediatamente con un identificatore del task. Claude riceve l'identificatore e continua a lavorare, mostrando un contatore nel footer. Quando il lavoro è completato, una riga nel transcript indica che il task è completato e il risultato viene inviato a Claude, non nel transcript.

Il meccanismo segue la specifica dell'estensione e può essere riassunto in cinque passaggi:

    • Claude Code segnala l'estensione io.modelcontextprotocol/tasks nelle sue capabilities.
    • Il server decide per ogni richiesta se creare un task.
    • Il server risponde a tools/call con un oggetto task che contiene taskId, lo stato working e l'intervallo di polling consigliato.
    • Claude Code chiama tasks/get direttamente dopo la risposta e poi in ogni intervallo, rispettando pollIntervalMs.
    • Se il server ha bisogno di una decisione, lo stato cambia in input_required e la richiesta passa attraverso la mappa inputRequests.

Quando il lavoro è completato, lo stato diventa completed e il campo result contiene ciò che la chiamata avrebbe restituito in modo sincrono, o failed con il campo error.

Gestione degli stati del task

Ci sono cinque stati possibili per un task: working, input_required, completed, failed e cancelled. Gli ultimi tre sono terminali, il che significa che un task che raggiunge uno di questi stati non cambia più. Il server può inviare aggiornamenti alternativamente tramite notifications/tasks, ma il polling rimane il comportamento di base.

Interazione con l'utente

Un task in esecuzione può fermarsi e chiedere una decisione. Lo stato cambia in input_required e Claude Code apre una finestra di elicitation. La richiesta rimane nascosta fino a quando non viene chiusa. Se la sessione non è interattiva, Claude Code chiede al server di annullare il task senza eseguire i hook Elicitation o il callback onElicitation del Agent SDK.

Comportamento in caso di chiusura della sessione

Il comportamento del task in caso di chiusura della sessione dipende da dove il server è in esecuzione. La documentazione descrive i seguenti casi:

    • Se Claude Code viene terminato e il server è remoto, il task continua a eseguirsi sul server.
    • Se Claude Code viene terminato e il server è stdio (locale), il processo locale si ferma e il lavoro viene interrotto.
    • Se /clear, /branch o /resume viene chiamato in un'altra sessione con Claude Code aperto, il risultato viene inserito nella conversazione corrente.
    • Se una sessione interattiva viene ripresa con claude --resume, --continue o /resume, Claude Code riprendere il monitoraggio del task.
    • Se una nuova sessione viene avviata o --fork-session viene utilizzato, la nuova sessione non monitora il task.

Requisiti per l'uso

Per utilizzare MCP Tasks, sono necessari diversi requisiti:

    • Claude Code deve essere utilizzato nel terminale, Agent SDK o GitHub Actions. La funzione non è attiva nell'estensione per VS Code o nella Desktop App di Claude Code.
    • Il server deve essere un HTTP o stdio server o un claude.ai Connector, connesso tramite la revisione del protocollo 2026-07-28.
    • La sessione deve richiedere i feature flags, il che esclude terze parti come Amazon Bedrock e installazioni con telemetria o flags disattivati.
    • La chiamata deve provenire dalla conversazione principale, poiché quelle dei subagents e degli IDE server non vengono convertite in task.

Le versioni del protocollo MCP portano una data come identificatore, e la versione del 28 luglio 2026 (revisione 2026-07-28) è la prima in cui i task sono un'estensione ufficiale. Un server aggiornato a questa versione può utilizzare i task, mentre un server su una versione precedente non li offre e risponde in modo sincrono come al solito.

Per gli sviluppatori di server MCP

Chi fornisce un servizio esistente come server MCP (come il MCP Adapter per WordPress) deve decidere quali operazioni devono tornare come task. Il server risponde a tools/call con un oggetto task. Ecco un esempio dalla documentazione di Claude Code:

{

"resultType": "task",

"taskId": "build-7f3a9c2e",

"status": "working",

"createdAt": "2026-10-22T14:03:07Z"

}

Questa nuova funzionalità di MCP Tasks in Claude Code offre un modo efficiente per gestire lavori lunghi e complessi, migliorando l'esperienza utente e l'efficienza del sistema.