MCP সার্ভার এরর হ্যান্ডলিং: আমি যা শিখলাম
আমি ভেবেছিলাম আমার MCP সার্ভারটি প্রথমবার চলার পর কাজ শেষ। এটি একটি টুলের তালিকা প্রদান করেছিল। এটি একটি টুল কল করেছিল। আমি সফল বোধ করছিলাম।
আমি ভুল ছিলাম।
প্রোডাকশনে একটি MCP সার্ভার চালানোর মাধ্যমে আমি শিখেছি যে টিউটোরিয়ালগুলো সাধারণত সবকিছু ঠিকঠাক চলার (happy path) ওপর গুরুত্ব দেয়। যখন কোনো সমস্যা বা ত্রুটি দেখা দেয়, তখন কী হবে তা তারা এড়িয়ে যায়। আমার ১,৮০০ ঘণ্টার নলেজ বেসের জন্য একটি সার্ভার তৈরির সময় আমি যা শিখেছি তা নিচে দেওয়া হলো।
খালি ফলাফলের ক্ষেত্রে সবসময় কন্টেন্ট প্রদান করুন বেশিরভাগ ক্লায়েন্ট খালি রেসপন্স পেলে হ্যাং হয়ে যায়। যদি আপনার সার্চে কিছু না পাওয়া যায়, তবে কিছুই না পাঠিয়ে একটি টেক্সট মেসেজ পাঠান। ব্যবহারকারীকে জানান কেন কোনো ফলাফল নেই এবং আপনার ডাটাবেসে মোট কতটি আইটেম রয়েছে।
ধীরগতির কানেকশন শুরু হওয়া সামলানো আমি একটি ফ্রি টিয়ারে হোস্ট করি যা স্লিপ মোডে চলে যায়। যখন এটি আবার চালু হয়, তখন ১৫ সেকেন্ড সময় লাগে। অনেক MCP ক্লায়েন্ট এর আগেই টাইমআউট হয়ে যায়। • কানেকশন সচল রাখতে দ্রুত হেডার পাঠান। • রেসপন্স সাইজের জন্য কঠোর সীমা নির্ধারণ করুন। বড় ফলাফলগুলো ছোট (truncate) করে ফেলুন যাতে টাইমআউট লিমিট অতিক্রম না হয়।
ম্যানুয়ালি JSON তৈরি করা বন্ধ করুন একটি টাইটেলের ভেতরে একটি unescaped ডাবল কোট আমার পুরো JSON রেসপন্সটি নষ্ট করে দিয়েছিল। ক্লায়েন্টটি কোনো এরর ছাড়াই ডিসকানেক্ট হয়ে গিয়েছিল। সিরিয়ালাইজেশন হ্যান্ডেল করার জন্য Jackson-এর মতো ফ্রেমওয়ার্ক ব্যবহার করুন। লাইব্রেরিকে আপনার হয়ে escaping ম্যানেজ করতে দিন।
অসামঞ্জস্যপূর্ণ অথেন্টিকেশন বা প্রমাণীকরণের জন্য প্রস্তুত থাকুন বিভিন্ন ক্লায়েন্ট ভিন্ন ভিন্ন উপায়ে API কী হ্যান্ডেল করে। কেউ হেডার ব্যবহার করে, কেউ কুয়েরি প্যারামিটার ব্যবহার করে, আবার কেউ কোনোটিই ব্যবহার করে না। • কী পাঠানোর একাধিক পদ্ধতি সমর্থন করুন। • অথেন্টিকেশন ব্যর্থ হলে সবসময় একটি সঠিক JSON এরর বডি প্রদান করুন।
স্পষ্টভাবে Content-Length সেট করুন কিছু ক্লায়েন্ট chunked encoding নিয়ে সমস্যায় পড়ে। যদি আপনার রেসপন্স ট্রাঙ্কেট (truncate) হয়ে যায়, তবে কম্প্রেশন ব্যবহার করা বন্ধ করুন। আপনার রেসপন্স সাইজ আগে থেকেই হিসাব করে নিন এবং স্পষ্টভাবে Content-Length হেডার সেট করুন।
সুবিধাগুলো: • গোপনীয়তা: শুধুমাত্র প্রাসঙ্গিক অংশগুলো AI-এর কাছে যায়। • ইন্টারঅপারেবিলিটি: সার্ভারটি বিভিন্ন ক্লায়েন্টের সাথে কাজ করে। • সরলতা: আমার সার্ভারটি মাত্র ১৫০ লাইনের কোড।
অসুবিধাগুলো: • নবীন ইকোসিস্টেম: ডকুমেন্টেশনে অনেক এজ কেস (edge cases) বাদ পড়েছে। • হোস্টিং: আপনাকে নিজেই আপনার এন্ডপয়েন্ট এবং কোল্ড স্টার্ট (cold starts) ম্যানেজ করতে হবে। • বিবর্তন: প্রোটোকলটি প্রায়ই পরিবর্তিত হয়।
MCP আমার অব্যবহৃত নোটগুলোকে একটি দরকারী টুলে পরিণত করেছে। এটি আমার ডেটাকে সহজলভ্য করে তোলে যাতে AI কঠিন কাজগুলো করতে পারে।
আপনি কি কোনো MCP সার্ভার তৈরি করেছেন? আপনি কী কী সমস্যার সম্মুখীন হয়েছেন? কমেন্টে আমাকে জানান।
Optional learning community: https://t.me/GyaanSetuAi
