MCP Server பிழை கையாளுதல்: நான் கற்றுக்கொண்டவை
எனது MCP server முதல்முறையாக இயங்கிய பிறகு, நான் வேலையை முடித்துவிட்டதாக நினைத்தேன். அது ஒரு tool list-ஐ வழங்கியது. ஒரு tool-ஐ அழைத்தது. நான் வெற்றி பெற்றுவிட்டதாக உணர்ந்தேன்.
நான் தவறாக இருந்தேன்.
Production சூழலில் ஒரு MCP server-ஐ இயக்குவது, tutorials அனைத்தும் எவ்விதத் தடங்கலும் இல்லாத பாதையை (happy path) மட்டுமே மையமாகக் கொண்டுள்ளன என்பதை எனக்குக் கற்பித்தது. விஷயங்கள் முடங்கும்போது என்ன நடக்கும் என்பதை அவை புறக்கணிக்கின்றன. எனது 1,800 மணிநேர knowledge base-க்காக ஒரு server-ஐ உருவாக்கும்போது நான் கற்றுக்கொண்டவை இதோ:
காலியான முடிவுகளுக்கு எப்போதும் உள்ளடக்கத்தைத் திருப்பி அனுப்பவும் (Always return content for empty results) பெரும்பாலான clients காலியான பதிலைப் பெறும்போது செயலிழந்து விடுகின்றன (hang). உங்கள் தேடலில் எதுவும் கிடைக்கவில்லை என்றால், எதையும் திருப்பி அனுப்ப வேண்டாம் என்று நினைக்காதீர்கள். ஒரு text message-ஐ அனுப்பவும். ஏன் முடிவுகள் இல்லை என்பதையும், உங்கள் database-ல் எத்தனை உருப்படிகள் உள்ளன என்பதையும் பயனருக்குத் தெரிவிக்கவும்.
மெதுவான இணைப்புத் தொடக்கங்களைக் கையாளுதல் (Manage slow connection starts) நான் ஒரு free tier-ல் host செய்கிறேன், அது பயன்பாட்டில் இல்லாதபோது sleep நிலைக்குச் செல்லும். அது மீண்டும் இயங்கத் தொடங்கும்போது 15 வினாடிகள் எடுக்கும். அதற்கு முன்பே பல MCP clients timeout ஆகிவிடுகின்றன. • இணைப்பைத் தொடர்ந்து உயிர்ப்புடன் வைத்திருக்க early headers-களை அனுப்பவும். • Response size-க்கான கடுமையான வரம்புகளை நிர்ணயிக்கவும். Timeout வரம்புகளைத் தாண்டாமல் இருக்க பெரிய முடிவுகளைத் துண்டித்து (truncate) அனுப்பவும்.
கைமுறையாக JSON உருவாக்குவதை நிறுத்துங்கள் (Stop manual JSON building) தலைப்பில் சரியாக கையாளப்படாத (unescaped) ஒரு double quote, எனது முழு JSON response-யையும் சிதைத்துவிட்டது. Client எந்தத் தவறுச் செய்தியும் காட்டாமல் துண்டிக்கப்பட்டது. Serialization-ஐக் கையாள Jackson போன்ற ஒரு framework-ஐப் பயன்படுத்தவும். Escaping-ஐ அந்த library-யே கையாளட்டும்.
சீரற்ற அங்கீகாரத்தை (inconsistent authentication) எதிர்பார்க்கவும் வெவ்வேறு clients API keys-களை வெவ்வேறு விதமாக கையாளுகின்றன. சில headers-களைப் பயன்படுத்துகின்றன. சில query parameters-களைப் பயன்படுத்துகின்றன. சிலவும் எதையும் பயன்படுத்துவதில்லை. • Keys-களை அனுப்பப் பல வழிகளை ஆதரிக்கவும். • Auth தோல்வியடைந்தால் எப்போதும் முறையான JSON error body-யைத் திருப்பி அனுப்பவும்.
வெளிப்படையான Content-Length-ஐ நிர்ணயிக்கவும் (Set explicit Content-Length) சில clients chunked encoding-ஐக் கையாள்வதில் சிரமப்படுகின்றன. உங்கள் responses துண்டிக்கப்பட்டால் (truncate), compression பயன்படுத்துவதை நிறுத்துங்கள். உங்கள் response size-ஐ முன்கூட்டியே கணக்கிட்டு (precompute), Content-Length header-ஐ வெளிப்படையாக நிர்ணயிக்கவும்.
நன்மைகள் (The Pros): • Privacy: தொடர்புடைய snippets மட்டுமே AI-க்குச் செல்கின்றன. • Interoperability: இந்த server பல்வேறு clients-களிலும் வேலை செய்கிறது. • Simplicity: எனது server வெறும் 150 வரிகள் கொண்ட code மட்டுமே.
தீமைகள் (The Cons): • Young ecosystem: Documentation-ல் பல edge cases விடுபட்டுள்ளன. • Hosting: உங்கள் சொந்த endpoints மற்றும் cold starts-களை நீங்களே நிர்வகிக்க வேண்டும். • Evolution: இந்த protocol அடிக்கடி மாறுகிறது.
MCP எனது பயன்படுத்தப்படாத குறிப்புகளை ஒரு பயனுள்ள கருவியாக மாற்றியுள்ளது. இது எனது தரவை எளிதில் கிடைக்கச் செய்கிறது, இதனால் AI கடினமான வேலைகளைச் செய்ய முடிகிறது.
நீங்கள் ஒரு MCP server-ஐ உருவாக்கியிருக்கிறீர்களா? நீங்கள் என்ன பிழைகளைச் சந்தித்தீர்கள்? கருத்துப் பெட்டியில் (comments) எனக்குத் தெரியப்படுத்துங்கள்.
Optional learning community: https://t.me/GyaanSetuAi
