MCP प्रोटोकॉल टीमने २८ जुलै २०२६ रोजी एक नवीन आवृत्ती लाँच केली आहे, ज्यामध्ये प्रोटोकॉल-स्तरीय सेशन (session) काढून टाकण्यात आले आहे आणि प्रत्येक विनंती (request) 'stateless' असणे अनिवार्य केले आहे. जर तुम्ही MCP क्लायंट, सर्व्हर किंवा एजंट्स चालवत असाल, तर तुम्हाला ज्या कोडमध्ये 'persistent session ID' गृहीत धरले आहे, तो तुम्हाला पुन्हा लिहावा लागेल—अन्यथा तुम्हाला चुकीचे राउटिंग (broken routing), कॅश मिस (cache misses) आणि अनियंत्रित बॅकग्राउंड वर्कचा सामना करावा लागेल.

हा बदल का महत्त्वाचा आहे

पूर्वी MCP मध्ये हँडशेक (handshake) आवश्यक असे, ज्याद्वारे सेशन आयडेंटिफायर तयार होत असे. डाउनस्ट्रीम सेवा त्या आयडीवर अवलंबून असत जेणेकरून विनंतींची मालिका एकाच प्रोसेसवर येईल, लोड बॅलन्सरला 'sticky routing' वापरता येईल आणि मेमरीमध्ये प्रति-सेशन डेटा साठवता येईल. जुलैच्या रिलीजमध्ये हा मॉडेल बदलून शुद्ध 'request-response flow' मध्ये रूपांतरित करण्यात आला आहे. आता सेशन गमावण्याची काळजी न करता सर्व्हर जोडला किंवा काढला जाऊ शकतो. प्रोटोकॉल आता कॉन्टेक्स्ट (context) जतन करत नाही; ते आता ॲप्लिकेशनला करावे लागेल.

ज्या टीम्स जुना सेशन-केंद्रित कोड वापरत राहतील, त्यांच्या विनंत्या चुकीच्या इन्स्टन्सवर जातील, कॅश मिस होतील आणि बॅकग्राउंड जॉब्सचा ढीग साचेल. ज्या टीम्स 'stateless' पॅटर्नचा अवलंब करतील, त्या नॉन-स्टिकी लोड बॅलन्सरच्या मागे MCP चालवू शकतील आणि संपूर्ण रिक्वेस्ट चेनमध्ये अधिक अचूक ऑब्झर्व्हेबिलिटी (observability) मिळवू शकतील.

नक्की काय बदलले आहे

  • प्रोटोकॉल लाइफसायकल (Protocol lifecycle) – हँडशेक आणि सेशन आयडी आता राहणार नाहीत. प्रत्येक विनंतीमध्ये सर्व्हरला आवश्यक असलेली सर्व माहिती असणे आवश्यक आहे; त्यानंतरची विनंती त्याच प्रोसेसवर येईल याची कोणतीही खात्री नाही.
  • HTTP राउटिंग (HTTP routing) – गेटवे आता विनंती कोठे पाठवायची हे ठरवण्यासाठी Mcp-Method आणि Mcp-Name हे दोन नवीन हेडर्स वाचतात. सेशन-कुकी राउटिंग आता काम करणार नाही.
  • कॅशिंग (Caching) – स्पेसिफिकेशनमध्ये रीड्ससाठी ttlMs (मिलीसेकंदमध्ये time-to-live) आणि cacheScope फील्ड्स जोडली आहेत. जुना डेटा स्वीकारार्ह आहे की नाही हे तुम्ही ठरवू शकता आणि त्यानुसार कॅश कॉन्फिगर करू शकता.
  • ऑब्झर्व्हेबिलिटी (Observability)_meta ब्लॉक आता W3C Trace Context पेलोडची अपेक्षा करतो, ज्यामुळे ट्रेसिंग सिस्टम्स एज गेटवे, टूलिंग आणि बॅकएंड वर्क यांना एका सिंगल एंड-टू-एंड ट्रेसमध्ये जोडू शकतात.
  • कंपोझिशन (Composition) – एक्स्टेंशन्स आता औपचारिक (formalised) करण्यात आले आहेत; मुख्य स्पेसिफिकेशनला स्पर्श न करता नवीन क्षमता जोडल्या जाऊ शकतात, ज्यामुळे प्लग-इन शैलीतील आर्किटेक्चरला प्रोत्साहन मिळेल.
  • दीर्घकाळ चालणारे काम (Long-running work) – मिनिटे किंवा तास चालणाऱ्या कामांसाठी साधी request/response आता पुरेशी नाही. प्रोटोकॉल आता असिंक्रोनस (asynchronous) कामासाठी लाइफसायकल कंट्रोल्ससह एक Task ऑब्जेक्ट परिभाषित करतो.

लेगसी कोडमध्ये लपलेले धोके

त्वरीत ऑडिट केल्यास अनेकदा असे पॅटर्न आढळतात जे 'statefulness' गृहीत धरतात:

  • सेशन आयडीद्वारे की (key) केलेले इन-मेमरी मॅप्स.
  • स्टिकी सेशन्ससाठी कॉन्फिगर केलेले लोड बॅलन्सर.
  • स्टार्टअप रूटीन्स जे प्रति-सेशन डेटा स्थानिक मेमरीमध्ये प्रीलोड करतात.
  • सेशन संपल्यावर बिझनेस डेटा डिलीट करणारे क्लीनअप लॉजिक.

जर यापैकी काहीही स्थलांतरादरम्यान (migration) तसेच राहिले, तर लोड असताना सिस्टम डेटा गमावेल किंवा रिसोर्सेस लीक होतील.

एक ठोस स्थलांतर चेकलिस्ट (Migration Checklist)

1. सध्याच्या गृहितकांची (assumptions) यादी करा

तुमचा कोड जिथे जिथे सेशन आयडी, स्टिकी-राउटिंग नियम किंवा प्रोसेस-लोकल कॅश वापरतो, त्या सर्व ठिकाणांची नोंद करा. कोणते घटक कशावर अवलंबून आहेत याचे दस्तऐवजीकरण करा.

2. ओळख (identity) स्पष्ट करा

प्रत्येक रिक्वेस्ट पेलोड किंवा हेडरमध्ये टेनंट आयडी (tenant IDs), रन आयडी (run IDs) आणि युजर आयडी (user IDs) जोडा. अधिकारांसाठी (authorization) आणि डेटा पार्टिशनिंगसाठी या आयडेंटिफायर्सना 'सोर्स ऑफ ट्रुथ' माना.

3. राउटिंग कॉन्फिगरेशन अपडेट करा

सेशन-आधारित राउटिंगच्या जागी Mcp-Method आणि Mcp-Name वाचणारे नियम वापरा. नॉन-स्टिकी लोड बॅलन्सरच्या मागे किमान दोन-इन्स्टन्स डिप्लॉयमेंट वापरून नवीन गेटवे लॉजिकची चाचणी घ्या.

4. कॅशिंग लॉजिक रिफॅक्टर (refactor) करा

नवीन ttlMs आणि cacheScope फील्ड्सचा वापर करा. विविध TTL व्हॅल्यूजचा हिट रेट आणि फ्रेशनेस आवश्यकतांवर काय परिणाम होतो, हे पाहण्यासाठी परफॉर्मन्स टेस्ट्स चालवा.

एंड-टू-एंड ट्रेसिंग सक्षम करा: _meta ब्लॉकमध्ये W3C Trace Context हेडर भरा. ट्रेस आता एज गेटवेपासून तुमच्या बॅकएंड सेवांपर्यंत कोणत्याही त्रुटीशिवाय प्रवाहत आहेत याची खात्री करा.

असिंक (async) कामासाठी Task मॉडेलचा अवलंब करा: टास्क कोण तयार करू शकते ते परिभाषित करा, कमाल रनटाइम सेट करा आणि क्यू (queue) मर्यादा लागू करा. स्पष्ट कॅन्सलेशन आणि रिट्राय पॉलिसी जोडा, आणि टास्क प्रलंबित असताना एजंट काय करू शकतो यावर मर्यादा ठेवा.

२८ जुलैपूर्वी SDK आणि क्लायंट लायब्ररीच्या रिलीज नोट्स तपासा.

रिग्रेशन सूट्स (regression suites) चालवा: केवळ 'हॅपी-पाथ' टेस्ट्स व्यतिरिक्त, मिसिंग हेडर्स, एक्स्पायर्ड टास्क आणि चुकीचे कॅश डायरेक्टिव्हज टाकून चाचणी करा. सिस्टम त्रुटी आल्यावरही व्यवस्थित काम करते (degrades gracefully) याची खात्री करा.

पुढे काय पाहावे

जे टीम्स सुरक्षितपणे स्थलांतरित होतील, ते केवळ 'हॅपी पाथ' नाही, तर मर्यादांची (boundaries) देखील चाचणी करतील. २८ जुलै नंतरही सेशन आयडीची अपेक्षा करणाऱ्या कोणत्याही प्रोडक्शन डिप्लॉयमेंटमध्ये नवीन MCP सर्व्हरसोबत काम करताना त्रुटी येऊ शकतात.