MCP سرور ایرر ہینڈلنگ: میں نے کیا سیکھا
مجھے لگا کہ میرا کام مکمل ہو گیا ہے جب میرا MCP سرور پہلی بار چلا۔ اس نے ٹول کی فہرست واپس کی۔ اس نے ایک ٹول کو کال کیا۔ مجھے کامیابی کا احساس ہوا۔
میں غلط تھا۔
پروڈکشن میں MCP سرور چلانے سے مجھے معلوم ہوا کہ ٹیوٹوریلز صرف "ہیپی پاتھ" (happy path) پر توجہ دیتے ہیں۔ وہ اس بات کو نظر انداز کر دیتے ہیں کہ جب چیزیں خراب ہوتی ہیں تو کیا ہوتا ہے۔ یہاں وہ باتیں ہیں جو میں نے اپنے 1,800 گھنٹوں کے نالج بیس کے لیے سرور بناتے وقت سیکھیں۔
خالی نتائج کے لیے ہمیشہ مواد واپس کریں زیادہ تر کلائنٹس خالی رسپانس ملنے پر ہینگ ہو جاتے ہیں۔ اگر آپ کی سرچ میں کچھ نہ ملے، تو کچھ بھی واپس نہ کریں۔ ایک ٹیکسٹ میسج واپس کریں۔ صارف کو بتائیں کہ کوئی نتیجہ کیوں نہیں ہے اور آپ کے ڈیٹا بیس میں کتنی چیزیں موجود ہیں۔
سست کنکشن کے آغاز کو مینیج کریں میں اسے ایک فری ٹائر پر ہوسٹ کرتا ہوں جو سو جاتا ہے۔ جب یہ جاگتا ہے، تو اسے 15 سیکنڈ لگتے ہیں۔ بہت سے MCP کلائنٹس اس سے پہلے ہی ٹائم آؤٹ ہو جاتے ہیں۔ • کنکشن کو زندہ رکھنے کے لیے جلدی ہیڈرز (headers) بھیجیں۔ • رسپانس کے سائز پر سخت حد مقرر کریں۔ بڑے نتائج کو چھوٹا (truncate) کر دیں تاکہ آپ ٹائم آؤٹ کی حدوں سے نہ ٹکرائیں۔
دستی طور پر JSON بنانا بند کریں ٹائٹل میں ایک غیر محفوظ (unescaped) ڈبل کوٹ نے میرا پورا JSON رسپانس خراب کر دیا۔ کلائنٹ بغیر کسی ایرر کے ڈس کنیکٹ ہو گیا۔ سیریلائزیشن (serialization) کو سنبھالنے کے لیے Jackson جیسا فریم ورک استعمال کریں۔ لائبریری کو آپ کے لیے ایسکیپنگ (escaping) کا کام کرنے دیں۔
غیر مستقل آتھنٹیکیشن (authentication) کی توقع رکھیں مختلف کلائنٹس API keys کو مختلف طریقے سے ہینڈل کرتے ہیں۔ کچھ ہیڈرز استعمال کرتے ہیں۔ کچھ کوئری پیرامیٹرز (query parameters) استعمال کرتے ہیں۔ کچھ دونوں میں سے کچھ بھی استعمال نہیں کرتے۔ • کیز (keys) بھیجنے کے متعدد طریقوں کو سپورٹ کریں۔ • اگر آتھنٹیکیشن فیل ہو جائے تو ہمیشہ ایک مناسب JSON ایرر باڈی واپس کریں۔
واضح Content-Length سیٹ کریں کچھ کلائنٹس chunked encoding کے ساتھ مشکل محسوس کرتے ہیں۔ اگر آپ کے رسپانسز کٹ (truncate) رہے ہیں، تو کمپریشن کا استعمال بند کر دیں۔ اپنے رسپانس کا سائز پہلے سے معلوم کر لیں اور Content-Length ہیڈر کو واضح طور پر سیٹ کریں۔
فوائد: • پرائیویسی: صرف متعلقہ اقتباسات (snippets) AI کو بھیجے جاتے ہیں۔ • انٹر آپریبلٹی: سرور مختلف کلائنٹس پر کام کرتا ہے۔ • سادگی: میرا سرور صرف 150 لائنوں کا کوڈ ہے۔
نقصانات: • نیا ایکوسسٹم: دستاویزات (documentation) میں بہت سے ایڈج کیسز (edge cases) غائب ہیں۔ • ہوسٹنگ: آپ کو اپنے اینڈ پوائنٹس اور کولڈ اسٹارٹس (cold starts) خود مینیج کرنے ہوں گے۔ • ارتقاء: پروٹوکول اکثر تبدیل ہوتا رہتا ہے۔
MCP نے میرے غیر استعمال شدہ نوٹس کو ایک مفید ٹول میں بدل دیا۔ یہ میرے ڈیٹا کو دستیاب بناتا ہے تاکہ AI مشکل کام (heavy lifting) کر سکے۔
کیا آپ نے کوئی MCP سرور بنایا ہے؟ آپ کو کن ایررز کا سامنا کرنا پڑا؟ مجھے کمنٹس میں بتائیں۔
اختیاری لرننگ کمیونٹی: https://t.me/GyaanSetuAi
