- MCP(Model Context Protocol) LLM को बाहरी दुनिया के साथ इंटरैक्ट करने के लिए एक standardized integration तरीका देता है
- हाल में IBM का ACP और Google का A2A जैसे समान standard सामने आए हैं, और MCP implementations तथा संबंधित tools तेज़ी से बढ़ रहे हैं
- लेकिन design में भ्रम, अधूरा documentation, और वास्तविक protocol spec की कमी जैसी अपरिपक्व engineering practices को समस्या के रूप में रेखांकित किया गया है
- HTTP+SSE और Streamable HTTP जैसे मौजूदा proposed transport तरीके complexity और security issues बढ़ाते हैं, और WebSocket के उपयोग को एक विकल्प के रूप में सुझाया गया है
- नवीनतम protocol authorization और session management में inconsistency रखते हैं और ज़रूरत से ज़्यादा complexity जोड़ते हैं
MCP और हालिया रुझानों की समीक्षा
- MCP एक open protocol है, जिसे applications द्वारा large language models(LLM) को context देने के तरीके को standardize करने के लिए बनाया गया है
- पिछले एक महीने में MCP, LLM को agent में बदलने वाले एक अहम standard के रूप में उभरा है, और इसका उपयोग व implementation तेज़ी से फैल रहे हैं
- IBM का ACP और Google का A2A जैसे, समान उद्देश्य वाले अधिक orthodox standards भी तेज़ी से सामने आ रहे हैं
Engineering practices और protocol specification की समस्याएँ
- वास्तविक implementation और documentation का स्तर कई जगह कमज़ोर दिखाई देता है
- बड़ी tech कंपनियाँ model training में भारी निवेश करती हैं, लेकिन SDK और documentation का स्तर कम होने से users में भ्रम पैदा होता है
- MCP में भी ऐसी ही समस्याएँ दिखती हैं; कुछ design अव्यावहारिक हैं और specification, examples, तथा guidelines की कमी है
Transport protocol पर चर्चा
stdio transport तरीका
- Stdio MCP server और client को local environment में pipe(
stdout, stdin) के ज़रिए सीधे जोड़ने का पारंपरिक तरीका है
- इसमें जटिल socket handling या OS-specific issues कम होते हैं, और environment variables, input/output streams जैसी सरल environment configuration संभव होती है
HTTP+SSE / Streamable HTTP तरीका
- web युग के अनुरूप HTTP-based support देने के इरादे से HTTP+SSE और Streamable HTTP तरीके अपनाए गए हैं
- लेकिन WebSocket का विकल्प बनने की कोशिश में यह तरीका उलटे अधिक ambiguity, design confusion, और complexity पैदा करता है
- एक ही session और connection को कई तरीकों से create या terminate किया जा सकता है, जिससे server-side state management और security पर काफी बोझ पड़ता है
MCP server/client implementation examples में कठिनाइयाँ
- आधिकारिक Go SDK की अनुपस्थिति सहित कई भाषाओं में support की कमी साफ़ दिखाई देती है
- documentation और specification अस्पष्ट होने के कारण कई बार वास्तविक implementation reverse engineering के सहारे करना पड़ता है
- अधिकांश example servers Python, JavaScript आधारित हैं, फिर भी dependency और portability issues के कारण उन्हें production environment में लागू करना कठिन है
- server implementation में SSE/Streamable HTTP socket जैसा दिखने की कोशिश करता है, लेकिन व्यवहार में session और connection state को लगातार बनाए रखना कठिन होता है, और message queue जैसी अलग infrastructure की ज़रूरत पड़ती है
HTTP+SSE और Streamable HTTP की संरचना व समस्याएँ
HTTP+SSE mode
- client server के साथ एक SSE session खोलता है, फिर अलग endpoint पर write request भेजता है; server 202 response लौटाता है और मौजूदा SSE connection के माध्यम से response भेजता है
- session connection और state synchronization बनाए रखना ज़रूरी है, लेकिन इस प्रक्रिया का documentation अधूरा है और operational complexity बहुत अधिक है
Streamable HTTP mode
- session creation, SSE open, और response delivery सभी में कई तरीके मिलेजुले रूप में इस्तेमाल होते हैं, जिससे एक request-response flow सुसंगत नहीं रहता
- कई तरह के state management, अलग-अलग endpoints और header approaches के मिश्रण से व्यावहारिक implementation और scalability में गंभीर बाधाएँ पैदा होती हैं
सामान्य निहितार्थ
- तकनीकी complexity बढ़ने के साथ developer की cognitive load और maintenance का बोझ बढ़ता है, और अलग-अलग server/client implementations के बीच compatibility mismatch और unpredictable behavior जैसी समस्याएँ उभरती हैं
- server को हर state और connection स्थिति को track करना पड़ता है, और distributed environment में efficient scaling तथा state synchronization और भी कठिन हो जाती है
Security implications
- सूक्ष्म और विविध connection/session तरीके session hijacking, replay attacks, और denial of service(DoS) जैसी state management security vulnerabilities को बढ़ाते हैं
- कई entry points और response mechanisms attack surface को बढ़ाते हैं, और अनचाहे flow के माध्यम से malicious activity को छिपाने की संभावना बनती है
Authorization protocol में भ्रम
- मौजूदा specification सिर्फ HTTP transport के लिए OAuth2 जैसी बाध्यता लगाती है, जबकि STDIO transport में मनमाने ढंग से environment variables इस्तेमाल करने जैसे असंगत नियम लागू करती है
- सिर्फ HTTP transport पर जटिल OAuth2 implementation थोपने का कारण भी भ्रम और असंगति पैदा करता है
सुधार के सुझाव
- एक ही JSON RPC protocol पर transport को व्यावहारिक रूप से Stdio और WebSocket तक सरल करना चाहिए
- Stdio environment के variables को HTTP environment के headers से, और input/output को क्रमशः WebSocket के bidirectional streams से map करना उपयुक्त होगा
- इससे अनावश्यक session tracking, state management, और अनेक exception handling को हटाया जा सकता है
- WebSocket को सभी HTTP-based transports के लिए standard choice होना चाहिए, और इससे जटिल state synchronization issues भी सुलझ सकते हैं
वैकल्पिक protocols की तुलना और बाज़ार रुझान
- IBM का ACP और Google का A2A, agent interoperability के लिहाज़ से अधिक सरल transport design और agent discovery capabilities देते हैं
- लेकिन मूल रूप से इन्हें अधिकांश MCP build environments के भीतर अलग tools के रूप में integrate किया जा सकता है
- लगातार नए protocols का उभरना standards की भरमार का जोखिम पैदा कर सकता है, इसलिए transport की simplicity को प्राथमिकता देना industry growth के लिए महत्वपूर्ण है
1 टिप्पणियां
Hacker News राय
agents.jsonfile रख दी जाए और semantic conversation के ज़रिए agents खुद-ब-खुद काम संभाल लें। तब नतीजतन HTTP ही agents का standard input/output बन जाएगा