हमने 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 की समस्या
एक भोला दृष्टिकोण आकर्षक है:
- MCP सर्वर को प्रोजेक्ट फ़ोल्डर पर इंगित करें
read_file/write_file/list_dirको उजागर करें- मॉडल को 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_propertygodot_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 थ्रेड पर नोड्स को उत्परिवर्तित नहीं करता। इसके बजाय:
- MCP कमांड ब्रिज थ्रेड पर आता है
- पेलोड क्यू में जाता है
- एडिटर विलंबित कॉलबैक मुख्य थ्रेड पर चलता है (
call_deferred/ आइडल फ्रेम हुक) - परिणाम लिफाफा सफलता, संरचित त्रुटि, या “प्ले मोड समाप्त होने के बाद पुनः प्रयास करें” लौटाता है
यह पैटर्न डिज़ाइन द्वारा उबाऊ है। उबाऊ होना “रीयल-टाइम” को “यादृच्छिक एडिटर फ्रीज़” बनने से रोकता है।
इसे रीयल-टाइम महसूस कराना (विलंबता के बारे में झूठ बोले बिना)
यहाँ “रीयल-टाइम” का मतलब जादुई शून्य विलंबता नहीं है। इसका मतलब है फीडबैक लूप उस तरह से मेल खाता है जैसे मानव एडिटर में काम करते हैं।
स्नैपशॉट बनाम स्ट्रीम
प्रारंभिक प्रोटोटाइप हर कॉल पर पूरा सीन ट्री लौटाते थे। बड़े ओपन-वर्ल्ड सेटअप पर यह ढह गया। हमने स्विच किया:
- डिफ़ॉल्ट रूप से उथले स्नैपशॉट (रूट + एक स्तर, या चयन-केंद्रित)
- पथ-स्कोप्ड रीड जब मॉडल पहले से ही एक सबट्री जानता है
- वैकल्पिक परिवर्तन टोकन ताकि बाद के कॉल “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 AI Studio (AI Studio) — Figma/PSD → Control पदानुक्रमों के लिए डिज़ाइन-से-इंजन संरचना; MCP फिर आयात के बाद बटनों को वायर करता है और नोड्स का नाम बदलता है
- Unity MCP / Cocos MCP — समान MCP विचार, विभिन्न एडिटर होस्ट और सुरक्षा नियम
- AI Super Matting — बनावट के इंजन संसाधन बनने से पहले अल्फा को साफ करता है जिसे MCP बाद में असाइन करता है
साझा थीसिस: AI को लाइव उत्पादन सतह (एडिटर, एसेट्स, सीन) को छूना चाहिए, न कि केवल टेक्स्ट के रूप में रिपॉजिटरी को।
यदि आप अपना स्वयं का इंजन MCP बना रहे हैं तो व्यावहारिक सुझाव
- इंजन मुख्य थ्रेड पर उत्परिवर्तनों को क्यू करें — कभी भी गेम इंजन को शेयर-नथिंग सर्वर न समझें
- स्कीमा वाले छोटे उपकरणों को प्राथमिकता दें — मान्यता प्रॉम्प्ट कविता से बेहतर है
- NodePaths और प्रकार लौटाएँ, गद्य नहीं — मॉडल को संचालन योग्य हैंडल चाहिए
- हर प्रतिक्रिया में प्ले/एडिट मोड को एन्कोड करें — यहाँ अस्पष्टता विश्वास को नष्ट करती है
- “डॉक में दिखाई देने” तक राउंड-ट्रिप मापें — न केवल JSON एन्कोड समय
यदि आप केवल MCP प्रक्रिया को अनुकूलित करते हैं और एडिटर ब्रिज को अनदेखा करते हैं, तो आप एक तेज़ मतिभ्रम लूप शिप करेंगे।
निष्कर्ष
Godot के लिए एक रीयल-टाइम MCP सर्वर बनाने का मतलब था एडिटर को एक लाइव सहयोगी के रूप में मानना: एक क्यूड, मुख्य-थ्रेड-सुरक्षित ब्रिज; एडिटर क्रियाओं के आकार के उपकरण; और प्ले-मोड सीमाओं के बारे में ईमानदारी। केवल-फ़ाइल MCP आसान है—और सीन-नेटिव काम के लिए अधूरा है।
शिप किए गए पथ को चाहते हैं, सप्ताहांत प्रोटोटाइप नहीं? VberAI Godot MCP से शुरू करें, अपने पसंदीदा MCP क्लाइंट को कनेक्ट करें, और एक तुच्छ पहला उपकरण कॉल आज़माएँ: वर्तमान सीन ट्री को सूचीबद्ध करें, फिर चयन के नीचे एक नोड बनाएँ। वह एकल लूप—क्वेरी → उत्परिवर्तन → इसे डॉक में देखें—उत्पाद है। बाकी सब कुछ इसके चारों ओर विश्वसनीयता इंजीनियरिंग है।
और पढ़ें
आपको ये लेख भी पसंद आ सकते हैं
2026 में AI गेम डेवलपमेंट: एडिटर लूप से बाहर निकले बिना Unity और Godot MCP
AI-सहायता प्राप्त Unity और Godot वर्कफ़्लो का व्यावहारिक नक्शा—कब MCP मदद करता है, कब मानव प्रभारी रहता है, और मल्टी-इंजन टीमें एक प्रॉम्प्टिंग आदत कैसे साझा करती हैं।
- ai-game-development
- unity-game-development
- godot-game-engine
- unity-mcp
Figma से Unity UI: VberAI AI Studio के साथ डिज़ाइन फ्रेम्स से प्रीफैब्स तक
Figma लेआउट को Unity UI पदानुक्रम में बदलें—आयात, प्राकृतिक भाषा संपादन, और VberAI AI Studio में प्रीफैब निर्यात, साथ ही हैंडऑफ के बाद Figma MCP और Unity MCP कैसे फिट होते हैं।
- figma-to-unity
- figma-to-code
- figma-ai
- figma-design
VberAI एंड-टू-एंड: AI Studio + Engine MCP से प्लेअबल मिनी-गेम
AI Studio में UI जनरेट या इंपोर्ट करें, फिर Cursor + Godot/Unity/Cocos MCP से लॉजिक और डिबग चलाएँ। chibi match-3 रिकॉर्डिंग शामिल—Studio एक्सपोर्ट के बाद बिना हैंड-रिटन कोड के प्लेअबल स्लाइस तक।
- VberAI
- AI Studio
- Unity MCP
- Godot MCP