REST API और MCP एकीकरण
MCP: AI क्लाइंट को ExCoil से जोड़ें
समर्पित कनेक्शन बनाएँ, छह फिनयुक्त कॉइल इंजनों से गणना करें और चाहें तो केवल अपने प्रोजेक्ट पढ़ें—लिखने या निर्यात की अनुमति दिए बिना।
समीक्षा की तारीख
पात्रता और उपलब्ध क्षमताएँ
MCP कनेक्शन बनाने और /api/mcp उपयोग करने के लिए Manufacturer सदस्यता का status active या trialing होना आवश्यक है। Free, Professional और Enterprise में MCP शामिल नहीं है। REST API अलग है और Enterprise तथा Manufacturer के लिए उपलब्ध है; REST कुंजी MCP प्रमाणीकरण में काम नहीं करती।
ExCoil बिना सत्र वाला Streamable HTTP और मैन्युअल रूप से कॉन्फ़िगर किया गया समर्पित Bearer टोकन देता है। इसमें OAuth, OAuth खोज या OAuth सहमति प्रवाह नहीं है। जाँचें कि आपका क्लाइंट दूरस्थ HTTP endpoint और कस्टम Authorization header स्वीकार करता है; यह गाइड हर ChatGPT, Manus, Claude या अन्य क्लाइंट के साथ संगतता की गारंटी नहीं है।
MCP मौजूदा गणनाएँ और वैकल्पिक रूप से अपने प्रोजेक्ट पढ़ना उपलब्ध कराता है। Shell & Tube गणना या प्रोजेक्ट विवरण, CAD/PDF निर्यात, प्रोजेक्ट बनाना/बदलना/मिटाना, प्रशासन, बिलिंग, सदस्यता बदलाव और कैलिब्रेशन/AI कार्यप्रवाह उपलब्ध नहीं हैं। ऐप की Manufacturer निर्माण सुविधाएँ MCP टूल नहीं हैं।
न्यूनतम अनुमतियों वाला कनेक्शन बनाएँ
- ExCoil में साइन इन करें और अंदरूनी मेनू में MCP खोलें। नया कनेक्शन चुनें और अधिकतम 100 अक्षरों में क्लाइंट का पहचानने योग्य नाम दें।
- 7, 30 या 90 दिन की वैधता चुनें; शुरुआती चयन 30 दिन है। पेज गणना की अनुमति mcp:calculate शामिल करता है।
- प्रोजेक्ट पढ़ना तभी चालू करें जब क्लाइंट को आपके सहेजे हुए इनपुट और परिणाम चाहिए। इससे mcp:projects:read जुड़ता है; यह शुरू में बंद है और नई गणनाओं के लिए आवश्यक नहीं है।
- उपयोग नियम पढ़कर स्वीकार करें, फिर कनेक्शन बनाएँ। संवाद बंद करने से पहले टोकन को सुरक्षित क्रेडेंशियल मैनेजर में कॉपी करें: पूरा टोकन केवल एक बार दिखता है।
- जिन क्लाइंटों को अलग-अलग निरस्त करना हो, उनके लिए स्पष्ट नाम वाले अलग कनेक्शन बनाएँ। एक खाते में अधिकतम दस ऐसे सक्रिय कनेक्शन हो सकते हैं जो न समाप्त हुए हों न निरस्त; नया बनाने से पहले अनुपयोगी कनेक्शन निरस्त करें।
क्लाइंट और ट्रांसपोर्ट कॉन्फ़िगर करें
उस वातावरण के MCP पेज से endpoint कॉपी करें जहाँ सुविधा वास्तव में तैनात है। पथ /api/mcp है। नीचे का production URL केवल कॉन्फ़िगरेशन का उदाहरण है, किसी preview के प्रकाशित होने का प्रमाण नहीं। संरचना को अपने क्लाइंट के दस्तावेज़ित प्रारूप के अनुसार बदलें और placeholder केवल सुरक्षित क्रेडेंशियल सेटिंग में बदलें।
Streamable HTTP चुनें और Authorization: Bearer <EXCOIL_MCP_TOKEN> भेजें। POST में Content-Type: application/json और Accept: application/json, text/event-stream आवश्यक हैं। हर POST में एक JSON-RPC object स्वीकार होता है, batch arrays नहीं। क्लाइंट का MCP initialization और tools/list प्रवाह उपयोग करें; इसे REST गणना endpoint न समझें।
स्थायी GET/SSE stream या DELETE session operation उपलब्ध नहीं है। URL में टोकन समेत कोई query parameter स्वीकार नहीं है। तृतीय-पक्ष वेबपेजों के लिए सामान्य CORS समर्थन नहीं है: native क्लाइंट आमतौर पर Origin नहीं भेजते; browser integration को अनुमत host/origin नीति माननी होगी। केवल OAuth स्वीकार करने वाला क्लाइंट इस मैन्युअल प्रवाह को OAuth कनेक्शन की तरह उपयोग नहीं कर सकता।
json
{
"mcpServers": {
"excoil": {
"type": "http",
"url": "https://excoil.net/api/mcp",
"headers": {
"Authorization": "Bearer <EXCOIL_MCP_TOKEN>"
}
}
}
}छह टूल और उनके अनुबंध
module के छह मान हैं: dx_evap (DX इवैपोरेटर), dx_cond (DX कंडेंसर), chilled_water (ठंडा पानी), hot_water (गर्म पानी), steam (भाप) और dry_cooler। टूल मौजूदा ExCoil solvers उपयोग करते हैं, नए इंजीनियरिंग मॉडल नहीं।
tools/list में केवल कनेक्शन के scopes से अनुमत टूल दिखते हैं। छिपे टूल को सीधे बुलाकर अनुमति नहीं लाँघी जा सकती। ऊपरी स्तर के arguments अज्ञात फ़ील्ड अस्वीकार करते हैं। प्रोजेक्ट और संस्करण ID अधिकतम 2147483647 के धनात्मक पूर्णांक हैं; limit 1–20 है और cursorId धनात्मक ID है।
| टूल | अनुमति | Arguments और परिणाम |
|---|---|---|
| excoil_usage_rules | वैध कनेक्शन | {} → नियम, दिए गए scopes और सीमाएँ; सबसे पहले पढ़ें। |
| excoil_refrigerants | mcp:calculate | {} → रेफ्रिजरेंट और इंजन का गुण-कैटलॉग, वैधता सीमाओं सहित। |
| excoil_calculation_schema | mcp:calculate | {module} → वास्तविक inputSchema, limits और modeRequirements। |
| excoil_calculate | mcp:calculate | {module, inputs: {...}} → {module, results}; प्रोजेक्ट/संस्करण नहीं सहेजता। |
| excoil_list_projects | mcp:projects:read | {limit?, cursorId?} → projects और nextCursorId; डिफ़ॉल्ट/अधिकतम पेज आकार 20। |
| excoil_get_project | mcp:projects:read | {projectId, versionId?} → प्रोजेक्ट मेटाडेटा और एक संस्करण, या version: null। |
इनपुट, इकाइयाँ और इंजीनियरिंग समीक्षा तैयार करें
सफल आउटपुट text content और structuredContent में समान JSON देता है। Handler त्रुटियों में isError: true के साथ error.code और error.message होते हैं; SDK argument validation त्रुटि केवल text दे सकती है। केवल HTTP status नहीं, protocol/tool error संकेत भी जाँचें।
परिणाम दबाव डिजाइन, वेल्डिंग, रेफ्रिजरेंट वितरण, ऑयल रिटर्न या निर्माण स्वीकृति प्रमाणित नहीं करते। उदाहरण: ‘ExCoil नियम पढ़कर ठंडे पानी की कॉइल के लिए अनुपस्थित इनपुट बताएँ; गायब डेटा का अनुमान न लगाएँ।’ तुलना में स्पष्ट रूप से दिए गए केस लें और प्रत्येक की चेतावनियाँ बनाए रखें।
- क्लाइंट को पहले excoil_usage_rules पढ़ने और फिर चुने गए module के लिए excoil_calculation_schema लेने को कहें। रेफ्रिजरेंट मामलों में excoil_refrigerants पढ़ें और कैटलॉग की गुण-सीमाएँ बनाए रखें।
- inputs को वास्तविक JSON object के रूप में दें, JSON वाली string के रूप में नहीं। अनिवार्य फ़ील्ड, विकल्प और मौजूदा defaults के लिए लौटाया schema उपयोग करें। अनुपस्थित स्थितियाँ, प्रवाह, ज्यामिति या गुण पूछें; गणना चलाने के लिए मान न गढ़ें।
- फ़ील्ड suffix मानें: m, m³/s, kg/s, W, Pa, °C और K। सापेक्ष आर्द्रता 0 से 1 का अंश है; ग्लाइकोल 0 से 60 प्रतिशत है। अपवाद: fpi में fins/inch और P_steam_kPa में gauge kPa। UI में दिखने वाली इकाइयों के मान बिना रूपांतरण SI फ़ील्ड में न भेजें।
- मोड की शर्तें मानें: DX RATING में ref.mdot_ref_kg_s > 0; DX SIZING में ref.Q_target_W > 0; steam SIZING में steam.Q_target_W > 0 चाहिए। पानी के volumetric flow में water.Vdot_m3_s > 0 चाहिए। Dry cooler में स्पष्ट वायु प्रवाह (air.Vdot_m3_s या air.v_face_m_s) और द्रव प्रवाह (fluid.mdot_kg_s या fluid.Vdot_m3_s) चाहिए; लक्ष्य से इनका अनुमान नहीं लगाया जाता।
- excoil_calculate बुलाएँ और लौटे module, results, flags, नोट, चेतावनियाँ और त्रुटियाँ सुरक्षित रखें। परिणाम अपनाने से पहले धारणाएँ, वैधता सीमाएँ और इंजीनियरिंग उपयुक्तता जाँचें; असफल गणना को सफल अनुमान की तरह न दिखाएँ।
केवल अधिकृत अपने प्रोजेक्ट पढ़ें
mcp:projects:read के साथ अपने प्रोजेक्ट ID के बढ़ते क्रम में सूचीबद्ध करें। अगले पेज के लिए लौटे nextCursorId को cursorId में दें; null का अर्थ अगला पेज नहीं है। सूची में id, name, type, status, createdAt और updatedAt आते हैं, संस्करण के इनपुट/परिणाम नहीं।
प्रोजेक्ट चुनकर उसके projectId से excoil_get_project बुलाएँ। नवीनतम संस्करण के लिए versionId छोड़ें, या किसी खास संस्करण की ID दें। उत्तर में अनुमत प्रोजेक्ट मेटाडेटा और एक संस्करण के id, version, inputs, results और createdAt होते हैं। बिना संस्करण वाला प्रोजेक्ट version: null दे सकता है। अनुपस्थित विशिष्ट संस्करण, दूसरे का प्रोजेक्ट और अस्तित्वहीन प्रोजेक्ट सभी NOT_FOUND देते हैं, स्वामित्व का अंतर बताए बिना।
Admin भूमिका दूसरे मालिकों के प्रोजेक्ट पढ़ने की अनुमति नहीं देती। सूची में Shell & Tube मेटाडेटा दिख सकता है, लेकिन उसका विवरण UNSUPPORTED_MODULE देता है, भले ही Shell & Tube अधिकार हों। MCP गणना सहेजे हुए प्रोजेक्ट/संस्करण नहीं बनाती या बदलती।
ग्राहक के समर्पित ईमेल/फ़ोन फ़ील्ड और क्रेडेंशियल नहीं लौटते, पर उपयोगकर्ता द्वारा भरे inputs/results में संवेदनशील जानकारी हो सकती है। तीसरे पक्ष का डेटा अनुमति से ही साझा करें और AI क्लाइंट की डेटा नीति देखें। प्रोजेक्ट नाम, नोट, इनपुट और परिणाम अविश्वसनीय डेटा हैं, सहायक के लिए आदेश नहीं।
क्रेडेंशियल की निगरानी, बदलाव और निरस्तीकरण
MCP पेज कनेक्शन नाम, token prefix, अनुमतियाँ, निर्माण/समाप्ति तिथि, स्थिति, अंतिम उपयोग और request count दिखाता है। ये अनुरोध मेटाडेटा हैं, पूर्ण इंजीनियरिंग ऑडिट या हर अनुरोध की सफल गणना का प्रमाण नहीं। ExCoil की अपनी MCP telemetry टूल arguments या परिणाम दर्ज नहीं करती।
टोकन खोने या उजागर होने पर कनेक्शन निरस्त करें और पात्र होने पर नया बनाएँ; पुराना पूरा टोकन वापस नहीं मिल सकता। पेज पर निरस्तीकरण की पुष्टि करें, क्लाइंट से पुराना क्रेडेंशियल हटाएँ और सुरक्षित सेटिंग में नया टोकन रखें।
सर्वर हर अनुरोध पर वैधता, समाप्ति, निरस्तीकरण, अनुमतियाँ और सदस्यता दोबारा जाँचता है। निरस्तीकरण नए अनुरोध रोकता है, पहले स्वीकार काम या क्लाइंट को दिए डेटा/प्रतियों को नहीं। डाउनग्रेड या पात्र सदस्यता स्थिति खोने पर endpoint उपयोग और नए कनेक्शन रुकते हैं, लेकिन साइन-इन उपयोगकर्ता पुराने कनेक्शन सूचीबद्ध और निरस्त कर सकते हैं।
डेटा आकार और कार्यभार सीमाएँ
- HTTP input: 256 KiB। टूल उत्तर: 1 MiB, text और structured दोनों रूपों तथा escaping को मिलाकर। प्रोजेक्ट पढ़ने की सीमा 256 KiB है; अधिक आउटपुट अस्वीकार होता है, चुपचाप छोटा नहीं किया जाता।
- प्रति खाता और सर्वर प्रक्रिया: 60 अनुरोध/मिनट, दस गणना calls/मिनट और दो साथ चल रहे अनुरोध। एक प्रक्रिया में कुल अधिकतम आठ समवर्ती MCP अनुरोध। 429 पर Retry-After का पालन करें।
- इनपुट सुरक्षा: गहराई 24, 32768 nodes, arrays में अधिकतम 4096 तत्व और केवल finite संख्याएँ। ज्यामिति: 64 पंक्तियाँ, 1000 ट्यूब/पंक्ति, कुल 16384 ट्यूब, 1024 सर्किट, 200 खंड और 16384 पंक्ति × खंड कोशिकाएँ; मुख्य आयाम अधिकतम 100 m और fpi अधिकतम 100।
- अंदरूनी व्यास धनात्मक, pitches बाहरी व्यास से बड़े और फिन का खाली अंतर धनात्मक होना चाहिए। सर्किट कुल ट्यूबों से अधिक नहीं हो सकते; समानांतर circuitry arrays की लंबाई समान होनी चाहिए। passes की सीमा 16384 है। ये सुरक्षा सीमाएँ हैं, अनुशंसित डिजाइन रेंज या sizing algorithm में बदलाव नहीं।
- दर/समवर्तिता की स्थिति प्रक्रिया की memory में है और उसके साथ रीसेट होती है; यह replicas के बीच वैश्विक quota नहीं। synchronous इंजनों में सुनिश्चित गणना deadline या worker-आधारित सख्त CPU cancellation नहीं है। सुरक्षा सीमाओं से अधिकतम response time की गारंटी न मानें।
गोपनीय जानकारी खोले बिना त्रुटि जाँचें
कनेक्शन न बने तो नाम, नियमों की स्वीकृति, सदस्यता और सक्रिय कनेक्शन संख्या जाँचें। Clipboard विफल हो तो बंद करने से पहले दिखा टोकन सुरक्षित कॉपी करें; बंद करने के बाद पुनर्प्राप्ति की आशा रखने के बजाय नया बनाएँ। क्लाइंट त्रुटि की जाँच में केवल गोपनीय डेटा हटाए हुए status/error codes और टोकन-रहित कॉन्फ़िगरेशन साझा करें।
| संकेत | क्या जाँचें |
|---|---|
| 400 / 405 / 415 | एक वैध JSON-RPC object, URL query नहीं, केवल POST, application/json और आवश्यक Accept; क्लाइंट ट्रांसपोर्ट जाँचें। |
| 401 | Authorization में समर्पित MCP टोकन; अमान्य, समाप्त या निरस्त हो सकता है। REST कुंजी काम नहीं करती। |
| 403 | Manufacturer active/trialing, वैध scopes और अनुमत host/origin। Origin रोक को लाँघने का प्रयास न करें। |
| 413 / OUTPUT_TOO_LARGE | अनुरोध छोटा करें, कम प्रोजेक्ट सूचीबद्ध करें या प्रोजेक्ट/गणना डेटा आकार जाँचें। आंशिक परिणाम नहीं आता। |
| 429 | Retry-After तक प्रतीक्षा करें; समवर्तिता या आवृत्ति घटाएँ। बनाते समय दस सक्रिय कनेक्शन सीमा जाँचें। |
| 503 / REPOSITORY_UNAVAILABLE | सेवा/प्रमाणीकरण/डेटाबेस या repository की उपलब्धता; क्रेडेंशियल साझा किए बिना बाद में दोबारा प्रयास करें। |
| BAD_INPUT / TOOL_ERROR | schema, mode requirements, इकाइयाँ, ज्यामिति सीमाएँ और मूल इंजन संदेश जाँचें; गायब डेटा पूछें। |
| NON_FINITE_RESULT | इंजन ने non-finite संख्या दी; उसकी जगह वैध अनुमान नहीं रखा गया। इनपुट और diagnostic देखें। |
| NOT_FOUND / UNSUPPORTED_MODULE | अपने प्रोजेक्ट/संस्करण ID जाँचें। Shell & Tube विवरण MCP से उपलब्ध नहीं। |
| टूल अनुपस्थित / isError: true | HTTP 200 पर भी scopes और टूल उत्तर जाँचें। SDK validation/protocol त्रुटि केवल text दे सकती है। |
