वास्तुकला¶
रनटाइम¶
cloakbrowser-mcp एक बाहरी MCP सर्वर है जो stdio या Streamable HTTP को एक्सपोज कर सकता है। स्टार्टअप पर यह:
- CloakBrowser Chromium बाइनरी को रिज़ॉल्व या इंस्टॉल करता है;
- एक अस्थायी Playwright MCP कॉन्फ़िग फ़ाइल लिखता है;
- stdio पर एक चाइल्ड प्रोसेस के रूप में upstream
@playwright/mcpशुरू करता है; - MCP SDK क्लाइंट ट्रांसपोर्ट के साथ उस चाइल्ड से कनेक्ट करता है;
- चयनित ट्रांसपोर्ट पर उपयोगकर्ता के MCP क्लाइंट के लिए एक बाहरी MCP सर्वर को एक्सपोज़ करता है;
- अपस्ट्रीम टूल सूची और टूल कॉल्स को बिना बदले फॉरवर्ड करता है;
cloakbrowser_binary_infoऔरcloakbrowser_bridge_infoको जोड़ता है।
यह डिज़ाइन क्यों¶
अपस्ट्रीम Playwright MCP प्रोजेक्ट पहले से ही ब्राउज़र टूल कॉन्ट्रैक्ट्स का मालिक है और तेज़ी से विकसित हो रहा है। ब्रिज मॉडल इस प्रोजेक्ट को छोटा रखता है और ब्राउज़र ऑटोमेशन लॉजिक की नकल करने से बचाता है।
मैनेज्ड CDP स्वामित्व¶
प्रबंधित CDP उसी ब्राउज़र पीढ़ी के लिए एक वैकल्पिक दूसरा नियंत्रण सतह है:
MCP client -> outer bridge -> upstream Playwright MCP child -> Chromium
| | |-- Playwright pipe
| `-- generated config `-- internal loopback CDP
`-- external capability proxy <--------- CDP client
MCP सत्र बाहरी पोर्ट लीज़, क्षमता प्रॉक्सी, उत्पन्न अपस्ट्रीम का मालिक है संरचना, प्रतिस्थापनीय अपस्ट्रीम चाइल्ड, और वर्तमान Chromium पीढ़ी। एक CDP क्लाइंट कभी भी सीधे आंतरिक लूपबैक एंडपॉइंट से नहीं जुड़ता। बूटस्ट्रैप एक जगह रखता है MCP के माध्यम से वन-यूज ब्राउज़र-पेज चैलेंज और इससे पहले CDP के माध्यम से इसे उपभोग करता है बाहरी क्षमता प्रकाशित की गई है। Playwright की आंतरिक रिमोट-डिबगिंग पाइप बनी रहती है ब्रिज-प्रबंधित TCP एंडपॉइंट के साथ सक्रिय।
MCP सत्र के लिए बाहरी पोर्ट का पट्टा स्थिर है, जबकि चाइल्ड प्रोसेस, आंतरिक एंडपॉइंट, पीढ़ी संख्या, और क्षमता URL प्रतिस्थापनीय हैं। ब्राउज़र हानि वर्तमान क्षमता को अमान्य कर देती है और इसके प्रॉक्सी सॉकेट्स को बंद कर देती है, लेकिन नहीं करती बैकग्राउंड में एक बच्चे को शुरू करें। पहली बाद में browser_* MCP कॉल लागू होती है फॉरवर्ड से पहले पुनः आरंभ नियम:
- समानांतर ब्राउज़र कॉल एक सीमित पुनरारंभ साझा करते हैं;
- पुराना बच्चा अप्राप्य हो जाता है और उसे नष्ट कर दिया जाता है;
- एक प्रतिस्थापन बच्चा उसी सत्र कॉन्फ़िगरेशन और एक नए आंतरिक पोर्ट का उपयोग करता है;
- प्रकाशन से पहले स्वामित्व और बाहरी तैयारी की जांच की जाती है;
- प्रतीक्षारत ब्राउज़र कॉल्स को प्रत्येक तैयार विकल्प के लिए ठीक एक बार अग्रेषित किया जाता है।
यदि तत्परता विफल होती है, तो कोई प्रतीक्षारत ब्राउज़र कॉल अपर स्तरीय बच्चे तक नहीं पहुँचती, कोई क्षमता नहीं प्रकशित किया गया है, और बाद में ब्राउज़र कॉल एक नया सीमित प्रयास शुरू कर सकता है। ब्राउज़र स्थिति जैसे टैब और इन-मेमोरी स्टोरेज प्रतिस्थापन के दौरान पुनर्स्थापित नहीं होते। स्थानीय उपकरण, टूल सूचीकरण, खोज रीड्स, और सामान्य CDP डिसकनेक्ट्स रीस्टार्ट ट्रिगर नहीं करते हैं।
क्लीनअप पहुँचता को उलट देता है: प्रवेश रोकें, क्षमता को अमान्य करें, प्रॉक्सी बंद करें सॉकेट्स, अपस्ट्रीम चाइल्ड और ब्राउज़र को नष्ट करें, बाहरी लिस्नर को बंद करें, फिर पोर्ट लीज़ रिलीज़ करें। इससे एक पुराना URL चुपचाप नए ब्राउज़र में जाने से रोकता है।
MCP और CDP कमांड एक साथ चल सकते हैं। ब्रिज क्रॉस-प्रोटोकॉल नहीं जोड़ता है। लेन-देन या यह अनुमान लगाना कि कौन सा कॉलर किसी पृष्ठ का मालिक है; कॉलरों को विनाशकारी या के समन्वय करना होगा विरोधाभासी क्रियाएँ।
डॉकर¶
Docker इमेज बेस इमेज के रूप में पिन किए गए आधिकारिक Playwright MCP इमेज का उपयोग करती है। ब्रिज /opt/cloakbrowser-mcp के अंतर्गत स्थापित है, जबकि अपस्ट्रीम Playwright MCP /app/cli.js पर उपलब्ध रहता है।
विन्यास¶
ब्रिज CloakBrowser लॉन्च विकल्पों के साथ एक अस्थायी JSON कॉन्फ़िगरेशन लिखता है। अपस्ट्रीम PLAYWRIGHT_MCP_* एनवायरनमेंट वेरिएबल्स अभी भी अपस्ट्रीम Playwright MCP को फॉरवर्ड किए जाते हैं।
परिवहन¶
डिफ़ॉल्ट ट्रांसपोर्ट stdio है। Streamable HTTP को स्पष्ट रूप से --transport streamable-http या CLOAK_PLAYWRIGHT_MCP_TRANSPORT=streamable-http के साथ सक्षम किया जाता है।
stdio के लिए, एक बाहरी सर्वर एक अपस्ट्रीम Playwright MCP चाइल्ड प्रक्रिया का मालिक होता है और अपस्ट्रीम Playwright MCP के डिफ़ॉल्ट प्रोफ़ाइल व्यवहार को बनाए रखता है। Streamable HTTP के लिए, प्रत्येक MCP सत्र का अपना बाहरी सर्वर, अपस्ट्रीम चाइल्ड प्रोसेस, उत्पन्न कॉन्फ़िग और इन-मेमोरी ट्रांसपोर्ट स्थिति होती है। HTTP सत्र अलग-थलग ब्राउज़र प्रोफाइल के साथ अपस्ट्रीम Playwright MCP शुरू करते हैं ताकि समवर्ती उपयोगकर्ता एक ही स्थायी Chromium प्रोफाइल को साझा या उसके लिए प्रतिस्पर्धा न करें।
सत्र बैकएंड केवल मेटाडेटा संग्रहीत करता है। बिल्ट-इन बैकएंड memory है; भविष्य के Redis, Postgres, या SQLite एडॉप्टर मेटाडेटा और लॉक का समन्वय कर सकते हैं, लेकिन वे स्वामित्व वाली सर्वर प्रक्रिया के बाहर निकलने के बाद लाइव अपस्ट्रीम ब्राउज़र प्रक्रिया को पुनर्स्थापित नहीं कर सकते। हॉरिज़ॉन्टल स्केलिंग में mcp-session-id द्वारा की गई स्टिकी सेशंस का उपयोग किया जाना चाहिए।
ब्रिज Streamable HTTP के लिए MCP SDK StreamableHTTPServerTransport का उपयोग करता है। यह अप्रचलित MCP SSEServerTransport या legacy /sse endpoint को एक्सपोज़ नहीं करता।