← ब्लॉग पर वापस

हमने Godot के लिए रीयल-टाइम MCP सर्वर कैसे बनाया

VberAI के Godot MCP आर्किटेक्चर के अंदर: कैसे एक रीयल-टाइम MCP सर्वर Godot एडिटर को AI क्लाइंट से जोड़ता है बिना सीन ट्री को फ्रीज़ किए।

प्रकाशित
  • vberai
  • godot
  • mcp
  • architecture
  • realtime

Godot में MCP सर्वर के लिए “रीयल-टाइम” क्यों मायने रखता है

अधिकांश MCP डेमो REST-आकार की दुनिया में काम करते हैं: मॉडल एक प्रश्न पूछता है, एक उपकरण JSON लौटाता है, और किसी को परवाह नहीं होती कि राउंड ट्रिप में दो सेकंड लगे। Godot अलग है। एडिटर के पास एक लाइव सीन ट्री, संसाधन आयात, और प्ले-मोड लूप होता है। यदि आपका MCP सर्वर मुख्य थ्रेड को ब्लॉक करता है—या केवल प्रोजेक्ट का पुराना डंप देखता है—तो AI क्लाइंट सह-पायलट की तरह महसूस नहीं करते, बल्कि अतिरिक्त चरणों वाले रिमोट फ़ाइल संपादक की तरह लगते हैं।

जब हमने VberAI के लिए Godot MCP डिज़ाइन किया, तो संक्षिप्त निर्देश स्पष्ट था:

  • एक AI सहायक (Cursor, Claude, Windsurf, और समान MCP क्लाइंट) को एडिटर को संचालित करना चाहिए, न कि केवल डिस्क से .gd फ़ाइलें पढ़ना
  • नोड बनाना, नाम बदलना, स्क्रिप्ट संलग्न करना, और चयन क्वेरी करना जैसी क्रियाएं पूरी होनी चाहिए जबकि एडिटर प्रतिक्रियाशील रहे
  • प्ले-मोड और एडिट-मोड संदर्भ ईमानदार रहने चाहिए—उपकरणों को जोर से विफल होना चाहिए जब कोई ऑपरेशन प्ले के दौरान असुरक्षित हो

यह पोस्ट इंजीनियरिंग की कहानी है: हमने एक रीयल-टाइम MCP सर्वर कैसे बनाया जो Godot के बगल में बैठता है, बजाय इसके कि प्रोजेक्ट को एक स्थिर रिपॉजिटरी मान ले।

इंजनों के लिए “केवल-फ़ाइल” MCP की समस्या

एक भोला दृष्टिकोण आकर्षक है:

  1. MCP सर्वर को प्रोजेक्ट फ़ोल्डर पर इंगित करें
  2. read_file / write_file / list_dir को उजागर करें
  3. मॉडल को GDScript आविष्कार करने दें और उम्मीद करें कि एडिटर अच्छी तरह से रीलोड हो जाएगा

यह दस्तावेज़ीकरण साइटों के लिए काम करता है। यह इंजन के काम के लिए विफल होता है क्योंकि:

  • सीन का स्वामित्व मेमोरी में रहता है — अनसेव किए गए .tscn अंतर, खुले सीन, और एडिटर चयन डिस्क पर अदृश्य होते हैं
  • आयात पाइपलाइन स्टेटफुल होती हैं — PNG लिखना “सही आयात सेटिंग्स के साथ संसाधन तैयार” के समान नहीं है
  • सिग्नल और नोड पथ ग्राफ डेटा होते हैं — स्ट्रिंग संपादन चुपचाप वायरिंग तोड़ देते हैं
  • विलंबता बढ़ती है — हर “क्या नोड दिखाई दिया?” पुष्टिकरण एक और पूर्ण फ़ाइलसिस्टम स्कैन बन जाता है

हमें एक MCP सतह की आवश्यकता थी जो मानव Godot डॉक में जो देखता है उसे प्रतिबिंबित करे: पदानुक्रम, इंस्पेक्टर-आकार के गुण, और संसाधन हैंडल—न कि केवल पथ स्ट्रिंग।

आर्किटेक्चर अवलोकन

उच्च स्तर पर, Godot MCP तीन सहयोगी परतें हैं:

MCP क्लाइंट (Cursor / Claude / …)
        │  JSON-RPC stdio या स्थानीय ट्रांसपोर्ट पर
        ▼
MCP सर्वर (VberAI Godot ब्रिज प्रक्रिया)
        │  कमांड क्यू + परिणाम लिफाफे
        ▼
Godot एडिटर प्लगइन (GDExtension / एडिटर प्लगइन)
        │  मुख्य थ्रेड पर विलंबित कॉल
        ▼
एडिटर सीन ट्री / ResourceDB / स्क्रिप्ट एडिटर

परत 1 — MCP उपकरण सतह

उपकरण जानबूझकर छोटे और क्रिया-आकार के होते हैं:

  • godot_get_scene_tree — संपादित सीन का स्नैपशॉट नोड प्रकारों और पथों के साथ
  • godot_create_node / godot_set_property
  • godot_attach_script / godot_run_script_snippet (संरक्षित)
  • godot_list_resources / godot_get_selection

हम एक विशाल do_anything उपकरण से बचते हैं। छोटे उपकरणों को मान्य करना आसान, लॉग करना आसान, और मॉडल के लिए असीमित पैच में दुरुपयोग करना कठिन होता है।

परत 2 — रीयल-टाइम ब्रिज

ब्रिज वह जगह है जहाँ “रीयल-टाइम” वास्तव में रहता है:

  • MCP प्रक्रिया और एडिटर प्लगइन के बीच एक द्विदिश चैनल (विकास में स्थानीय सॉकेट या नामित पाइप; उत्पाद बिल्ड इसे VberAI डेस्कटॉप सहायक के पीछे लपेट सकते हैं)
  • एक कमांड क्यू जो उत्परिवर्तनों को क्रमबद्ध करता है ताकि दो अतिव्यापी उपकरण कॉल सीन ट्री को रेस न कर सकें
  • अनुरोध आईडी + स्वीकृति ताकि MCP क्लाइंट फ़ाइलसिस्टम को पोल किए बिना “लागू” की प्रतीक्षा कर सके
  • हार्टबीट / एडिटर लाइवनेस ताकि क्लाइंट जान सकें कि Godot सत्र के बीच में कब बंद हुआ

परत 3 — Godot में मुख्य-थ्रेड सुरक्षा

Godot के UI और सीन API मुक्त-थ्रेडेड नहीं हैं। प्लगइन कभी भी MCP I/O थ्रेड पर नोड्स को उत्परिवर्तित नहीं करता। इसके बजाय:

  1. MCP कमांड ब्रिज थ्रेड पर आता है
  2. पेलोड क्यू में जाता है
  3. एडिटर विलंबित कॉलबैक मुख्य थ्रेड पर चलता है (call_deferred / आइडल फ्रेम हुक)
  4. परिणाम लिफाफा सफलता, संरचित त्रुटि, या “प्ले मोड समाप्त होने के बाद पुनः प्रयास करें” लौटाता है

यह पैटर्न डिज़ाइन द्वारा उबाऊ है। उबाऊ होना “रीयल-टाइम” को “यादृच्छिक एडिटर फ्रीज़” बनने से रोकता है।

इसे रीयल-टाइम महसूस कराना (विलंबता के बारे में झूठ बोले बिना)

यहाँ “रीयल-टाइम” का मतलब जादुई शून्य विलंबता नहीं है। इसका मतलब है फीडबैक लूप उस तरह से मेल खाता है जैसे मानव एडिटर में काम करते हैं।

स्नैपशॉट बनाम स्ट्रीम

प्रारंभिक प्रोटोटाइप हर कॉल पर पूरा सीन ट्री लौटाते थे। बड़े ओपन-वर्ल्ड सेटअप पर यह ढह गया। हमने स्विच किया:

  • डिफ़ॉल्ट रूप से उथले स्नैपशॉट (रूट + एक स्तर, या चयन-केंद्रित)
  • पथ-स्कोप्ड रीड जब मॉडल पहले से ही एक सबट्री जानता है
  • वैकल्पिक परिवर्तन टोकन ताकि बाद के कॉल “X के बाद से क्या बदला?” पूछ सकें, सब कुछ फिर से सीरियलाइज़ करने के बजाय

अंतर-अनुकूल परिणाम

उपकरण परिणामों में शामिल हैं:

  • विहित NodePath स्ट्रिंग
  • प्रकार के नाम (CharacterBody2D, Control, …)
  • गुण कुंजियाँ जो इंस्पेक्टर फ़ील्ड से साफ-साफ मैप होती हैं
  • स्पष्ट चेतावनी जब एक लेखन लागू किया गया था लेकिन सीन अभी भी गंदा/अनसेव है

मॉडल तेज़ी से पुनरावृत्ति करते हैं जब परिणाम UI स्थिति की तरह दिखते हैं, न कि मुक्त-पाठ ब्लॉग पोस्ट की तरह।

सीमित प्ले-मोड व्यवहार

प्ले मोड वह जगह है जहाँ “AI ने मेरा प्रोजेक्ट तोड़ दिया” टिकटों में से आधे शुरू होते हैं। हमारा नियम सेट:

मोडअनुमतअवरुद्ध या गेटेड
संपादनसीन उत्परिवर्तन, संसाधन क्वेरीपुष्टि के बिना विनाशकारी प्रोजेक्ट हटाना
प्लेअधिकतर रीड / रनटाइम नोड्स क्वेरीसंपादित सीन में संरचनात्मक संपादन
संक्रमणप्रतीक्षा / पुनः प्रयास संकेतमौन नो-ऑप

स्पष्ट त्रुटियाँ चतुराई से बेहतर हैं। यदि मॉडल प्ले के दौरान संपादित नहीं कर सकता, तो MCP प्रतिक्रिया संरचित रूप में ऐसा कहती है—ताकि क्लाइंट उपयोगकर्ता को प्ले रोकने के लिए कह सके, फिर पुनः प्रयास करे।

कठिन समस्याएँ जिनका हमने सामना किया (और बनाए रखा)

1. एडिटर डेटाबेस नहीं है

नोड ऑर्डर, स्वामी संबंध, और पैक किए गए सीन इस तरह से इंटरैक्ट करते हैं जो GIF में सरल और .tscn में गड़बड़ दिखते हैं। हमने Godot के अपने API (Node, EditorInterface, संसाधन लोडर) पर झुकाव किया, बजाय एक समानांतर सीन मॉडल आविष्कार करने के जो बह जाएगा।

2. स्क्रिप्ट बनाम सीन दो सत्य स्रोतों के रूप में

स्क्रिप्ट संलग्न करना यह सुनिश्चित करने के समान नहीं है कि स्क्रिप्ट संकलित हो और क्लास नाम हल हो। सर्वर संकलन/संलग्न परिणामों को अलग-अलग रिपोर्ट करता है। इसने “उपकरण ने सफलता कहा, इंस्पेक्टर कुछ नहीं दिखाता” विफलताओं के एक वर्ग को रोका।

3. मल्टी-विंडो / मल्टी-प्रोजेक्ट सत्र

डेवलपर्स एक से अधिक Godot इंस्टेंस खोलते हैं। ब्रिज एक स्पष्ट एडिटर सत्र आईडी से बंधता है ताकि उपकरण कॉल सप्ताहांत की नींद + पुनः खोलने के बाद गलत प्रोजेक्ट में न उतरें।

4. सुरक्षा सीमाएँ

एक MCP सर्वर जो सीन को फिर से लिख सकता है, शक्तिशाली है। स्थानीय-प्रथम ट्रांसपोर्ट, स्पष्ट उपकरण अनुमति सूची, और पूर्ण प्रोजेक्ट ट्री का कोई मौन क्लाउड बहिर्वाह गैर-परक्राम्य हैं। “AI सहायक” और “आपके गेम पर रिमोट शेल” को अलग उत्पाद श्रेणियाँ बने रहना चाहिए।

यह AI Studio और शेष VberAI के बगल में कैसे फिट बैठता है

Godot MCP इंजन संचालक है। पूरक टुकड़े:

  • VberAI Studio (AI Studio) — Figma/PSD → Control पदानुक्रमों के लिए डिज़ाइन-से-इंजन संरचना; MCP फिर आयात के बाद बटनों को वायर करता है और नोड्स का नाम बदलता है
  • Unity MCP / Cocos MCP — समान MCP विचार, विभिन्न एडिटर होस्ट और सुरक्षा नियम
  • AI Super Matting — बनावट के इंजन संसाधन बनने से पहले अल्फा को साफ करता है जिसे MCP बाद में असाइन करता है

साझा थीसिस: AI को लाइव उत्पादन सतह (एडिटर, एसेट्स, सीन) को छूना चाहिए, न कि केवल टेक्स्ट के रूप में रिपॉजिटरी को।

यदि आप अपना स्वयं का इंजन MCP बना रहे हैं तो व्यावहारिक सुझाव

  1. इंजन मुख्य थ्रेड पर उत्परिवर्तनों को क्यू करें — कभी भी गेम इंजन को शेयर-नथिंग सर्वर न समझें
  2. स्कीमा वाले छोटे उपकरणों को प्राथमिकता दें — मान्यता प्रॉम्प्ट कविता से बेहतर है
  3. NodePaths और प्रकार लौटाएँ, गद्य नहीं — मॉडल को संचालन योग्य हैंडल चाहिए
  4. हर प्रतिक्रिया में प्ले/एडिट मोड को एन्कोड करें — यहाँ अस्पष्टता विश्वास को नष्ट करती है
  5. “डॉक में दिखाई देने” तक राउंड-ट्रिप मापें — न केवल JSON एन्कोड समय

यदि आप केवल MCP प्रक्रिया को अनुकूलित करते हैं और एडिटर ब्रिज को अनदेखा करते हैं, तो आप एक तेज़ मतिभ्रम लूप शिप करेंगे।

निष्कर्ष

Godot के लिए एक रीयल-टाइम MCP सर्वर बनाने का मतलब था एडिटर को एक लाइव सहयोगी के रूप में मानना: एक क्यूड, मुख्य-थ्रेड-सुरक्षित ब्रिज; एडिटर क्रियाओं के आकार के उपकरण; और प्ले-मोड सीमाओं के बारे में ईमानदारी। केवल-फ़ाइल MCP आसान है—और सीन-नेटिव काम के लिए अधूरा है।

शिप किए गए पथ को चाहते हैं, सप्ताहांत प्रोटोटाइप नहीं? VberAI Godot MCP से शुरू करें, अपने पसंदीदा MCP क्लाइंट को कनेक्ट करें, और एक तुच्छ पहला उपकरण कॉल आज़माएँ: वर्तमान सीन ट्री को सूचीबद्ध करें, फिर चयन के नीचे एक नोड बनाएँ। वह एकल लूप—क्वेरी → उत्परिवर्तन → इसे डॉक में देखें—उत्पाद है। बाकी सब कुछ इसके चारों ओर विश्वसनीयता इंजीनियरिंग है।

आपको ये लेख भी पसंद आ सकते हैं

Claude Code को Unity MCP से कैसे जोड़ें: इंस्टॉल और कॉन्फ़िगर करें

Unity MCP इंस्टॉल करें और Claude CLI से जोड़ें: Package Manager से इम्पोर्ट, एक्टिवेशन, लोकल MCP Server (पोर्ट 6589) शुरू करें, Quick setup से CLI कमांड कॉपी-रन करें, और Hierarchy पढ़ें/लिखें।

  • unity
  • mcp
  • claude-code
  • tutorial
और पढ़ें

AI Studio के साथ 3 मिनट में प्रोडक्शन-रेडी गेम UI बनाएं (वीडियो गाइड)

आधिकारिक VberAI YouTube वॉकथ्रू—VberAI Studio के साथ PSD/Figma इम्पोर्ट करें और मिनटों में Unity, Cocos Creator और Godot में गेम UI एक्सपोर्ट करें।

  • vberai
  • ai-studio
  • video
  • psd
और पढ़ें

गेम UI लोकेल ओवरफ़्लो: डिज़ाइन हेडरूम और VberAI Studio Translate एक्सपोर्ट QA

जर्मन या स्पेनिश कॉपी से बटन और लिस्ट टूटने पर फेल/पास कैसे तय करें, डिज़ाइन में चौड़ाई कैसे आरक्षित करें, और पूर्ण-ट्री री-एक्सपोर्ट से पहले VberAI Studio कैनवास पर लोकेल की तुलना कैसे करें।

  • game-ui-design
  • game-dev-ai
  • ui-localization
  • i18n
और पढ़ें