MCP پروٹوکول ٹیم نے 28 جولائی 2026 کو ایک نیا ورژن جاری کیا ہے جو پروٹوکول لیول کے سیشن کو ختم کر دیتا ہے اور ہر درخواست کو stateless (بغیر کسی محفوظ شدہ حالت کے) ہونے پر مجبور کرتا ہے۔ اگر آپ MCP کلائنٹس، سرورز یا ایجنٹس چلا رہے ہیں، تو آپ کو وہ کوڈ دوبارہ لکھنا ہوگا جو مستقل سیشن آئی ڈی (persistent session ID) پر انحصار کرتا ہے—ورنہ آپ کو روٹنگ میں خرابی، کیش مسز (cache misses) اور پس منظر میں کاموں کے بے قابو ہونے جیسے مسائل کا سامنا کرنا پڑ سکتا ہے۔

یہ تبدیلی کیوں اہم ہے

پہلے MCP میں ایک ہینڈ شیک (handshake) کی ضرورت ہوتی تھی جو ایک سیشن آئی ڈی پیدا کرتا تھا۔ ڈاؤن اسٹریم سروسز اس آئی ڈی پر اس بنیاد پر انحصار کرتی تھیں کہ درخواستوں کا ایک سلسلہ ایک ہی پروسیس تک پہنچے گا، تاکہ لوڈ بیلنسرز اسٹکی روٹنگ (sticky routing) استعمال کر سکیں، اور فی سیشن ڈیٹا کو میموری میں محفوظ کیا جا سکے۔ جولائی کا یہ ریلیز اس ماڈل کو مکمل طور پر request-response فلو سے بدل دیتا ہے۔ اب ایک سرور کو سیشنز کے ضائع ہونے کی فکر کیے بغیر شامل یا ہٹایا جا سکتا ہے۔ پروٹوکول اب سیاق و سباق (context) کو محفوظ نہیں رکھتا؛ اب یہ ذمہ داری ایپلی کیشن کی ہے۔

وہ ٹیمیں جو پرانا سیشن پر مبنی کوڈ استعمال کرتی رہیں گی، وہ دیکھیں گی کہ درخواستیں غلط انسٹنس پر جا رہی ہیں، کیش مسز ہو رہے ہیں، اور بیک گراؤنڈ جابز کا ڈھیر لگ رہا ہے۔ وہ ٹیمیں جو stateless پیٹرن اپنائیں گی، وہ نان-اسٹکی (non-sticky) لوڈ بیلنسرز کے پیچھے MCP چلا سکیں گی اور پوری ریکویسٹ چین کے دوران بہتر نگرانی (observability) حاصل کر سکیں گی۔

اصل فرق کیا ہے

  • پروٹوکول لائف سائیکل (Protocol lifecycle) – ہینڈ شیک اور سیشن آئی ڈی ختم ہو گئے ہیں۔ ہر درخواست میں وہ تمام معلومات ہونی چاہئیں جن کی سرور کو ضرورت ہے؛ اس بات کی کوئی ضمانت نہیں ہے کہ اگلی درخواست اسی پروسیس پر پہنچے گی۔
  • HTTP روٹنگ – گیٹ ویز اب درخواست کو آگے بھیجنے کا فیصلہ کرنے کے لیے دو نئے ہیڈرز، Mcp-Method اور Mcp-Name کو پڑھتے ہیں۔ سیشن-کوکی (session-cookie) روٹنگ اب کام نہیں کرے گی۔
  • کیشنگ (Caching) – سپیک (spec) میں ریڈز (reads) کے لیے ttlMs (مل سیکنڈز میں time-to-live) اور cacheScope فیلڈز شامل کی گئی ہیں۔ آپ خود فیصلہ کرتے ہیں کہ کیا پرانا ڈیٹا (stale data) قابل قبول ہے اور اسی کے مطابق کیش کو کنفیگر کرتے ہیں۔
  • نگرانی (Observability) – ایک _meta بلاک اب W3C Trace Context پے لوڈ کی توقع رکھتا ہے، جس سے ٹریسنگ سسٹم ایج گیٹ ویز، ٹولنگ اور بیک اینڈ کاموں کو ایک ہی اینڈ-ٹو-اینڈ ٹریس میں جوڑ سکتے ہیں۔
  • کمپوزیشن (Composition) – ایکسٹینشنز کو باقاعدہ شکل دے دی گئی ہے؛ کور سپیک کو چھیڑے بغیر نئی صلاحیتیں شامل کی جا سکتی ہیں، جو پلگ ان اسٹائل آرکیٹیکچر کی حوصلہ افزائی کرتی ہیں۔
  • طویل مدتی کام (Long-running work) – سادہ request/response اب ان کاموں کے لیے کافی نہیں ہے جو منٹوں یا گھنٹوں تک چلتے ہیں۔ پروٹوکول اب غیر ہم آہنگ (asynchronous) کاموں کے لیے ایک Task آبجیکٹ کی تعریف کرتا ہے، جو لائف سائیکل کنٹرولز سے لیس ہے۔

لیگیسی کوڈ میں چھپے ہوئے خطرات

ایک فوری آڈٹ اکثر ایسے پیٹرنز کو بے نقاب کر دیتا ہے جو سٹیٹ فلنس (statefulness) پر انحصار کرتے ہیں:

  • سیشن آئی ڈیز کے ذریعے کی گئی ان میموری میپس (In-memory maps)۔
  • اسٹکی سیشنز کے لیے کنفیگر کیے گئے لوڈ بیلنسرز۔
  • اسٹارٹ اپ روٹینز جو فی سیشن ڈیٹا کو لوکل میموری میں پہلے سے لوڈ کرتے ہیں۔
  • صفائی کا لاجک (Cleanup logic) جو سیشن ختم ہونے پر کاروباری ڈیٹا کو حذف کر دیتا ہے۔

اگر ان میں سے کوئی بھی چیز مائیگریشن کے بعد باقی رہتی ہے، تو سسٹم لوڈ کے دوران ڈیٹا کھو دے گا یا وسائل (resources) ضائع کرے گا۔

مائیگریشن کے لیے ایک ٹھوس چیک لسٹ

1. موجودہ مفروضات کا جائزہ لیں

ہر اس جگہ کا نقشہ بنائیں جہاں آپ کا کوڈ سیشن آئی ڈی، اسٹکی روٹنگ رول، یا پروسیس-لوکل کیش کو چھوتا ہے۔ دستاویز کریں کہ کون سے اجزاء کس پر انحصار کرتے ہیں۔

2. شناخت کو واضح بنائیں

ہر ریکویسٹ پے لوڈ یا ہیڈر میں ٹیننٹ آئی ڈیز (tenant IDs)، رن آئی ڈیز (run IDs) اور یوزر آئی ڈیز (user IDs) شامل کریں۔ ان شناختی معلومات کو اتھارائزیشن اور ڈیٹا پارٹیشننگ کے لیے حقیقت کا واحد ذریعہ (source of truth) سمجھیں۔

3. روٹنگ کنفیگریشن کو اپ ڈیٹ کریں

سیشن پر مبنی روٹنگ کو ان رولز سے بدل دیں جو Mcp-Method اور Mcp-Name کو پڑھتے ہیں۔ نان-اسٹکی لوڈ بیلنسر کے پیچھے کم از کم دو انسٹنس کی تعیناتی کے ساتھ نئے گیٹ وے لاجک کا تجربہ کریں۔

4. کیشنگ لاجک کو ریفیکٹر کریں

نئی ttlMs اور cacheScope فیلڈز پر منتقل ہو جائیں۔ یہ دیکھنے کے لیے پرفارمنس ٹیسٹ چلائیں کہ مختلف TTL ویلیوز ہٹ ریٹس اور تازگی (freshness) کی ضروریات پر کیسے اثر انداز ہوتی ہیں۔

اینڈ-ٹو-اینڈ ٹریسنگ کو فعال کریں: _meta بلاک کو W3C Trace Context ہیڈر کے ساتھ پُر کریں۔ تصدیق کریں کہ ٹریسز اب ایج گیٹ وے سے آپ کے بیک اینڈ سروسز تک بغیر کسی وقفے کے بہہ رہے ہیں۔

غیر ہم آہنگ (async) کاموں کے لیے Task ماڈل اپنائیں: یہ طے کریں کہ کون ٹاسک بنا سکتا ہے، زیادہ سے زیادہ رن ٹائم سیٹ کریں، اور کیو (queue) کی حدود نافذ کریں۔ واضح کینسلشن اور ری ٹرائی پالیسیاں شامل کریں، اور اس بات پر پابندی لگائیں کہ ٹاسک زیر التواء ہونے کے دوران ایجنٹ کیا کر سکتا ہے۔

28 جولائی سے پہلے SDK اور کلائنٹ لائبریری کے ریلیز نوٹس کا جائزہ لیں۔

ایسے ریگریشن سویٹس (regression suites) چلائیں جو ناکامی کے راستوں (failure paths) کو نشانہ بناتے ہوں: خوشگوار حالات (happy-path) کے ٹیسٹ کے علاوہ، مِسنگ ہیڈرز، ایکسپائرڈ ٹاسک، اور غلط فارمیٹ والے کیش ڈائریکٹیوز شامل کریں۔ تصدیق کریں کہ سسٹم مہارت سے (gracefully) کام کو سنبھال لیتا ہے۔

آگے کیا دیکھنا ہے

وہ ٹیمیں جو محفوظ طریقے سے مائیگریٹ کریں گی، وہ صرف خوشگوار حالات (happy path) ہی نہیں بلکہ حدود (boundaries) کا بھی تجربہ کریں گی۔ 28 جولائی کے بعد کوئی بھی پروڈکشن تعیناتی جو اب بھی سیشن آئی ڈی کی توقع رکھتی ہے، نئے MCP سرورز کے ساتھ کام کرنے میں ناکام ہو سکتی ہے۔