Install
$ agentstack add mcp-tugcantopaloglu-godot-mcp ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ● Network access Used
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Godot MCP - Full Control
[](https://modelcontextprotocol.io/introduction) [](https://godotengine.org) [](https://www.typescriptlang.org/) [](https://opensource.org/licenses/MIT)
A comprehensive Model Context Protocol (MCP) server that gives AI assistants full control over the Godot game engine. 149 tools spanning networking, 3D/2D rendering, UI controls, audio effects, animation trees, file I/O, runtime code execution, property inspection, scene manipulation, signal management, physics, project creation, and more.
Acknowledgments
This project is built upon and extends godot-mcp by Solomon Elias (Coding-Solo). The original project provided the foundational architecture including the TypeScript MCP server, headless GDScript operations system, and TCP-based runtime interaction server. Thank you for making this possible with your excellent open-source work!
What's New (Improvements Over Original)
The original godot-mcp provided 20 tools for basic project management and scene creation. This fork extends it to 149 tools with the following major additions:
Runtime Code Execution
game_eval- Execute arbitrary GDScript code in the running game with return values- Full
awaitsupport for async GDScript code - Works even when the game is paused (
PROCESS_MODE_ALWAYS)
Runtime Node Inspection & Manipulation
game_get_property/game_set_property- Read/write any property on any node by pathgame_call_method- Call any method on any node with argumentsgame_get_node_info- Full node introspection: properties, signals, methods, childrengame_instantiate_scene- Dynamically add scenes to the running gamegame_remove_node- Remove nodes at runtimegame_change_scene- Switch scenes at runtimegame_reparent_node- Move nodes between parents
Signal System
game_connect_signal- Wire up signal connections at runtimegame_disconnect_signal- Remove signal connectionsgame_emit_signal- Emit signals with arguments
Animation & Tweening
game_play_animation- Control AnimationPlayer (play, stop, pause, list)game_tween_property- Smooth property animation with configurable easing
Game Control & Debugging
game_pause- Pause/unpause the gamegame_performance- FPS, frame time, memory, object counts, draw callsgame_wait- Wait N frames (timing-sensitive operations)game_get_nodes_in_group- Query nodes by groupgame_find_nodes_by_class- Find all nodes of a specific class
Headless Scene Operations (No Running Game Needed)
read_scene- Parse any .tscn file and get full node tree with properties as JSONmodify_scene_node- Change node properties in scene filesremove_scene_node- Remove nodes from scene filesattach_script- Attach GDScript files to nodes in scenescreate_resource- Create .tres resource files (materials, themes, etc.)
Project Management
read_project_settings- Parse project.godot as structured JSONmodify_project_settings- Change project settings programmaticallylist_project_files- List and filter project files by extension
File I/O
read_file/write_file/delete_file- Full file system access within Godot projectscreate_directory- Create directory structures for scripts, scenes, assets
Error & Log Capture
game_get_errors- Get new pusherror/pushwarning messages since last callgame_get_logs- Get new print output from the running game since last call
Enhanced Input
game_key_hold/game_key_release- Hold keys down for movement testing (WASD etc.)game_scroll- Mouse scroll wheel eventsgame_mouse_drag- Drag between two points over multiple framesgame_gamepad- Gamepad button and axis input events
Project Creation & Configuration
create_project- Create a new Godot project from scratchmanage_autoloads- Add, remove, or list autoloadsmanage_input_map- Add, remove, or list input actions and key bindingsmanage_export_presets- Create or modify export preset configuration
Camera, Physics & Audio
game_get_camera/game_set_camera- Query and control 2D/3D camerasgame_raycast- Cast physics rays (auto-detects 2D vs 3D)game_get_audio- Get audio bus layout and playing streamsgame_spawn_node- Create any node type at runtime with propertiesgame_set_shader_param- Set shader parameters on materialsgame_audio_play/game_audio_bus- Full audio playback and bus controlgame_navigate_path- Query navigation paths (2D/3D)game_tilemap- Get/set TileMapLayer cellsgame_add_collision- Add collision shapes to physics bodiesgame_environment- Configure post-processing (fog, glow, SSAO, tonemap, etc.)game_manage_group- Add/remove nodes from groupsgame_create_timer- Create timer nodes programmaticallygame_set_particles- Configure GPUParticles2D/3D properties and process materialsgame_create_animation- Create animations with value/method/bezier/audio tracks and keyframesexport_project- Trigger headless project export builds (CI/CD ready)game_serialize_state- Save/load entire node tree state as JSONgame_physics_body- Configure mass, velocity, damping, friction, bouncegame_create_joint- Create physics joints (pin, spring, hinge, cone, slider)game_bone_pose- Get/set skeleton bone poses for character animationgame_ui_theme- Apply color, constant, and font size theme overridesgame_viewport- Create/configure SubViewport nodesgame_debug_draw- Draw debug geometry (lines, spheres, boxes)
Networking
game_http_request- HTTP GET/POST/PUT/DELETE with headers and bodygame_websocket- WebSocket client connect/disconnect/send messagesgame_multiplayer- ENet multiplayer create server/client/disconnectgame_rpc- Call or configure RPC methods on nodes
System & Window Control
game_script- Attach, detach, or get source of node scripts at runtimegame_window- Get/set window size, fullscreen, title, positiongame_os_info- Get platform, locale, screen, adapter, memory infogame_time_scale- Get/set Engine.time_scale and timing infogame_process_mode- Set node process mode (pausable/always/disabled)game_world_settings- Get/set gravity, physics FPS, and world settings
Advanced Signals & Input
game_list_signals- List all signals on a node with connectionsgame_await_signal- Await a signal with timeout and return argsgame_touch- Simulate touch press/release/drag and gesturesgame_input_state- Query pressed keys, mouse position, connected padsgame_input_action- Manage runtime InputMap actions and strength
3D Rendering & Geometry
game_csg- Create/configure CSG nodes with boolean operationsgame_multimesh- Create/configure MultiMeshInstance3D for instancinggame_procedural_mesh- Generate meshes via ArrayMesh from vertex datagame_light_3d- Create/configure 3D lights (directional/omni/spot)game_mesh_instance- Create MeshInstance3D with primitive meshesgame_gridmap- GridMap set/get/clear cells and query used cellsgame_3d_effects- Create ReflectionProbe, Decal, or FogVolumegame_gi- Create/configure VoxelGI or LightmapGIgame_path_3d- Create Path3D/Curve3D and manage curve pointsgame_sky- Create/configure Sky with procedural/physical skygame_camera_attributes- Configure DOF, exposure, auto-exposure on cameragame_navigation_3d- Create/configure NavigationRegion3D and bakegame_physics_3d- Area3D queries and point/shape intersection tests
2D Systems
game_canvas- Create/configure CanvasLayer and CanvasModulategame_canvas_draw- 2D drawing: line/rect/circle/polygon/text/cleargame_light_2d- Create/configure 2D lights and light occludersgame_parallax- Create/configure ParallaxBackground and layersgame_shape_2d- Line2D/Polygon2D point manipulationgame_path_2d- Path2D/Curve2D management and AnimatedSprite2Dgame_physics_2d- Area2D queries and 2D point/shape intersections
Advanced Animation
game_animation_tree- AnimationTree state machine travel and paramsgame_animation_control- AnimationPlayer seek/queue/speed/info controlgame_skeleton_ik- SkeletonIK3D start/stop/set target position
Advanced Audio
game_audio_effect- Add/remove/configure audio bus effectsgame_audio_bus_layout- Create/remove/reorder audio buses and routinggame_audio_spatial- Configure AudioStreamPlayer3D spatial properties
Editor & Project Tools
rename_file- Rename or move a file within the projectmanage_resource- Read or modify .tres/.res resource filescreate_script- Create a GDScript file from a templatemanage_scene_signals- List/add/remove signal connections in .tscn filesmanage_layers- List/set named layer definitions in projectmanage_plugins- List/enable/disable editor pluginsmanage_shader- Create or read .gdshader filesmanage_theme_resource- Create/read/modify Theme .tres resourcesset_main_scene- Set the main scene in project.godotmanage_scene_structure- Rename/duplicate/move nodes within .tscn scenesmanage_translations- List/add/remove translation files in projectgame_locale- Set/get locale and translate strings at runtime
UI Controls
game_ui_control- Set focus, anchors, tooltip, mouse filter on Controlgame_ui_text- LineEdit/TextEdit/RichTextLabel text operationsgame_ui_popup- Show/hide/popup for Popup/Dialog/Window nodesgame_ui_tree- Tree control: get/select/collapse/add/remove itemsgame_ui_item_list- ItemList/OptionButton: get/select/add/remove itemsgame_ui_tabs- TabContainer/TabBar: get/set current tabgame_ui_menu- PopupMenu/MenuBar: add/remove/get menu itemsgame_ui_range- ProgressBar/Slider/SpinBox/ColorPicker get/set
Rendering & Resources
game_render_settings- Get/set MSAA, FXAA, TAA, scaling mode/scalegame_resource- Runtime resource load, save, or preload
Robustness Improvements
- Reentrancy guard - Prevents concurrent command processing during async operations
- Full type conversion - Supports Vector2/3, Color, Quaternion, Basis, Transform2D/3D, AABB, Rect2, and all packed array types
- Smart property type detection - Uses node's
get_property_list()for automatic type conversion - PackedArray serialization - Proper JSON arrays instead of string fallback
- Graceful error handling - Scene read fallback to raw .tscn text on missing dependencies
All 149 Tools
Project Management (7 tools)
| Tool | Description | |------|-------------| | launch_editor | Launch Godot editor for a project | | run_project | Run a Godot project and capture output | | stop_project | Stop the running project | | get_debug_output | Get console output and errors | | get_godot_version | Get installed Godot version | | list_projects | Find Godot projects in a directory | | get_project_info | Get project metadata |
Scene Management (7 tools)
| Tool | Description | |------|-------------| | create_scene | Create a new scene with a root node type | | add_node | Add a node to an existing scene | | load_sprite | Load a texture into a Sprite2D node | | export_mesh_library | Export a scene as MeshLibrary | | save_scene | Save a scene (with optional variant path) | | get_uid | Get UID for a file (Godot 4.4+) | | update_project_uids | Resave resources to update UIDs |
Headless Scene Operations (5 tools)
| Tool | Description | |------|-------------| | read_scene | Read full scene tree as JSON | | modify_scene_node | Modify node properties in a scene file | | remove_scene_node | Remove a node from a scene file | | attach_script | Attach a GDScript to a scene node | | create_resource | Create a .tres resource file |
Project Settings (3 tools)
| Tool | Description | |------|-------------| | read_project_settings | Parse project.godot as JSON | | modify_project_settings | Change a project setting | | list_project_files | List/filter project files |
Runtime Input (4 tools)
| Tool | Description | |------|-------------| | game_screenshot | Capture a screenshot (base64 PNG) | | game_click | Click at a position | | game_key_press | Send key press or input action | | game_mouse_move | Move the mouse |
Runtime Inspection (3 tools)
| Tool | Description | |------|-------------| | game_get_ui | Get all visible UI elements | | game_get_scene_tree | Get full scene tree structure | | game_get_node_info | Detailed node introspection |
Runtime Code Execution (1 tool)
| Tool | Description | |------|-------------| | game_eval | Execute arbitrary GDScript with return values |
Runtime Node Manipulation (7 tools)
| Tool | Description | |------|-------------| | game_get_property | Get any node property | | game_set_property | Set any node property (auto type conversion) | | game_call_method | Call any method on a node | | game_instantiate_scene | Add a PackedScene to the running tree | | game_remove_node | Remove a node from the tree | | game_change_scene | Switch to a different scene | | game_reparent_node | Move a node to a new parent |
Runtime Signals (5 tools)
| Tool | Description | |------|-------------| | game_connect_signal | Connect a signal to a method | | game_disconnect_signal | Disconnect a signal | | game_emit_signal | Emit a signal with arguments | | game_list_signals | List all signals on a node with connections | | game_await_signal | Await a signal with timeout and return args |
Runtime Animation (2 tools)
| Tool | Description | |------|-------------| | game_play_animation | Control AnimationPlayer | | game_tween_property | Tween a property with easing |
Runtime Utilities (5 tools)
| Tool | Description | |------|-------------| | game_pause | Pause/unpause the game | | game_performance | Get FPS, memory, draw calls | | game_wait | Wait N frames | | game_get_nodes_in_group | Query nodes by group | | game_find_nodes_by_class | Find nodes by class type |
File I/O (4 tools)
| Tool | Description | |------|-------------| | read_file | Read a text file from a Godot project | | write_file | Create or overwrite a text file | | delete_file | Delete a file from a project | | create_directory | Create a directory inside a project |
Error & Log Capture (2 tools)
| Tool | Description | |------|-------------| | game_get_errors | Get new errors/warnings since last call | | game_get_logs | Get new print output since last call |
Enhanced Input (8 tools)
| Tool | Description | |------|-------------| | game_key_hold | Hold a key down (no auto-release) | | game_key_release | Release a held key | | game_scroll | Mouse scroll wheel event | | game_mouse_drag | Drag between two points over N frames | | game_gamepad | Gamepad button or axis input | | game_touch | Simulate touch press/release/drag and gestures | | game_input_state | Query pressed keys, mouse position, connected pads | | game_input_action | Manage runtime InputMap actions and strength |
Project Creation (4 tools)
| Tool | Description | |------|-------------| | `create_proje
…
Source & license
This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: tugcantopaloglu
- Source: tugcantopaloglu/godot-mcp
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.