MCP server for full Godot 4.x engine control — 149 tools for AI-driven game development
# Add to your Claude Code skills
git clone https://github.com/tugcantopaloglu/godot-mcpA 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.
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!
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:
game_eval - Execute arbitrary GDScript code in the running game with return valuesNo comments yet. Be the first to share your thoughts!
await support for async GDScript codePROCESS_MODE_ALWAYS)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 parentsgame_connect_signal - Wire up signal connections at runtimegame_disconnect_signal - Remove signal connectionsgame_emit_signal - Emit signals with argumentsgame_play_animation - Control AnimationPlayer (play, stop, pause, list)game_tween_property - Smooth property animation with configurable easinggame_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 classread_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.)read_project_settings - Parse project.godot as structured JSONmodify_project_settings - Change project settings programmaticallylist_project_files - List and filter project files by extensionread_file / write_file / delete_file - Full file system access within Godot projectscreate_directory - Create directory structures for scripts, scenes, assetsgame_get_errors - Get new push_error/push_warning messages since last callgame_get_logs - Get new print output from the running game since last callgame_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 eventscreate_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 configurationgame_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)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 nodesgame_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 settingsgame_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 strengthgame_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 testsgame_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 intersectionsgame_animation_tree - AnimationTree state machine travel and paramsgame_animation_control - AnimationPlayer seek/queue/speed/info controlgame_skeleton_ik - SkeletonIK3D start/stop/set target positiongame_audio_effect - Add/remove/configure audio bus effectsgame_audio_bus_layout - Create/remove/reorder audio buses and routinggame_audio_spatial - Configure AudioStreamPlayer3D spatial propertiesrename_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