Atlas / MCP servers / tugcantopaloglu / Godot

GodotCAUTION

mcp/tugcantopaloglu/godot-7

MCP server for full Godot 4.x engine control: 157 tools for AI-driven game development (GDScript and C#/.NET). Tested with Godot 4.7.

Verdict
CAUTION
Grade
B
Trust score
89 /100
Exposed tools
157 62r · 78w · 17d
Transport
stdio
License
MIT
Stars
472
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

[](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. 157 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 157 tools with the following major additions:

New in 3.1

  • `validate_script` autoload resolution - Script validation now compiles the target through a SceneTree at _initialize() (after project autoloads are registered) instead of --check-only at _init(). References to autoload singletons no longer produce false `Identi
Read from source at commit a1d79855c196OBSERVED · 2026-10-01
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control.

claude-code (npm)
claude mcp add godot-mcp -- npx -y @tugcantopaloglu/[email protected]
03

Exposed tools (157)

62 read · 78 write · 17 destructive. Blast radius: 17 tools can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.

ToolRiskDescription
add_nodewriteAdd a node to an existing scene
attach_scriptreadAttach a GDScript to a scene node (headless)
create_csharp_scriptwriteCreate a C# script file in a Godot .NET project
create_directorywriteCreate a directory inside a Godot project
create_projectwriteCreate a new Godot project from scratch
create_resourcewriteCreate a .tres resource file (headless)
create_scenewriteCreate a new Godot scene file
create_scriptwriteCreate a GDScript file from a template
delete_filedestructiveDelete a file from a Godot project
export_mesh_libraryreadExport a scene as a MeshLibrary resource
export_projectreadExport a Godot project using a preset
game_3d_effectswriteCreate ReflectionProbe, Decal, or FogVolume
game_add_collisionwriteAdd a collision shape to a physics body node
game_animation_controlreadAnimationPlayer seek/queue/speed/info control
game_animation_treereadAnimationTree state machine travel and params
game_audio_buswriteSet volume, mute, or solo on an audio bus
game_audio_bus_layoutdestructiveCreate/remove audio buses and routing
game_audio_effectdestructiveAdd/remove/configure audio bus effects
game_audio_playwritePlay, stop, or pause an AudioStreamPlayer node
game_audio_spatialreadConfigure AudioStreamPlayer3D spatial properties
game_await_signalreadAwait a signal with timeout and return args
game_bone_posewriteGet or set bone poses on a Skeleton3D node
game_call_methodreadCall a method on any node in the running game with optional arguments
game_camera_attributesreadConfigure DOF, exposure, auto-exposure on camera
game_canvaswriteCreate/configure CanvasLayer and CanvasModulate
game_canvas_drawdestructive2D drawing: line/rect/circle/polygon/text/clear
game_change_scenereadSwitch to a different scene file in the running game
game_clickreadClick at a position in the running Godot game window
game_connect_signalreadConnect a signal from one node to a method on another node in the running game
game_create_animationwriteCreate an animation with tracks and keyframes
game_create_jointwriteCreate a physics joint between two bodies
game_create_timerwriteCreate a Timer node with configuration
game_csgwriteCreate/configure CSG nodes with boolean operations
game_debug_drawreadDraw debug lines, spheres, or boxes in 3D
game_disconnect_signalreadDisconnect a signal connection in the running game
game_emit_signalreadEmit a signal on a node in the running game, optionally with arguments
game_environmentwriteGet or set environment and post-processing settings
game_evalwriteExecute GDScript in the running game. Use
game_find_nodes_by_classreadFind all nodes of a specific class type in the running game
game_gamepadwriteSend gamepad button or axis input event
game_get_audioreadGet audio bus layout and playing streams
game_get_camerareadGet active camera position, rotation, and size
game_get_errorsreadGet new push_error/push_warning messages since last call
game_get_logsreadGet new print output from the running game since last call
game_get_node_inforeadGet node info: class, properties, signals, methods, children
game_get_nodes_in_groupreadGet all nodes belonging to a specific group in the running game
game_get_propertyreadGet a property value from any node in the running game by its path
game_get_scene_treereadGet scene tree structure of the running game
game_get_uireadGet visible UI elements from the running game
game_giwriteCreate/configure VoxelGI or LightmapGI
game_gridmapdestructiveGridMap set/get/clear cells and query used cells
game_http_requestdestructiveHTTP GET/POST/PUT/DELETE with headers and body
game_input_actionreadManage runtime InputMap actions and strength
game_input_statereadQuery pressed keys, mouse position, connected pads
game_instantiate_scenewriteLoad a PackedScene and add it as a child of a node in the running game
game_key_holdreadHold a key down without auto-releasing
game_key_presswriteSend a key press or input action to the running game
game_key_releasereadRelease a previously held key
game_light_2dwriteCreate/configure 2D lights and light occluders
game_light_3dwriteCreate/configure 3D lights (directional/omni/spot)
game_list_signalsreadList all signals on a node with connections
game_localewriteSet/get locale and translate strings at runtime
game_manage_groupdestructiveAdd or remove a node from a group, or list groups
game_mesh_instancewriteCreate MeshInstance3D with primitive meshes
game_mouse_dragreadDrag mouse between two points over N frames
game_mouse_movewriteMove the mouse in the running Godot game
game_multimeshwriteCreate/configure MultiMeshInstance3D for instancing
game_multiplayerwriteENet multiplayer create server/client/disconnect
game_navigate_pathreadQuery a navigation path between two points
game_navigation_3dwriteCreate/configure NavigationRegion3D and bake
game_os_inforeadGet platform, locale, screen, adapter, memory info
game_parallaxwriteCreate/configure ParallaxBackground and layers
game_path_2dreadPath2D/Curve2D management and AnimatedSprite2D
game_path_3dwriteCreate Path3D/Curve3D and manage curve points
game_pausereadPause or unpause the running game
game_performancereadGet performance metrics (FPS, memory, draw calls)
game_physics_2dreadArea2D queries and 2D point/shape intersections
game_physics_3dreadArea3D queries and point/shape intersection tests
game_physics_bodyreadConfigure physics body properties (mass, velocity, etc.)
game_play_animationwriteControl an AnimationPlayer node: play, stop, pause, or list animations
game_procedural_meshreadGenerate meshes via ArrayMesh from vertex data
game_process_modewriteSet node process mode (pausable/always/disabled)
game_raycastreadCast a ray and return collision results
game_remove_nodedestructiveRemove and free a node from the running game\
game_render_settingswriteGet/set MSAA, FXAA, TAA, scaling mode/scale
game_reparent_nodewriteMove a node to a new parent in the running game\
game_resourcewriteRuntime resource load, save, or preload
game_rpcreadCall or configure RPC methods on nodes
game_screenshotreadScreenshot the running game (returns base64 PNG)
game_scriptreadAttach, detach, or get source of node scripts
game_scrollwriteSend mouse scroll wheel event at position
game_serialize_statewriteSave or load node tree state as JSON
game_set_camerawriteMove or rotate the active camera
game_set_particleswriteConfigure GPUParticles2D/3D node properties
game_set_propertywriteSet a property on a node in the running game
game_set_shader_paramwriteSet a shader parameter on a node\
game_shape_2dreadLine2D/Polygon2D point manipulation
game_skeleton_ikwriteSkeletonIK3D start/stop/set target position
game_skywriteCreate/configure Sky with procedural/physical sky
game_spawn_nodewriteCreate a new node of any type at runtime
game_terrainwriteCreate/modify terrain meshes from heightmap data
game_tilemapwriteGet or set cells in a TileMapLayer node
game_time_scalewriteGet/set Engine.time_scale and timing info
game_touchreadSimulate touch press/release/drag and gestures
game_tween_propertyreadTween a node property in the running game
game_ui_controlwriteSet focus, anchors, tooltip, mouse filter on Control
game_ui_item_listdestructiveItemList/OptionButton: get/select/add/remove items
game_ui_menudestructivePopupMenu/MenuBar: add/remove/get menu items
game_ui_popupreadShow/hide/popup for Popup/Dialog/Window nodes
game_ui_rangewriteProgressBar/Slider/SpinBox/ColorPicker get/set
game_ui_tabswriteTabContainer/TabBar: get/set current tab
game_ui_textreadLineEdit/TextEdit/RichTextLabel text operations
game_ui_themewriteApply theme overrides to a Control node
game_ui_treedestructiveTree control: get/select/collapse/add/remove items
game_videowriteVideo playback control: play, pause, stop, seek on VideoStreamPlayer
game_viewportwriteCreate or configure a SubViewport node
game_visual_shaderwriteCreate and edit VisualShader graphs: add/connect/disconnect nodes
game_waitreadWait N frames in the running game
game_websocketwriteWebSocket client connect/disconnect/send messages
game_windowwriteGet/set window size, fullscreen, title, position
game_world_settingswriteGet/set gravity, physics FPS, and world settings
get_debug_outputreadGet the current debug output and errors
get_godot_versionreadGet the installed Godot version
get_project_inforeadRetrieve metadata about a Godot project
get_uidreadGet the UID for a specific file in a Godot project (for Godot 4.4+)
launch_editorreadLaunch Godot editor for a specific project
list_project_filesreadList project files, optionally filtered by extension
list_projectsreadList Godot projects in a directory
load_spritereadLoad a sprite into a Sprite2D node
manage_autoloadsdestructiveAdd, remove, or list autoloads in a Godot project
manage_ci_pipelinewriteCreate/read GitHub Actions workflow for automated Godot exports
manage_docker_exportwriteCreate Dockerfile for headless Godot export
manage_export_presetswriteCreate or modify export preset configuration
manage_input_mapdestructiveAdd, remove, or list input actions and bindings
manage_layerswriteList/set named layer definitions in project
manage_pluginswriteList/enable/disable editor plugins
manage_resourcewriteRead or modify .tres/.res resource files
manage_scene_signalsdestructiveList/add/remove signal connections in .tscn files
manage_scene_structurewriteRename/duplicate/move nodes within .tscn scenes
manage_shaderwriteCreate or read .gdshader files
manage_theme_resourcewriteCreate/read/modify Theme .tres resources
manage_translationsdestructiveList/add/remove translation files in project
modify_project_settingswriteModify a project.godot setting
modify_scene_nodewriteModify node properties in a scene file (headless)
read_filereadRead a text file from a Godot project
read_project_settingsreadRead project.godot as structured JSON
read_scenereadRead scene file as JSON node tree (headless)
remove_scene_nodedestructiveRemove a node from a scene file (headless)
rename_filewriteRename or move a file within the project
run_projectwriteRun the Godot project and capture output
save_scenewriteSave changes to a scene file
set_main_scenewriteSet the main scene in project.godot
stop_projectwriteStop the currently running Godot project
update_project_uidswriteUpdate UID references by resaving resources (4.4+)
validate_scriptwriteCheck a GDScript file for syntax/type errors (headless, no run)
validate_scriptsreadBatch-check GDScript files (git-changed by default, or all)
write_filedestructiveCreate or overwrite a text file in a Godot project
04

Trust audit

CAUTIONgrade B · trust 89/100 Install with care. The audit found things worth knowing before you trust its output.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeWARN
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfaceWARN
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (5 observation(s))
Network
declared (4 observation(s))
Shell
none-observed
Dependencies
not all pinned
Secrets in source
none-found

Findings (9)

MEDIUMFilesystem / path · fs.system_paths · CWE-22, CWE-59
src/index.ts:300
'/usr/local/bin/godot',
MEDIUMFilesystem / path · fs.system_paths · CWE-22, CWE-59
src/index.ts:1205
description: 'Path to the node (e.g., "/root/Player", "/root/Main/Enemy")',
MEDIUMFilesystem / path · fs.system_paths · CWE-22, CWE-59
src/index.ts:1270
description: 'Path to the node (e.g., "/root/Player")',
MEDIUMFilesystem / path · mcp.destructive_tools · CWE-22, CWE-59
delete_file, game_audio_bus_layout, game_audio_effect, game_canvas_draw, game_gridmap, game_http_request, game_manage_group, game_remove_node, game_ui_item_list, game_ui_menu, game_ui_tree, manage_aut
Why it matters. 17 tool(s) can delete or overwrite
Fix. prefer a read-only mode or scoped tokens; the page states the blast radius
LOWFilesystem / path · fs.system_paths · CWE-22, CWE-59
tests/handlers.test.ts:143
const args = normalizeParameters({ node_path: '/root/Player', property: 'position' });
LOWFilesystem / path · fs.system_paths · CWE-22, CWE-59
tests/handlers.test.ts:145
expect(r.commandArgs).toEqual({ node_path: '/root/Player', property: 'position' });
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
tests/handlers.test.ts:879
const r = fakeHeadlessOp({ projectPath: '../../etc/passwd' }, simpleArgsFn);
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
tests/utils.test.ts:165
expect(validatePath('../../../etc/passwd')).toBe(false);
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
package.json
axios, fs-extra, @types/node, @vitest/coverage-v8, typescript, vitest
Why it matters. 6 dependency range(s) float
Fix. pin exact versions or ship a lockfile

Gates applied: no_behavioural_pass.

Audited 2026-10-01 · audit v0.4.1 · source sha a1d79855c196full audit observations/trust-audit/mcp-server/tugcantopaloglu__godot-7.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-01a1d79855c196CAUTIONB89first audit
06

Questions

What is the Godot MCP server?

MCP server for full Godot 4.x engine control: 157 tools for AI-driven game development (GDScript and C#/.NET). Tested with Godot 4.7.

What tools does Godot expose?

157 in total: 62 read-only, 78 that write, and 17 that can delete or overwrite (delete_file, game_audio_bus_layout, game_audio_effect, game_canvas_draw, game_gridmap). Every one is listed on this page with its risk.

Is Godot safe to connect to an agent?

With care. The audit graded it B (89/100) and found 9 things worth knowing before you trust this server, listed below with the exact line each was found on. Separately from the audit: 17 of its tools can destroy data, so scope the token you give it to what you actually need.

What credentials does Godot need?

No credential environment variables were found in its source, so it appears to need none.

How does Godot run?

It speaks stdio, so it runs as a local process your client starts. It is published on npm as @tugcantopaloglu/godot-mcp at 3.1.0.

How current is this page?

The grade is for one exact copy of the source (a1d79855c196), read on 2026-10-01. The repository is watched and re-audited when it changes.

Advertisement