MCP-इंस्ट्रूमेंट कुछ भी वापस कर सकता है - प्रोटोकॉल को उत्तर के फ़ॉर्म को वर्णित करने की ज़रूरत नहीं है। इसलिए ज़्यादातर सर्वर एजेंट को कच्चा JSON देते हैं, और मॉडल टेक्स्ट से स्ट्रक्चर का अनुमान लगाता है। यह तब तक काम करता है जब तक कि टूटता नहीं: एजेंट ऐसा फ़ील्ड लेता है जो मौजूद नहीं है, या नेस्टिंग को गलत समझता है।
हमने सख्त रास्ता चुना: हमारे 600 से अधिक MCP-इंस्ट्रूमेंट outputSchema प्रकाशित करते हैं - मशीन‑generated उत्तर स्कीमा, वही OpenAPI‑कॉन्ट्रैक्ट से जनरेट किया गया, जो REST API के साथ है।
outputSchema क्या देता है
Section titled “outputSchema क्या देता है”जब इंस्ट्रूमेंट आउटपुट स्कीमा घोषित करता है, क्लाइंट को कॉल से पहले उत्तर का फ़ॉर्म पता होता है। एजेंट अनुमान नहीं लगाता - वह देखता है कि chart.houses.ascendant मौजूद है और उसका टाइप «संख्या, इक्लिप्टिक लोंगिट्यूड डिग्री में» है। स्ट्रक्चर के बारे में कम भ्रम, कॉल चेन अधिक सटीक, क्लाइंट साइड पर उत्तर को वैलिडेट करने की क्षमता।
कैटलॉग चरणबद्ध रूप से बढ़ा: शुरुआत में 285 इंस्ट्रूमेंट, फिर 624, अब 630 से अधिक - और टाइप्ड आउटपुट लगभग पूरी कवरेज तक पहुँच गया (630+ में से 600 से अधिक)। स्कीमा हाथ से नहीं लिखे जाते: जेनरेटर लाइव /v1/openapi.json को बिल्ड पर पढ़ता है, इसलिए REST और MCP के बीच ड्रिफ्ट निर्माण के हिसाब से असंभव है।
सख्त टाइपिंग ने जो बग खोला
Section titled “सख्त टाइपिंग ने जो बग खोला”सख्ती की कीमत होती है। जब इंस्ट्रूमेंट closed‑स्कीमा घोषित करता है (सिर्फ सूचीबद्ध फ़ील्ड), और उत्तर में अतिरिक्त मेटाडाटा होता है, strict‑mode क्लाइंट इसे रेजेक्ट कर देता है। chart‑family इंस्ट्रूमेंट्स में हमने यही पकड़ा:
McpError: MCP error -32602: Structured content does not matchthe tool's output schema: data must NOT have additional propertiesकारण: जेनरेटेड Zod‑स्कीमा closed‑फ़ॉर्म में थे, जबकि बैकएंड का वास्तविक उत्तर कई सर्विस‑metadata फ़ील्ड ले आया, जो स्कीमा में घोषित नहीं थे। क्लाइंट structuredContent को स्कीमा के खिलाफ strict‑mode में वैलिडेट कर रहा था और -32602 फेंक रहा था।
दिलचस्प बात: Claude Desktop और Cursor बग नहीं दिखा रहे थे - वे loose‑mode में हैं और अतिरिक्त फ़ील्ड को पास कर देते हैं। केवल strict‑mode SDK‑क्लाइंट्स फेल हो रहे थे, जो कड़ी वैलिडेशन करते हैं। यानी समस्या सबसे लोकप्रिय क्लाइंट्स में दिखाई नहीं देती थी और सिर्फ MCP SDK के ऊपर की अपनी इंटीग्रेशन्स में उभरती थी।
फ़िक्स: closed के बजाय ओपन स्कीमा
Section titled “फ़िक्स: closed के बजाय ओपन स्कीमा”समाधान - टाइपिंग को हटाना नहीं, बल्कि स्कीमा को ओपन बनाना। इंस्ट्रूमेंट जेनरेटर में आउटपुट ZodObject‑स्कीमा को passthrough‑फ़ॉर्म में बदला जाता है: घोषित फ़ील्ड अनिवार्य और टाइप्ड रहते हैं, और अतिरिक्त सर्विस फ़ील्ड वैलिडेशन पास कर जाते हैं, कॉल को तोड़े बिना।
hosted‑कैटलॉग के लिए एक वैकल्पिक तरीका लागू किया गया है - उन इंस्ट्रूमेंट्स की रजिस्ट्रेशन से outputSchema हटाना जहाँ वैलिडेशन पहले ही टूट चुका था, ताकि strict‑क्लाइंट्स न फेल हों, जब तक स्कीमा पूरी तरह ओपन न हो जाए। समझदारी वाला समझौता: क्लाइंट वैलिडेशन के बिना सही कॉल बेहतर है, बजाय कठोर फेल्योर के।
सीख आसान है: टाइप्ड MCP आउटपुट उपयोगी है, लेकिन उत्तर स्कीमा को अतिरिक्त फ़ील्ड के लिए ओपन होना चाहिए। API विकसित होता है, मेटाडाटा आता है, और closed‑स्कीमा हर ऐसे जोड़ को strict‑क्लाइंट्स के लिए ब्रेकिंग चेंज बना देता है।
कैसे कनेक्ट करें
Section titled “कैसे कनेक्ट करें”टाइप्ड कैटलॉग दोनों तरीकों से उपलब्ध है:
// hosted, без установки{ "mcpServers": { "astroway": { "url": "https://mcp.astroway.info/mcp", "headers": { "Authorization": "Bearer aw_live_..." } } }}या stdio‑पैकेज npx -y @astroway/mcp के साथ ASTROWAY_API_KEY कुंजी। दोनों वही टाइप्ड कैटलॉग देते हैं; क्लाइंट्स पर पूरा गाइड - /agent-setup/ पर।
वही Swiss Ephemeris जो Solar Fire में है - बस 4 लाइनों के कोड में।
कार्ड के बिना मुफ्त कुंजी। पहले भुगतान तक 5,000 कॉल प्रति माह।