godot-mcp
godot-mcp
Ein MCP-Server, der es einem KI-Agenten ermöglicht, an einem Godot-4.x-Projekt so zu arbeiten, wie es ein Entwickler tut: Szenen lesen und bearbeiten, Skripte schreiben, bauen, testen, ausführen, das Ergebnis ansehen und debuggen, was schiefgelaufen ist.
Zwei Dinge heben ihn vom Raten über Dateiformate oder blindem Shelling ab:
Er fragt Godot selbst. Szenen- und Ressourcendateien werden strukturell geparst und neu serialisiert (nachweislich byte-identisch bei Round-Trips gegen einen realen Projektkorpus), aber alles, was vom eigenen Verhalten der Engine abhängt — C#-Introspection, Shader-Kompilierung, Eingabebindungen, Editor-Zustand — wird beantwortet, indem Godot tatsächlich headless ausgeführt oder ein laufender Editor abgefragt wird, nicht indem Godots Semantik aus dem Gedächtnis neu implementiert wird.
Er scheitert laut. Jeder messbare Fehlermodus in diesem Projekt — ein fehlendes Display, eine nicht gebaute C#-Assembly, ein geschlossener Editor, ein Nicht-.NET-Binary — ist ein benannter, eindeutiger Fehler mit einer Abhilfe, kein stilles leeres Ergebnis. Siehe
docs/capability-matrix.mdfür die Messungen, auf denen dies aufbaut; mehrere davon existieren speziell, weil sich das offensichtliche Signal (Exit-Code, ein Nicht-Null-Rückgabewert) als Lüge herausgestellt hat.
50 Tools, organisiert in vier Stufen danach, was sie zum Funktionieren benötigen. Siehe docs/tools.md für die vollständige Referenz und docs/troubleshooting.md für das, was zu tun ist, wenn ein Tool sich weigert.
Voraussetzungen
Node.js >= 20
Ein Godot-4.7+-Binary (die Fähigkeitsmatrix wurde gegen 4.7 gemessen; andere 4.x-Versionen sollten sich voraussichtlich ähnlich verhalten, sind aber unverifiziert)
Für jedes C#-Tool (
build_csharp,run_tests,csharp_script_info,validate_node_propertyund C#-Skriptpfade übervalidate_script): ein .NET/mono-Build von Godot — die gewöhnliche GDScript-only-Distribution kann.cs-Skripte nicht laden oder introspizieren, und jedes C#-Tool erkennt dies im Voraus und verweigert mitNOT_MONO_BINARY, anstatt mittendrin zu scheitern. Die--version-Ausgabe eines Mono-Builds enthält.mono.und er liefert ein GeschwisterverzeichnisGodotSharp/mit.Speziell für die C#-Tools: ein
dotnet-SDK aufPATH(build_csharpundrun_testsrufen es direkt auf;csharp_script_infoundvalidate_node_propertybenötigen, dass ein Debug-Build bereits existiert, der vonbuild_csharpoderbuild_godot_artifactsstammt).
Related MCP server: godot-mcp-pilot
Installation und Build
git clone <this-repo> godot-mcp
cd godot-mcp
npm install
npm run buildDies erzeugt dist/server.js, den Einstiegspunkt, den ein MCP-Client ausführt.
Konfigurieren eines MCP-Clients
Weisen Sie Ihren Client mit node auf dist/server.js und geben Sie ihm eine Möglichkeit, ein Godot-Binary zu finden. Das einfachste Setup setzt GODOT_PATH explizit:
{
"mcpServers": {
"godot": {
"command": "node",
"args": ["/path/to/godot-mcp/dist/server.js"],
"env": {
"GODOT_PATH": "/path/to/Godot_v4.7-stable_mono_linux.x86_64"
}
}
}
}Wie der Server ein Godot-Binary findet
In dieser Reihenfolge gewinnt das zuerst Gefundene:
Ein explizites
binary-Argument, das einem Tool-Aufruf übergeben wird.Die Umgebungsvariable
GODOT_PATH.Ein Binary, das unter dem eigenen
vendor/-Verzeichnis des Projekts mitgeliefert wird (bis zu 3 Ebenen tief durchsucht, wobei eines bevorzugt wird, dessen Dateinamemonoenthält) — für Projekte, die ihren eigenen Godot-Build mitbringen.godot,godot4odergodot-monoaufPATH.
Wie der Server ein Projekt findet
In dieser Reihenfolge:
Ein explizites
project-Argument, das einem Tool-Aufruf übergeben wird.Die Umgebungsvariable
GODOT_PROJECT.Aufwärtsgehen vom Arbeitsverzeichnis des Serverprozesses auf der Suche nach
project.godot.
Wenn keines davon zu einem Verzeichnis mit project.godot auflöst, schlagen Tools, die ein Projekt benötigen, mit PROJECT_NOT_FOUND fehl.
GODOT_MCP_DOCS_CACHE
godot_class_doc und search_classes erstellen einen Klassenreferenz-Index, indem sie das Godot-Binary selbst befragen, was langsam genug ist, um einen Cache zu rechtfertigen. Der Index wird standardmäßig unter $TMPDIR/godot-mcp-docs-cache/<godot-version>/ geschrieben; setzen Sie GODOT_MCP_DOCS_CACHE, um ihn an einem persistenten Ort abzulegen. Der Cache ist nach Godot-Version verschlüsselt, sodass ein Upgrade des Binaries einen frischen Index erstellt, anstatt einen veralteten auszuliefern. Wenn Ihr MCP-Client den Server mit einem Arbeitsverzeichnis außerhalb des Zielprojekts ausführt, setzen Sie GODOT_PROJECT explizit:
{
"mcpServers": {
"godot": {
"command": "node",
"args": ["/path/to/godot-mcp/dist/server.js"],
"env": {
"GODOT_PATH": "/path/to/Godot_v4.7-stable_mono_linux.x86_64",
"GODOT_PROJECT": "/path/to/your/godot-project"
}
}
}
}Rufen Sie in jeder neuen Sitzung zuerst godot_status auf — es meldet den aufgelösten Binary-Pfad, die Version, ob es ein Mono-Build ist, die Display-Verfügbarkeit, das Projektverzeichnis und ob die C#-Assembly gebaut ist, sodass ein Agent (oder Sie) sehen kann, was tatsächlich möglich ist, bevor etwas versucht wird.
Die vier Stufen
Jedes Tool wird von der niedrigsten Stufe bedient, die es beantworten kann. Wenn ein Tool mit TIER_UNAVAILABLE oder DISPLAY_REQUIRED fehlschlägt, ist dies der Grund:
Stufe | Mechanismus | Erfordert |
A — Dateiebene | Direktes Lesen/Schreiben von | Nichts — überhaupt kein Godot-Prozess |
B — Headless-CLI |
| Ein Godot-Binary und/oder ein |
C — Editor-Brücke | Ein TCP-Socket zu einem GDScript-Editor-Addon | Ein laufender Godot-Editor mit installiertem und aktiviertem Addon (unten) |
D — Display-abhängig | Ein Stufe-B-Tool, das zusätzlich einen Frame rendern muss | Alles, was Stufe B benötigt, plus ein echtes Display (X11 oder Wayland) |
Stufe D ist kein separater Transport — es ist eine Fähigkeitsbeschränkung zusätzlich zu Stufe B. Nur capture_screenshot ist Stufe D: Es gibt keinen Headless-Rendering-Pfad in Godot, daher erfordern Screenshots ein tatsächliches Display, virtuell oder physisch. run_project mit windowed: true hat dieselbe Anforderung.
Stufe-A-Tools (die meisten Szenen-, Knoten-, Skript- und Projektkonfigurationsbearbeitungen) funktionieren ganz ohne installiertes Godot — sie sind reine Dateioperationen, getestet gegen einen Korpus realer .tscn/.tres/project.godot-Dateien, die byte-identisch neu serialisiert werden. Stufe B benötigt ein Godot-Binary und/oder dotnet auf PATH oder wie oben aufgelöst. Stufe C benötigt das Editor-Addon (nächster Abschnitt) — bis es installiert ist und ein Editor mit aktiviertem Addon läuft, schlagen alle fünf Editor-Brücken-Tools mit TIER_UNAVAILABLE fehl; das ist erwartet, kein Fehler, und die Fehlermeldung sagt Ihnen, welche von zwei unterschiedlichen Situationen zutrifft (siehe docs/troubleshooting.md).
Siehe docs/tools.md für die Stufe jedes Tools.
Installieren des Editor-Addons (Stufe C)
Fünf Tools — editor_state, get_selected_node, live_scene_tree, open_scene_in_editor und execute_editor_script — kommunizieren über einen Loopback-TCP-Socket mit einem laufenden Godot-Editor, anstatt einen Prozess zu starten. Das erfordert ein kleines GDScript-Editor-Addon, das im Zielprojekt installiert und aktiviert ist. Es gibt kein Installations-Tool: In das addons/-Verzeichnis eines Benutzers zu schreiben und sein project.godot zu verändern, ist genau das, was die Pfad-Jail-Disziplin dieses Projekts zu vermeiden sucht, indem sie es nicht automatisch tut. Dies ist ein einmaliger manueller Schritt:
Kopieren Sie
addon/godot_mcp/aus diesem Repository in dasaddons/-Verzeichnis des Zielprojekts, sodass es unter<project>/addons/godot_mcp/plugin.cfglandet.Aktivieren Sie das Plugin — entweder im Editor (Projekteinstellungen > Plugins > godot_mcp > Aktivieren) oder indem Sie es direkt zu
project.godothinzufügen:[editor_plugins] enabled=PackedStringArray("res://addons/godot_mcp/plugin.cfg")Starten (oder neu starten) Sie den Godot-Editor für dieses Projekt — headless ist in Ordnung (
--headless --editor --path <project>), kein Display erforderlich. Das Addon schreibt beim Start eine Handshake-Datei nach<project>/.godot/mcp_bridge.json; die fünf Tools lesen sie, um den Port der Brücke und das Sitzungs-Token zu finden.
Beachten Sie, dass der Editor-Auswahlzustand in einem Headless-Editor immer leer ist — das ist erwartet (get_selected_node meldet „nichts ausgewählt" als normales Ergebnis, nicht als Fehler).
Sicherheit und Umfang
Pfad-Jail. Jeder Schreibpfad — Szene, Skript, Ressource, Screenshot-Ausgabe — wird aufgelöst und muss innerhalb des Projektverzeichnisses liegen. Ein Pfad, der es verlässt, direkt oder über einen Symlink, wird mit
PATH_OUTSIDE_PROJECTabgelehnt, bevor irgendetwas angefasst wird.dry_run. Jedes mutierende Tool akzeptiertdry_runund gibt stattdessen einen vereinheitlichten Diff zurück. Verwenden Sie es, um eine Änderung zu prüfen, bevor Sie sich darauf festlegen.Kein Backup-Speicher. Versionskontrolle ist das Undo-System. Dies ist eine bewusste Vereinfachung — es gibt keinen Snapshot- oder Backup-Mechanismus im Server selbst. Wenn Ihr Projekt nicht unter Versionskontrolle steht, verwenden Sie
dry_runvor jedem mutierenden Aufruf oder beginnen Sie, Versionskontrolle zu nutzen.execute_editor_scriptist keine Sandbox. Es führt beliebiges GDScript in Ihrem tatsächlich laufenden Editorprozess aus, mit denselben Privilegien wie der Editor selbst — es kann Live-Editorzustand, die offene Szene und alles andere, was von GDScript aus erreichbar ist, lesen und verändern. Behandeln Sie es so, wie Sie es behandeln würden, einem Agenten eine Shell zu übergeben: geeignet für einen vertrauenswürdigen Agenten, der an Ihrem eigenen Projekt arbeitet, nicht für unvertrauenswürdige Eingaben.
Testen
npm testFührt tsc --noEmit gegen sowohl tsconfig.json als auch tsconfig.test.json aus, dann die vollständige Vitest-Suite. Fast jeder Test ist auf Parser-Ebene: Er füttert vorgefertigte Godot/MSBuild-Ausgaben durch die Parser und prüft das strukturierte Ergebnis, sodass die Suite ohne Godot-Installation und ohne .NET-Toolchain läuft und schnell und portabel bleibt (CI, Container, ein Laptop mit keinerlei Installation).
GODOT_TEST_BINARY
Zwei Blöcke sind anders: tests/integration/tier-b.test.ts treibt ein echtes Godot-Binary an — baut temporäre Projekte auf der Festplatte und ruft validate_script, check_shaders, run_project und godot_class_doc dagegen auf — weil ein Parser ewig gegen vorgefertigten Text getestet werden kann, ohne jemals zu beweisen, dass der eigene Prozess-Spawning-, Argument-Aufbau- und Stream-Lese-Code des Tools tatsächlich gegen die echte Engine funktioniert. tests/integration/tier-c.test.ts tut dasselbe für die Editor-Brücken-Tools, mit einer materiell anderen Anforderung: Es muss einen echten Godot-Editor als langlebigen, abgekoppelten Prozess starten (Editoren beenden sich nicht von selbst) und ihn danach zuverlässig wieder einfangen, auch bei Testfehlern.
Nicht gesetzt (Standard): beide Blöcke melden sich als
SKIPPED. Nichts anderes innpm testist betroffen.Gesetzt auf den Pfad eines Godot-4.7+-Binaries: beide Blöcke führen tatsächlich Ende-zu-Ende dagegen aus.
GODOT_TEST_BINARY=/path/to/Godot_v4.7-stable_linux.x86_64 npm testEin Mono/.NET-Build ist für diesen Block nicht erforderlich. Wenn Sie auch an den C#-orientierten Tools (build_csharp, run_tests) arbeiten, möchten Sie separat ein dotnet auf PATH haben; es gibt derzeit keine äquivalente Gate-Variable dafür, da keiner der Tests des GODOT_TEST_BINARY-Blocks sie benötigt.
Dokumentation
docs/tools.md— jedes Tool, nach Bereich gruppiert, mit Stufe und wichtigsten Eingaben.docs/troubleshooting.md— gemessene Fehlermodi und ihre Behebungen.docs/capability-matrix.md— die empirischen Messungen, auf denen das Verhalten dieses Projekts aufbaut.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityAmaintenanceA TypeScript MCP server that lets AI assistants interact with the Godot 4.x game engine: not just editing files, but playing the game.3679457MIT
- AlicenseAqualityDmaintenanceAn MCP server that gives AI assistants direct control over Godot 4 game development projects. It enables launching the editor, running projects, creating and editing scenes, writing GDScript, and inspecting assets through natural language commands.44304MIT
- AlicenseAqualityBmaintenanceAn MCP server that enables AI assistants to directly run, inspect, modify, and debug Godot game development projects through 110+ tools covering scenes, scripts, resources, runtime debugging, and asset management.33212MIT
- FlicenseNot gradedqualityAmaintenanceA local MCP server plus a bundled Godot editor addon that lets an AI agent create, inspect, run, debug, and export real Godot 4.6 games through tools.2
Related MCP Connectors
An MCP server that gives your AI access to the source code and docs of all public github repos
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/blentz/godot-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server