Tecnologia

MCP v2 stateless vs MCP v1 stateful (2026): specifica finale, SDK principale ancora alla 1.30.0

MCP v2 stateless vs MCP v1 stateful, quattro giorni dopo la scadenza del 28 luglio: il tag della specifica è finale e PyPI mcp è alla 2.0.0, ma @modelcontextprotocol/sdk resta alla 1.30.0. Confronto su scalabilità, stabilità degli SDK, autorizzazione e rischio di migrazione.

5
MCP v2 senza stato
vs
1
MCP v1 con stato
Verdetto Rapido

Quattro giorni dopo la scadenza il quadro è cambiato due volte. La specifica è finale: il tag 2026-07-28 è passato a non-prerelease il 28 luglio alle 16:47 UTC, quindi l'obiezione di governance alla migrazione decade. PyPI ha seguito lo stesso giorno — pip install mcp ora risolve alla 2.0.0 (caricata il 28 luglio alle 13:45 UTC), non più alla 1.28.1 ancora corrente la mattina della scadenza. Ciò che non si è mosso è l'SDK TypeScript principale: @modelcontextprotocol/sdk resta alla 1.30.0, pubblicata il 2026-07-27 alle 17:56 UTC. La linea di frattura non separa più TypeScript da Python, ma i pacchetti server e Python da quell'unico pacchetto TypeScript principale che quasi ogni client su misura importa. Scelga v2 stateless ora se sviluppa server MCP in TypeScript (i pacchetti con scope @modelcontextprotocol/server, /node e /hono sono 2.0.0 stable) o in Python, e se le servono scalabilità orizzontale senza sessioni sticky, routing resistente ai riavvii ed esecuzione serverless pulita. Resti su v1 stateful dove dipende direttamente da @modelcontextprotocol/sdk — il codice client e tutto ciò che poggia sull'SDK principale non ha alcun 2.x da installare — o dove i suoi client e adattatori non sono stati testati contro un server stateless. In ogni caso fissi le versioni: quattro pacchetti npm con scope e il mcp di PyPI risolvono ormai latest alla 2.0.0, quindi un'installazione non fissata attraversa da sola una versione major. E il 28 luglio non si è rotto nulla: le deprecazioni di Roots, Sampling e Logging restano semplici annotazioni per almeno un anno — migri con criterio, pacchetto per pacchetto.

Confronto Dettagliato

Un'analisi comparativa dei fattori chiave per aiutarti a fare la scelta giusta.

Fattore
MCP v2 senza statoConsigliato
MCP v1 con statoVincitore
Scalabilità orizzontale
Ogni richiesta può raggiungere qualsiasi istanza compatibile quando lo stato dell'applicazione non vive più nel server di protocollo
Sessioni lunghe e affinità di connessione sono più semplici da ragionare, ma complicano autoscaling e failover
Stabilità dell'SDK
Rilascio a tappe: i pacchetti server con scope sono passati a 2.0.0 stable il 27 luglio e PyPI mcp ha seguito il 28, ma @modelcontextprotocol/sdk resta alla 1.30.0 — v2 è installabile ovunque tranne nel pacchetto TypeScript principale
Resta ciò che fornisce @modelcontextprotocol/sdk e, per quel pacchetto, la linea mantenuta per correzioni di bug e di sicurezza
Hosting serverless ed effimero
Progettato per esecuzioni brevi richiesta-risposta, rendendo più puliti i modelli Vercel, Cloud Run, Lambda e container in autoscaling
Funziona meglio quando un processo può tenere vivo il contesto di sessione; possibile in serverless, ma più scomodo da gestire
Gestione dello stato
Sposta lo stato in contesti client espliciti, storage condivisi o database applicativi; più pulito, ma richiede refactoring
Permette al codice server di mantenere in memoria ipotesi di sessione, comodo per piccoli strumenti interni
Compatibilità dell'ecosistema oggi
La specifica è finale e sia la superficie server TypeScript sia Python sono installabili alla 2.0.0: uno stack multilingua ora può muoversi quasi come un blocco unico
La maggior parte di esempi, pacchetti e server interni presuppone ancora il comportamento v1, e chi importa l'SDK TypeScript principale non ha alternative
Autorizzazione e governance
La specifica finale 2026-07-28 richiede OAuth 2.0 Protected Resource Metadata (RFC 9728) per annunciare la posizione del server di autorizzazione e inserisce una politica formale di deprecazione nella roadmap del protocollo
L'autorizzazione può essere governata al gateway, ma la linea di protocollo è più vecchia e meno esplicita sul nuovo modello
Rischio di migrazione
Ora distribuito su entrambi i registri: un'installazione non fissata può saltare alla 2.0.0 su quattro pacchetti npm con scope e su pip install mcp senza che lei lo chieda — vincoli di versione e test paralleli sono obbligatori
Basso se fissa le versioni — ma il rischio ora è concreto su npm e su PyPI, non più solo su npm
A prova di futuro
Allineato a una specifica ora finale e non più release candidate; i pacchetti server e Python ci sono già, l'SDK principale è l'unico pezzo che deve ancora seguire
Una base di compatibilità con una via d'uscita dichiarata (server-legacy), rilasciata però già come deprecata
Punteggio Totale5/ 81/ 82 pareggi
Scalabilità orizzontale
MCP v2 senza stato
Ogni richiesta può raggiungere qualsiasi istanza compatibile quando lo stato dell'applicazione non vive più nel server di protocollo
MCP v1 con stato
Sessioni lunghe e affinità di connessione sono più semplici da ragionare, ma complicano autoscaling e failover
Stabilità dell'SDK
MCP v2 senza stato
Rilascio a tappe: i pacchetti server con scope sono passati a 2.0.0 stable il 27 luglio e PyPI mcp ha seguito il 28, ma @modelcontextprotocol/sdk resta alla 1.30.0 — v2 è installabile ovunque tranne nel pacchetto TypeScript principale
MCP v1 con stato
Resta ciò che fornisce @modelcontextprotocol/sdk e, per quel pacchetto, la linea mantenuta per correzioni di bug e di sicurezza
Hosting serverless ed effimero
MCP v2 senza stato
Progettato per esecuzioni brevi richiesta-risposta, rendendo più puliti i modelli Vercel, Cloud Run, Lambda e container in autoscaling
MCP v1 con stato
Funziona meglio quando un processo può tenere vivo il contesto di sessione; possibile in serverless, ma più scomodo da gestire
Gestione dello stato
MCP v2 senza stato
Sposta lo stato in contesti client espliciti, storage condivisi o database applicativi; più pulito, ma richiede refactoring
MCP v1 con stato
Permette al codice server di mantenere in memoria ipotesi di sessione, comodo per piccoli strumenti interni
Compatibilità dell'ecosistema oggi
MCP v2 senza stato
La specifica è finale e sia la superficie server TypeScript sia Python sono installabili alla 2.0.0: uno stack multilingua ora può muoversi quasi come un blocco unico
MCP v1 con stato
La maggior parte di esempi, pacchetti e server interni presuppone ancora il comportamento v1, e chi importa l'SDK TypeScript principale non ha alternative
Autorizzazione e governance
MCP v2 senza stato
La specifica finale 2026-07-28 richiede OAuth 2.0 Protected Resource Metadata (RFC 9728) per annunciare la posizione del server di autorizzazione e inserisce una politica formale di deprecazione nella roadmap del protocollo
MCP v1 con stato
L'autorizzazione può essere governata al gateway, ma la linea di protocollo è più vecchia e meno esplicita sul nuovo modello
Rischio di migrazione
MCP v2 senza stato
Ora distribuito su entrambi i registri: un'installazione non fissata può saltare alla 2.0.0 su quattro pacchetti npm con scope e su pip install mcp senza che lei lo chieda — vincoli di versione e test paralleli sono obbligatori
MCP v1 con stato
Basso se fissa le versioni — ma il rischio ora è concreto su npm e su PyPI, non più solo su npm
A prova di futuro
MCP v2 senza stato
Allineato a una specifica ora finale e non più release candidate; i pacchetti server e Python ci sono già, l'SDK principale è l'unico pezzo che deve ancora seguire
MCP v1 con stato
Una base di compatibilità con una via d'uscita dichiarata (server-legacy), rilasciata però già come deprecata

Statistiche Chiave

Dati reali da fonti verificate del settore per supportare la tua decisione.

I pacchetti server MCP — @modelcontextprotocol/server, /node, /hono e /server-legacy — hanno pubblicato la loro prima versione stabile 2.0.0 il 27/07/2026 alle 23:55 UTC, cinque minuti prima della scadenza, dopo quattro alpha e cinque beta.

registro npm (@modelcontextprotocol/server)

Il tag di specifica 2026-07-28 è finale: GitHub riporta prerelease=false, pubblicato il 2026-07-28T16:47:49Z — la prima specifica MCP finale dal 2025-11-25.

Release GitHub modelcontextprotocol/modelcontextprotocol

L'SDK TypeScript principale non ha ancora una 2.x: @modelcontextprotocol/sdk è alla 1.30.0 sul tag latest, pubblicata il 2026-07-27 alle 17:56 UTC — non si è mossa quando pacchetti server, PyPI e specifica sono diventati finali.

registro npm (@modelcontextprotocol/sdk)

Il mcp di PyPI è passato alla 2.0.0 il 2026-07-28T13:45:28Z, sostituendo la 1.28.1 pubblicata il 2026-06-26 — un semplice pip install mcp ora installa v2.

PyPI (mcp)

La via d'uscita v1 è stata rilasciata già deprecata: server-legacy è pubblicato come «trasporto SSE v1 congelato e helper OAuth Authorization Server… Deprecato; usare StreamableHTTP e un server OAuth dedicato in produzione».

registro npm (@modelcontextprotocol/server-legacy)

Secondo i manutentori, l'84% degli oltre 10.000 pacchetti PyPI che dipendono da mcp non dichiara alcun limite superiore: un'installazione non fissata può quindi scaricare una pre-release v2 incompatibile.

GitHub modelcontextprotocol/python-sdk

Le deprecazioni di Roots, Sampling e Logging del 28 luglio sono solo annotazioni: metodi, tipi e capability flag continuano a funzionare in questa release e in ogni versione della specifica pubblicata entro un anno — i server v1 esistenti non si rompono il 28 luglio.

Blog Model Context Protocol

I server MCP DEVONO implementare OAuth 2.0 Protected Resource Metadata (RFC 9728) per annunciare la posizione del proprio authorization server; l'RC del 28/07/2026 limita inoltre le richieste avviate dal server ai soli momenti in cui sta elaborando attivamente una richiesta del client (SEP-2260).

Specifica di autorizzazione Model Context Protocol

Tutte le statistiche provengono da fonti terze verificate. Fonte, anno e link diretto sono mostrati su ogni metrica.

Quando Scegliere Ogni Opzione

Una guida chiara basata sulla tua situazione specifica ed esigenze.

Scegli MCP v2 senza stato quando...

  • Distribuisce server MCP in TypeScript (@modelcontextprotocol/server 2.0.0) o in Python, dove pip install mcp ora risolve alla 2.0.0
  • Le serve scalabilità orizzontale senza sessioni sticky, oppure hosting serverless ed effimero per strumenti remoti
  • Può spostare lo stato di sessione su client, database o store condivisi prima della migrazione
  • La sua governance richiedeva un tag di specifica finale prima della migrazione — il tag 2026-07-28 è ora finale, non più un release candidate

Scegli MCP v1 con stato quando...

  • Il suo codice importa direttamente @modelcontextprotocol/sdk: resta alla 1.30.0 e non esiste alcuna release 2.x da installare
  • La logica dei suoi server dipende ancora da sessioni di lunga durata, o i suoi client e adattatori non sono testati contro un server stateless
  • Gestisce infrastruttura v1 con versioni fissate, dove un aggiornamento major sul posto è più rischioso del margine di scalabilità che otterrebbe
  • Il suo processo di rilascio richiede che strumenti client e server stiano sulla stessa versione major

La Nostra Raccomandazione

Quattro giorni dopo la scadenza il quadro è cambiato due volte. La specifica è finale: il tag 2026-07-28 è passato a non-prerelease il 28 luglio alle 16:47 UTC, quindi l'obiezione di governance alla migrazione decade. PyPI ha seguito lo stesso giorno — pip install mcp ora risolve alla 2.0.0 (caricata il 28 luglio alle 13:45 UTC), non più alla 1.28.1 ancora corrente la mattina della scadenza. Ciò che non si è mosso è l'SDK TypeScript principale: @modelcontextprotocol/sdk resta alla 1.30.0, pubblicata il 2026-07-27 alle 17:56 UTC. La linea di frattura non separa più TypeScript da Python, ma i pacchetti server e Python da quell'unico pacchetto TypeScript principale che quasi ogni client su misura importa. Scelga v2 stateless ora se sviluppa server MCP in TypeScript (i pacchetti con scope @modelcontextprotocol/server, /node e /hono sono 2.0.0 stable) o in Python, e se le servono scalabilità orizzontale senza sessioni sticky, routing resistente ai riavvii ed esecuzione serverless pulita. Resti su v1 stateful dove dipende direttamente da @modelcontextprotocol/sdk — il codice client e tutto ciò che poggia sull'SDK principale non ha alcun 2.x da installare — o dove i suoi client e adattatori non sono stati testati contro un server stateless. In ogni caso fissi le versioni: quattro pacchetti npm con scope e il mcp di PyPI risolvono ormai latest alla 2.0.0, quindi un'installazione non fissata attraversa da sola una versione major. E il 28 luglio non si è rotto nulla: le deprecazioni di Roots, Sampling e Logging restano semplici annotazioni per almeno un anno — migri con criterio, pacchetto per pacchetto.

Domande Frequenti

Risposte alle domande comuni su questo confronto.

Sì, a tappe, e gran parte proprio nel giorno stesso. I pacchetti server TypeScript con scope sono passati a 2.0.0 stable il 27 luglio alle 23:55 UTC; il mcp di PyPI è passato alla 2.0.0 il 28 luglio alle 13:45 UTC; e il tag di specifica 2026-07-28 è passato a non-prerelease il 28 luglio alle 16:47 UTC. Resta soltanto l'SDK TypeScript principale, @modelcontextprotocol/sdk, ancora alla 1.30.0.
Per i server, in larga misura sì: la specifica è finale, i pacchetti server TypeScript sono 2.0.0 stable e Python installa 2.0.0 per impostazione predefinita. La lacuna residua è lato client e librerie — tutto ciò che importa @modelcontextprotocol/sdk è ancora alla 1.30.0. Faccia un pilota sullo strato server e mantenga fissato il codice che dipende dall'SDK principale.
Con più urgenza rispetto al giorno della scadenza. Il tag latest ora risolve alla 2.0.0 su quattro pacchetti npm con scope e sul mcp di PyPI: un'installazione non fissata attraversa quindi da sola una versione major. I manutentori riferiscono che l'84% degli oltre 10.000 pacchetti PyPI che dipendono da mcp non dichiara alcun limite superiore — quella popolazione ora è esposta in pratica, non più solo in teoria.
È la via d'uscita v1 esplicita, ed è stata rilasciata già deprecata: trasporto SSE v1 congelato e helper OAuth Authorization Server, pubblicati con l'indicazione di usare StreamableHTTP e un server OAuth dedicato in produzione. Usatela per mantenere in vita un server v1 durante la migrazione — non come destinazione.
No. Senza stato significa che il server di protocollo non deve dipendere da una sessione di lunga durata per rispondere a una richiesta. L'applicazione può comunque mantenere stato, ma questo deve risiedere nel client, in un database, in una cache o in un altro livello di persistenza esplicito.
I team che gestiscono su larga scala infrastrutture di server MCP remoti, sia in TypeScript sia in Python: ottengono load balancing ordinario, routing stateless e autorizzazione più chiara, ed entrambi i linguaggi hanno ora una 2.0.0 stabile. I team il cui codice importa l'SDK TypeScript principale dovrebbero attendere la sua 2.x, perché al momento non c'è nulla da installare.

Hai bisogno di aiuto per decidere?

Prenota una consulenza gratuita di 30 minuti e ti aiuteremo a determinare l'approccio migliore per il tuo progetto specifico.

Consulenza gratuita
Senza impegno
Risposta entro 24h