Godot MCP (Vollkorn-Games/godot-mcp) is an MCP server listed on the M8ven Trust Index. It scores 54 out of 100, grade D. It declares 75 tools. No publisher has claimed this listing.
An MCP server that gives AI assistants full control over the Godot game engine, enabling scene building, script writing, game running, and more through natural language.
Caution. Specific findings reduced this grade. They are listed on the page. Grades reflect the full trust pyramid: code, verification depth, and reputation. New projects cap at C until adoption is earned.
How we verified
Verified is a snapshot. Live keeps it current, and builds your track record.
⚡ Connect GitHub → continuous verification on every pushwhy connect →Who stands behind it
Vollkorn-Games
Source: Glama
Claim it to get a verified publisher badge, a free copy of our full audit findings, and direct contact for any high-priority issues we find. Or connect your repo for our deepest verification, Live Monitored: read-only, revoke anytime. What we access →
Install from
The grade above is for the source repository. Registries can serve a different version, so we mark the ones we were not able to read.
These names and descriptions are the publisher's own, read from the source code. We print them as written. Our assessment is the findings above, not this list.
launch_editorLaunch the Godot editor GUI for a project. Does not run the game — use run_project or run_interactive for that.
run_projectRun the Godot project non-interactively and capture console output. No input, screenshots, or state queries — use run_interactive for those.
get_debug_outputGet console output (stdout/stderr) from a running Godot project. Supports errors_only and tail filters. For structured errors with stack traces, use get_runtime_errors.
stop_projectStop the currently running Godot project. Does not affect the editor launched via launch_editor.
get_godot_versionGet the installed Godot version
list_projectsList Godot projects in a directory
get_project_infoRetrieve metadata about a Godot project
create_sceneCreate a new Godot scene (.tscn) file with a root node. Specify rootNodeType (e.g., 'Node2D', 'Node3D', 'Control'; defaults to 'Node2D').
add_nodeAdd a child node to a scene file on disk. Defaults to root if parentNodePath is omitted. For sub-scene instances, use instantiate_scene.
load_spriteLoad a sprite into a Sprite2D node
export_mesh_libraryExport a scene as a MeshLibrary resource
save_sceneSave a scene file, optionally to a new path via newPath (creating a copy). Most editing tools save automatically; use this primarily for saving copies.
set_cellsSet tile cells on a TileMapLayer node in a scene
get_scene_treeRead a scene's node tree from a .tscn file on disk as JSON (names, types, properties, hierarchy). No running game required. For architecture analysis, use get_scene_insights.
set_node_propertiesSet properties on a node in a saved scene file (.tscn) on disk permanently. For live runtime changes, use set_property instead.
attach_scriptAttach a GDScript file to an existing node in a scene
create_resourceCreate a .tres resource file with typed properties
edit_project_settingsModify project.godot settings (input actions, display, rendering, physics, etc.). For autoload singletons, prefer manage_autoloads.
remove_nodeRemove a node (and its children) from a scene
reparent_nodeMove a node to a different parent within the same scene
connect_signalConnect a signal from one node to a method on another node in a scene file (.tscn) on disk. For runtime signal monitoring, use subscribe_signals or send_key_sequence.
get_tile_dataRead existing tile cells from a TileMapLayer node in a scene
create_tilesetCreate a TileSet resource with atlas sources from texture files
export_projectExport a Godot project for a target platform using a configured export preset
validate_sceneValidate a scene for common issues (missing scripts, broken references, orphan nodes)
batch_operationsExecute multiple scene operations in a single Godot process invocation. Much faster than individual tool calls since each spawns a separate process. Use for 3+ operations.
get_uidGet the UID for a specific file in a Godot project (for Godot 4.4+)
update_project_uidsUpdate UID references in a Godot project by resaving resources (for Godot 4.4+)
add_to_groupAdd a node to one or more groups in a scene
remove_from_groupRemove a node from one or more groups in a scene
instantiate_sceneAdd a scene as a child instance of another scene (e.g., spawn a player scene inside a level)
add_animationAdd an animation with tracks and keyframes to an existing AnimationPlayer node. To create the AnimationPlayer itself, use create_animation_player first.
read_scriptRead the contents of a GDScript file from a Godot project. Returns the full source code as text.
write_scriptWrite or overwrite a GDScript file in a Godot project. Creates parent directories if needed. Use validate_script afterward to check for syntax errors.
set_custom_tile_dataSet custom data layer values on specific tile cells in a TileMapLayer
duplicate_nodeDuplicate a node within a scene, optionally with a new name or different parent
rename_nodeRename a node in a scene file. Updates the node's name while keeping all properties, children, and connections intact.
get_node_propertiesRead properties from a node in a saved scene file (.tscn) on disk. Returns all non-default properties, or specific ones if listed. For runtime properties, use evaluate_expression.
create_animation_playerCreate an AnimationPlayer node in a scene with optional pre-configured animations. To add animations to an existing player, use add_animation.
manage_autoloadsAdd, remove, or list autoload singletons in project.godot
set_collision_layer_maskSet collision layer and/or mask on a physics node. Accepts layer numbers (1-32) as array or raw bitmask.
capture_screenshotRender a scene file statically and save the viewport as a PNG. No running game needed. For live game captures, use game_screenshot or run_and_capture. Requires a display server.
run_and_captureRun the project for a duration, capture a screenshot, then stop. Runs the full game (unlike capture_screenshot) without needing run_interactive (unlike game_screenshot). Requires a display server.
send_inputSend a single Godot InputMap action (e.g., 'move_up', 'jump') to a running interactive project. Returns delivery confirmation only, not the effect — for multi-step testing prefer send_key_sequence with {"action": ...} items, which batches inputs, waits, and state/screenshot checkpoints into one roun…
list_input_actionsList all input actions defined in a project's project.godot (the InputMap). Useful before using send_input. No running game required.
run_interactiveRun a Godot project with MCP input receiver injected. Enables send_key_sequence (batched inputs + checkpoints), game_state, get_runtime_errors, and screenshots via TCP. Use instead of run_project for interactive testing.
game_stateFast structured verification (preferred over game_screenshot for gameplay logic): returns current scene name, script variables of all autoload singletons, and Player position if a Player node exists. For state not exposed via autoloads, use evaluate_expression or get_node_properties. For inline stat…
call_methodInvoke a method on a live node in a running interactive Godot project. Resolves the node by path relative to the current scene (e.g., "Player", "World/Enemies/Boss") and calls the named method with optional arguments. Returns the serialized result. The project must be running via run_interactive.
find_nodesSearch the live runtime scene tree by name pattern and/or type, including dynamically spawned nodes. For static .tscn analysis, use get_scene_tree. Requires run_interactive.
evaluate_expressionExecute an arbitrary GDScript expression at runtime and return the result. The expression runs in the context of the current scene (e.g., "get_tree().current_scene.name", "Vector2(1,2).length()"). Useful for debugging, querying state, and one-off calculations. The project must be running via run_int…
game_screenshotCapture a screenshot from a running interactive project. Slowest verification path — use only when visual appearance itself matters (rendering, layout, animation). For gameplay/logic checks prefer game_state, evaluate_expression, or get_runtime_errors: structured, and much faster than writing and re…
send_keySend a single keyboard key event to a running interactive Godot project. Supports any key name recognized by Godot (e.g., "space", "a", "escape", "f1") and modifier keys. For sending multiple keys, prefer send_key_sequence — it processes all keys server-side in one round-trip with optional state/scr…
send_mouse_clickSend a mouse click (press+release) at specific coordinates. For cursor movement, use send_mouse_motion. For dragging, use send_mouse_drag. Requires run_interactive.
send_mouse_motionMove the mouse cursor to specific coordinates without clicking. Use for hover effects, aiming, and cursor tracking. Requires run_interactive.
send_mouse_dragSend a mouse drag (press, move, release) from one position to another. For simple clicks, use send_mouse_click. Requires run_interactive.
wait_for_signalBlock until a signal is emitted on a node in the running game. Useful for sequencing test steps (e.g., wait for "animation_finished" or "died"). Returns whether the signal was received or the wait timed out. The project must be running via run_interactive.
wait_for_nodeBlock until a node appears in the scene tree. Useful for waiting on dynamically spawned nodes (e.g., wait for "Player/Sword" to appear after equip). Returns whether the node was found or the wait timed out. The project must be running via run_interactive.
get_performance_metricsRetrieve performance metrics (FPS, draw calls, memory, node count, etc.) from a running project. Optionally filter to specific metrics. Requires run_interactive.
reset_sceneReload the current scene in a running interactive Godot project. Useful for resetting game state during test loops. The project must be running via run_interactive.
get_runtime_errorsRetrieve runtime errors, warnings, and backtraces since the last call. Returns structured entries with error type, source, and stack traces. Requires Godot 4.5+ and run_interactive.
get_scene_insightsAnalyze a scene's architecture: type distribution, signals, sub-scenes, scripts, groups, and tree depth. Runs headless (no game needed).
get_node_insightsAnalyze a GDScript file: classify methods, identify signals, map dependencies, and list exports. Takes a scriptPath, not a nodePath. Runs headless (no game needed).
run_testsRun GUT (Godot Unit Testing) tests via headless Godot. Requires GUT installed (addons/gut/). Returns pass/fail summary and console output.
send_key_sequencePrimary gameplay testing tool. Sends multiple raw keys and/or InputMap actions in one round-trip with inline checkpoints: {"wait": ms} delays, {"state": true} state snapshots, {"screenshot": "path"} captures, collectSignals for signal events. Replaces send_input/send_key loops with shell sleeps and …
send_joypad_buttonSend a gamepad button event (A, B, X, Y, shoulders, dpad, start, etc.) to a running project. For input actions, prefer send_input. Requires run_interactive.
send_joypad_motionSend a gamepad analog stick or trigger axis event. Simulates analog input with float precision. For input actions, prefer send_input. Requires run_interactive.
pause_gamePause or unpause a running project. MCP receiver stays active for screenshots, state queries, and property changes while paused. Requires run_interactive.
set_propertySet a property on a live node at runtime. Changes are immediate but NOT saved to disk — use set_node_properties for permanent changes. Requires run_interactive.
validate_scriptValidate a GDScript file for syntax errors using Godot's parser in headless mode. No running game needed.
execute_scriptExecute a multi-line GDScript block at runtime in the current scene context. Unlike evaluate_expression, supports variables, loops, and control flow. Requires run_interactive.
subscribe_signalsSubscribe to signals on a node for persistent monitoring. Retrieve with get_signal_events. For single-sequence monitoring, prefer send_key_sequence with collectSignals. Requires run_interactive.
get_signal_eventsRetrieve buffered signal events from subscribe_signals. Returns signal name, arguments, and timestamp; clears buffer by default. Requires run_interactive.
search_assetsSearch the Godot Asset Library for addons and project templates. Returns matching assets with the asset_id you pass to install_asset. Read-only network call to the public Asset Library REST API.
install_assetDownload an asset from the Godot Asset Library and extract it into a project. Provide assetId (download URL and sha256 are resolved and verified via the Asset Library) or a direct downloadUrl. The archive's single wrapping folder is stripped by default so addons land under res://addons/. Files are w…
discover_toolsList available tools by category. Categories: process, project, scene, node, animation, tilemap, resource, script, signal_group, uid, settings, interactive, screenshot, analysis, testing, assets, meta.
Disclosed vulnerabilities in this server's declared npm dependencies (via OSV). Whether each is reachable depends on the installed versions.
When Vitest UI server is listening, arbitrary file can be read and executed
axios Vulnerable to Full Man-in-the-Middle via Prototype Pollution Gadget in `config.proxy`
axios Vulnerable to Credential Theft and Response Hijacking via Prototype Pollution Gadget in Config Merge
Axios is Vulnerable to Denial of Service via __proto__ Key in mergeConfig
Axios is vulnerable to DoS attack through lack of data size check
GODOT_ASSET_LIBRARY_URLGODOT_PATH2. The environment variable pointing to your Godot executableMCP_EXCLUDE_TOOLSComma-separated tool names to exclude (e.g., "export_project,manage_autoloads")MCP_READ_ONLYSet to "true" to block all write operationsMCP_TOOLSETSComma-separated tool categories to enable (e.g., "scene,interactive,analysis")Tool annotations
No tools have read-only/destructive annotations
Add readOnlyHint or destructiveHint annotations to every tool so hosts can warn users before invoking.
All four hints declared on every tool
75/75 tools missing one or more hints — launch_editor (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint); run_project (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint); get_debug_output (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint), +72 more. OpenAI's directory rejects tools where any of the four hints are missing or non-boolean.
For every tool, set all four hints (readOnlyHint, destructiveHint, idempotentHint, openWorldHint) to explicit true/false values that match the handler’s actual behaviour.
Tool test coverage
51/75 tools referenced in tests (68%)
Write tests that reference each tool by name so every tool has at least one test.
Shell command execution
18 child_process calls — runs shell commands
Prefer library functions over shell-outs. If you must shell out, ensure all inputs are properly escaped.
Production dependencies are patched
0 critical, 13 high severity in production deps — axios@1.7.9 (high), axios@1.7.9 (high)
Run npm audit fix, or upgrade the affected packages to a non-vulnerable version.
Dev dependencies
1 critical/high in dev-only deps (does not ship to users)
Upgrade dev dependencies when convenient.
Claim the listing to review these findings one by one and send us a correction where you disagree, straight to the team. Claiming also means we tell you when the grade moves, and reach you first if we find anything urgent.
[](https://m8ven.ai/mcp/vollkorn-games/godot-mcp)?variant=verified from the URL.Vetting this one by hand? Tool Check is an MCP that scores other MCPs. Add it once and ask Claude, ChatGPT, or any MCP client to grade a server, surface CVEs, check the publisher, and suggest safer alternatives — before you install.
https://m8ven.ai/api/mcp/tool-check