Godot MCP
Godot MCP server - Godot 4.x engine control via TCP bridge, STL/GLB/OBJ import, GPU particles, an...
Connector by sandraschi · GitHub account verified by the MCP Registry
Install
Works with Claude Desktop. Read the repository before you give any tool access to your data.
MCP bundle (.mcpb): open it with Claude Desktop.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list, install config and code. Checked Oct 25, 2026.
- Tools
- 48 read · 58 write · 3 delete · 1 not yet classified
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Downloaded binary
Tools by what they do 110
Read from the source code; the running server may list different tools.
Read 48 · Look things up without changing anything.
ai_describe_artifactartifact_getartifact_listartifact_list_backupsartifact_searchbridge_call_tooldescribe_scenedesign_gamefleet_exchange_statusfleet_opsfleet_worldlabs_get_worldgodot_capture_viewport
Show 36 more tools
godot_docsgodot_headless_verifygodot_helpgodot_inspect_resourcegodot_list_vrmgodot_profilegodot_read_nodegodot_read_scene_treegodot_state_digestgodot_statusgodot_validate_meshesitch_latest_versionitch_opsitch_push_previewitch_statusmcpb_inspectprefab_listprompt_listshow_fleet_status_cardshow_godot_status_cardshow_itch_status_cardshow_profile_cardshow_read_node_cardshow_state_digest_cardshow_steam_status_cardshow_validate_meshes_cardshow_viewport_cardshow_workflows_cardsteam_checkliststeam_monetization_guidesteam_opssteam_statussuggest_lightingvbot_bridge_statusvbot_poll_actionsworkflow_list
Write 58 · Create, change, send or run things.
ai_generate_gdscriptartifact_backupartifact_registerartifact_restore_backupartifact_updatebridge_connectbuild_gamecompose_game_sceneexport_and_shipfleet_import_from_exchangefleet_worldlabs_import_meshfleet_worldlabs_stage_mesh
Show 46 more tools
fleet_worldlabs_stage_splatgenerate_dialoguegenerate_game_logicgenerate_game_testsgenerate_game_worldsgodot_add_lightgodot_animate_streamlinesgodot_animationgodot_create_cameragodot_export_releasegodot_export_webgodot_game_timegodot_generate_procedural_texturegodot_import_glbgodot_import_objgodot_import_splatgodot_import_stlgodot_import_vrmgodot_load_velocity_fieldgodot_play_animationgodot_set_configgodot_set_materialgodot_simulate_inputgodot_spawn_particlesgodot_step_untilgodot_tilemapinstall_community_plugininstall_godot_addonitch_pushmcpb_buildparticle_cfdprefab_applyprompt_executescene_setupship_to_itchship_to_steamship_to_steam_prereleaseship_to_steam_releasestart_bridgesteam_stage_buildvbot_connectvbot_disconnectvbot_perceivevbot_send_statevbot_subscribeworkflow_run
Delete 3 · Delete, drop, revoke or wipe things.
artifact_deletegodot_scenegodot_shutdown
Not yet classified 1 · We could not tell from the name and description.
ship_web_itch
Network hosts it talks to 13
api.deepseek.com· found in codeapi.github.com· found in codeapi.itch.io· found in codeapi.openai.com· found in codebiomejs.dev· found in codedocs.godotengine.org· found in codegithub.com· found in install command, codeglama.ai· found in codegodotengine.org· found in codeitchio.itch.io· found in codeopenrouter.ai· found in codepartner.steamgames.com· found in codeschema.tauri.app· found in code
Files it touches
/root/.../root/MeshInstance3D/root/World/Debris/debris_07/tmp/preview.html%APPDATA%\com.sandraschi.pywinauto-mcp\logs\backend-spawn.log- Your home directory (~)
~/.avatarmcp/models~/.avatarmcp/models/Nekomimi-chan.vrm~/.godot-mcp/settings.json- Any path the agent passes to its tools
Tools (110)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
ai_describe_artifactread-onlyGenerate an AI-powered description for an artifact using LLM sampling. Uses connected MCP client's LLM to write rich descriptions. Falls back gracefully if sampling is unavailable. ## Return Format {"success": bool, "description": str} ## Examples await ai_describe_artifact(name="River Rapids", artifact_type="scene", features="turbulent water, foam, rocks")
ai_generate_gdscriptGenerate GDScript code for a Godot node/behavior using LLM sampling. Uses ctx.sample() to generate GDScript from a natural language spec. ## Return Format {"success": bool, "code": str, "language": "gdscript"} ## Examples await ai_generate_gdscript(specification="A player movement script with WASD and jump")
artifact_backupZip-snapshot the depot's files/thumbs/index.json into a timestamped backup archive. Added 2026-09-03 - no backup/restore existed before this (same gap overte-mcp/resonite-mcp had before their own depot backup features were added earlier this session). ## Return Format {"success": bool, "name": str, "size": int} ## Examples await artifact_backup()
artifact_deleteDelete an artifact from the depot. ## Return Format {"success": bool} ## Examples await artifact_delete(artifact_id="abc12345")
artifact_getread-onlyGet a single artifact's details by ID. ## Return Format {"success": bool, "artifact": {...}} ## Examples await artifact_get(artifact_id="abc12345")
artifact_listread-onlyList artifacts in the local depot. Optionally filter by type. ## Return Format {"success": bool, "total": int, "artifacts": [...]} ## Examples await artifact_list() await artifact_list(artifact_type="mesh", limit=10)
artifact_list_backupsread-onlyList available depot backup archives, newest first. ## Return Format {"success": bool, "backups": [{"name","size","created_at"}], "count": int} ## Examples await artifact_list_backups()
artifact_registerRegister a new artifact in the depot, optionally attaching a file. ## Return Format {"success": bool, "artifact": {...}} ## Examples await artifact_register(name="River Scene", artifact_type="scene", tags=["water", "cfd"]) await artifact_register(name="Oak Tree", artifact_type="mesh", source_path="C:/models/oak.glb")
artifact_restore_backupRestore a depot backup archive, OVERWRITING current files/thumbs/index.json (matching names only - does not delete entries the backup doesn't mention). ## Return Format {"success": bool, "count": int} ## Examples await artifact_restore_backup(name="godot-mcp-depot-backup-20260903T000000Z.zip")
artifact_searchread-onlySearch artifacts in the local depot by name, description, or tags. ## Return Format {"success": bool, "total": int, "artifacts": [...]} ## Examples await artifact_search(query="river") await artifact_search(query="particle", artifact_type="particle_system")
artifact_updateEdit an artifact's metadata (name/description/tags/author). The attached file, if any, is untouched - only fields explicitly given are changed. Added 2026-09-03: no metadata-edit tool existed before this, only register+delete. ## Return Format {"success": bool, "artifact": {...}} ## Examples await artifact_update(artifact_id="abc12345", description="Updated river scene")
bridge_call_toolread-onlyCall a tool on a remote fleet MCP server. ## Return Format {"success": bool, "tool": str, "result": {...}} ## Examples await bridge_call_tool(server_url="http://localhost:10993", tool_name="godot_status")
bridge_connectConnect to another fleet MCP server via its REST API. ## Return Format {"success": bool, "server": str}
build_gameBuild a complete game: design → worlds (fleet stage) → compose → logic → export.
compose_game_sceneAssemble the Godot scene - imports staged Marble GLBs via fleet + bridge.
Show 95 more tools
describe_sceneGenerate a natural language description of the current 3D scene.
design_gameread-onlyDesign a game from a natural-language concept using AI.
export_and_shipExport the Godot project and optionally ship to itch.io.
fleet_exchange_statusread-onlyList fleet exchange depot assets and pipeline readiness.
fleet_import_from_exchangeImport a mesh from the fleet exchange into Godot (requires godot-bridge).
fleet_opsread-onlyFleet exchange pipeline - consolidated portmanteau. ## Return Format {"success": bool, ...} ## Examples await fleet_ops(operation="exchange_status") await fleet_ops(operation="import", path="models/scene.glb", name="Imported") await fleet_ops(operation="worldlabs_get", world_id="abc123")
fleet_worldlabs_get_worldread-onlyFetch World Labs asset URLs (mesh, splats, panorama) via worldlabs bridge API.
fleet_worldlabs_import_meshDownload World Labs collider GLB and import into Godot via godot_import_glb bridge.
fleet_worldlabs_stage_meshDownload Chisel collision GLB to _exchange/models/worldlabs/ (no Godot import).
fleet_worldlabs_stage_splatDownload SPZ splat to exchange for Spark/Unity - not imported to Godot yet.
generate_dialogueGenerate dialogue scripts and optional Dialogic timelines from GamePlan narrative. Creates a self-contained DialogueManager.gd from NPC dialogues. If Dialogic plugin is installed (addons/dialogic/), also generates .dtl timeline files for each NPC. ## Return Format {"success": bool, "files": [str], "count": int} ## Examples await generate_dialogue(game_plan_json='...', game_project_path='C:/MyGame')
generate_game_logicGenerate GDScript files; optionally persist to a Godot project.
generate_game_testsGenerate GUT test scripts for generated game logic and optionally run them. Installs GUT plugin if not present, generates test scripts from the game plan's script specs, writes them to ``res://test/unit/``, and runs them via Godot headless CLI. ## Return Format {"success": bool, "tests": {str: {"passed": bool, "assertions": int, ...}}, "summary": str} ## Examples await generate_game_tests(game_plan_json='...', game_project_path='C:/MyGame')
generate_game_worldsGenerate Marble worlds and stage collider GLBs to fleet exchange.
godot_add_lightAdd a dynamic light source to the Godot scene. Supports directional (sun-like parallel rays), ambient (environment fill), and omni (point) light types. ## Return Format {"success": bool, "data": {"created": bool, "name": str, "type": str, "intensity": float}} ## Examples await godot_add_light(light_type="directional", intensity=2.0) await godot_add_light(light_type="omni", name="KeyLight", position_x=0, position_y=3, position_z=5) await godot_add_light(light_type="ambient", intensity=0.3)
godot_animate_streamlinesAnimate GPU particles along a previously loaded velocity field. Adjusts particle emission box to match velocity field bounding box, sets initial velocity range from field vectors, and enables particle emission. ## Return Format {"success": bool, "data": {"animated": bool, "particle_system": str, "velocity_field": str, "speed_multiplier": float, "point_count": int}} ## Examples await godot_animate_streamlines(velocity_field="FlowData", particle_system="CFD_Flow", speed=2.0)
godot_animationRead and edit animation keyframes and tracks on an AnimationPlayer. Query existing animations, inspect their tracks down to individual keyframes, insert or remove keyframes, and change track interpolation modes. ## Return Format {"success": bool, "data": {"node": str, "animation": str, ...}} ## Examples await godot_animation(operation="list_animations", node="AnimationPlayer") await godot_animation(operation="list_tracks", node="AnimationPlayer", animation="walk") await godot_animation(operation="list_keyframes", node="AnimationPlayer", animation="walk", track=0) await godot_animation(opera…
godot_capture_viewportread-onlyCapture the current Godot viewport as a PNG image. Saves a screenshot of the active viewport to disk and returns the path and dimensions. The Godot bridge must be connected. ## Return Format {"success": bool, "data": {"path": str, "width": int, "height": int, "format": "png"}} ## Examples await godot_capture_viewport() await godot_capture_viewport(output_path="C:/captures/scene.png")
godot_create_cameraCreate a Camera3D with orbit controls in the Godot scene. Sets the camera as active (current=true), attaches a GDScript-based orbit controller with mouse drag and scroll-zoom support. ## Return Format {"success": bool, "data": {"created": bool, "name": str, "fov": float, "position": {"x": float, "y": float, "z": float}}} ## Examples await godot_create_camera(name="RenderCam", position_y=10, position_z=15, fov=60)
godot_docsFetch Godot engine documentation as clean markdown. Retrieves class reference pages from docs.godotengine.org, version-matched to the running Godot engine. The documentation is returned as rendered markdown with working anchor links. ## Return Format {"success": bool, "class": str, "version": str, "content": str, "sections": list} ## Examples await godot_docs(query="Node3D") await godot_docs(query="AnimationPlayer", section="methods") await godot_docs(query="TileMapLayer")
godot_export_releaseExport a Godot sample or custom project for itch.io (Web or Windows). ## Examples await godot_export_release(target="web", game="dodge")
godot_export_webExport the current Godot scene to HTML5/WebAssembly. Attempts in-editor export via the GDScript bridge first. Falls back to godot --headless --export-release if the bridge reports templates unavailable. ## Return Format {"success": bool, "data": {"exported": bool, "message": str, "output_path": str}} ## Examples await godot_export_web(output_path="C:/builds/godot-web/index.html")
godot_game_timeControl the game clock for deterministic playtesting. **freeze** - pauses the game loop (``Engine.time_scale = 0``). The bridge keeps running so you can send input, read state, or set up scenarios. **unfreeze** - resumes normal game speed. **step** - advances the game by *frames* frames with real time-scale, then automatically re-freezes. Use after a freeze to tick the game forward deterministically. ## Return Format {"success": bool, "data": {"state": str, "time_scale": float}} ## Examples await godot_game_time(action="freeze") await godot_game_time(action="step", frames=60) await godot_…
godot_generate_procedural_textureGenerate a procedural texture (gradient, noise, checker, solid) in Godot. Creates a runtime texture using Godot's Image API, saves it as PNG, and returns the path. The texture can be used with godot_set_material or as a sprite texture. ## Return Format {"success": bool, "data": {"path": str, "width": int, "height": int, "texture_type": str}} ## Examples await godot_generate_procedural_texture(texture_type="gradient", width=512, height=128, colors=["#ff0000", "#0000ff"]) await godot_generate_procedural_texture(texture_type="noise", width=256, height=256, colors=["#1a1a2e", "#e94560"], freque…
godot_headless_verifyread-onlyCheck whether the Godot engine is running in headless mode. Returns the headless status and a suggested CLI command for headless script execution with godot --headless --script. ## Return Format {"success": bool, "data": {"headless": bool, "script_path": str, "message": str}} ## Examples await godot_headless_verify(script="res://tests/mcp_headless_test.gd")
godot_helpread-onlyGet context-aware help for godot-mcp tools and workflows. Returns markdown with tool categories, example commands, and usage tips. Use ``topic`` to drill into a specific area. ## Return Format {"success": bool, "help": str, "topic": str} ## Examples await godot_help() await godot_help(topic="playtesting") await godot_help(topic="scene")
godot_import_glbImport a GLB/GLTF 3D model into the current Godot scene. Uses Godot 4.0's native GLTFDocument importer to load meshes, materials, and node hierarchy from glTF 2.0 binary (.glb) or text (.gltf) files. This unlocks the blender-mcp → godot-mcp pipeline. ## Return Format {"success": bool, "data": {"imported": bool, "name": str, "total_nodes": int, "mesh_count": int}} ## Examples await godot_import_glb(path="C:/exchange/robot.glb", name="Robot", scale=0.01) await godot_import_glb(path="C:/exchange/scene.gltf")
godot_import_objImport an OBJ 3D model into the current Godot scene. Uses Godot 4.0's ResourceLoader to import Wavefront OBJ files (.obj + .mtl). Supports the freecad-mcp CFD streamline export → godot-mcp pipeline. ## Return Format {"success": bool, "data": {"imported": bool, "name": str}} ## Examples await godot_import_obj(path="C:/exchange/streamlines.obj", name="CFD_Streamlines")
godot_import_splatImport a 3D Gaussian Splatting (.ply or .spz) file into the Godot scene. Parses the splat file (decompressing SPZ if needed), extracts per-splat positions, SH DC colors, and covariance scales, then renders via a custom ``gaussian_splat.gdshader`` on a ``MultiMeshInstance3D``. The shader applies proper billboarded Gaussian falloff with per-splat scale. Supports ``.ply`` (binary 3DGS format) and ``.spz`` (gzip-compressed). Use ``fleet_worldlabs_stage_splat`` to download World Labs splats first. ## Return Format {"success": bool, "data": {"imported": bool, "name": str, "splat_count": int, "sha…
godot_import_stlImport an STL mesh into the current Godot scene as a MeshInstance3D. Reads binary STL vertex/normal data, creates an ArrayMesh, and returns vertex count and AABB extents. Use in cross-repo pipeline with qcad-mcp and freecad-mcp. ## Return Format {"success": bool, "data": {"imported": bool, "name": str, "vertices": int, "aabb": {"size_x": float, "size_y": float, "size_z": float}}} ## Examples await godot_import_stl(path="C:/uploads/part.stl", name="MyPart", scale=0.01)
godot_import_vrmImport a VRM avatar model into the current Godot scene. Copies the VRM file into the project, installs the V-Sekai/godot-vrm addon if missing, and loads it via Godot's ResourceLoader which triggers the VRM addon's glTF extension importer. ## Return Format {"success": bool, "data": {"imported": bool, "name": str}} ## Examples await godot_import_vrm(path="~/.avatarmcp/models/Nekomimi-chan.vrm", name="Miko")
godot_inspect_resourceread-onlyInspect a resource file loaded in the Godot engine. Type-aware inspection for: - **SpriteFrames**: animation names, frame counts, speed, loop - **TileSet**: source count, source IDs, tile counts - **Material** (StandardMaterial3D): albedo, roughness, metallic, emission - **ShaderMaterial**: shader path, parameter list with values - **Texture2D**: width, height, format, mipmap status - **Generic**: property list for any other resource type ## Return Format {"success": bool, "data": {"resource": {"path": str, "type": str, ...}}} ## Examples await godot_inspect_resource(path="res://characters/…
godot_list_vrmread-onlyList available VRM models in the shared avatar depot. ## Return Format {"success": bool, "data": {"models": list[dict], "depot_path": str}} ## Examples await godot_list_vrm()
godot_load_velocity_fieldLoad a CSV velocity field dataset into the Godot scene. Parses CFD/FluidX3D-style CSV with position and vector columns. Stores points and vectors as node metadata for downstream particle animation. ## Return Format {"success": bool, "data": {"loaded": bool, "name": str, "point_count": int, "bbox": {"min_x": float, ..., "max_z": float}}} ## Examples await godot_load_velocity_field(csv_path="C:/data/velocity_field.csv", name="FlowData")
godot_play_animationPlay or list animations on an imported GLB character via AnimationPlayer. Use after godot_import_glb with a GLB that includes baked animation tracks (typical path: blender-mcp VMD bake -> GLB export -> godot_import_glb). ## Return Format Playing: {"success": bool, "data": {"playing": true, "animation": str, "available_animations": list}} Listing: {"success": bool, "data": {"listed": true, "animations": list}} ## Examples await godot_play_animation(root_name="Dancer", animation="") await godot_play_animation(root_name="Dancer", animation="dance_01", loop=True)
godot_profileread-onlyRead Godot performance metrics and detect frame spikes. Snapshots read 14 metrics from Godot's ``Performance`` singleton: FPS, process time, physics time, memory (static/dynamic), object/node/orphan counts, render draw calls/primitives/video memory, physics active objects/collisions, audio latency. Enable auto-sampling to record a rolling history of 300 frames, then use ``history`` to detect anomalous spikes (>2 stddev from the window mean). ## Return Format {"success": bool, "data": {"snapshot": dict, "enabled": bool, "spikes": list}} ## Examples await godot_profile(operation="snapshot") …
godot_read_noderead-onlyRead properties of a single node by path or name. Returns effective properties (position, rotation, scale, velocity, visible, current_animation) and child list. Lightweight alternative to read_scene_tree when you only need one node. If the node defines ``_mcp_state()``, that takes priority over auto-collected properties. ## Return Format {"success": bool, "data": {"node": {"name": str, "type": str, "path": str, ...}}} ## Examples await godot_read_node(node="Player") await godot_read_node(node="World/Camera3D")
godot_read_scene_treeread-onlyRead the full Godot scene tree as a nested JSON structure. Returns the root node with all children recursively, showing name, type, and path for each node in the tree. ## Return Format {"success": bool, "data": {"scene_tree": {"name": str, "type": str, "path": str, "children": [...]}, "node_count": int}} ## Examples await godot_read_scene_tree()
godot_sceneManage the Godot scene tree: add, remove, modify, animate nodes, spawn a test fixture, or save the scene. Portmanteau for 7 bridge actions: add_node, remove_node, modify_node, save_scene, animate_node, stop_animation, fixture_spawn (the last three backported 2026-09-03 from overte-mcp/resonite-mcp/unity3d-mcp's identical features). ## Return Format {"success": bool, "data": {...}} ## Examples await godot_scene(operation="add_node", parent=".", node_type="Camera3D", name="GameCam") await godot_scene(operation="remove_node", name="OldNode") await godot_scene(operation="modify_node", node_path…
godot_set_configWrite a setting to the project.godot configuration file. Modifies the res://project.godot INI-style file via ConfigFile API. ## Return Format {"success": bool, "data": {"updated": bool, "section": str, "key": str, "value": str}} ## Examples await godot_set_config(section="application", key="config/name", value="My CFD Project") await godot_set_config(section="rendering", key="quality/driver/driver_name", value="GLES3")
godot_set_materialAssign a StandardMaterial3D (PBR) to a mesh node in the Godot scene. Sets albedo color and roughness. The node must already exist in the scene tree. ## Return Format {"success": bool, "data": {"set": bool, "node": str, "color": str, "roughness": float}} ## Examples await godot_set_material(node="STL_Mesh", color="#4488ff", roughness=0.3)
godot_shutdowncan change or delete dataShut down the godot-mcp server process. ## Return Format {"success": bool, "message": str} ## Examples await godot_shutdown(confirmed=True)
godot_simulate_inputSimulate input in the Godot engine - keyboard, action, joypad, mouse, and text. Dispatches each action dict by its key signature. Legacy ``{"key": ...}`` entries use ``InputEventKey`` with optional hold-timed release. New formats use ``Input.action_press`` (analog actions), ``InputEventJoypadMotion`` / ``InputEventJoypadButton``, ``InputEventMouseMotion``, ``InputEventMouseButton``, and per-character ``InputEventKey`` (text). ## Return Format {"success": bool, "data": {"actions_processed": int, "results": [...]}} ## Examples # Legacy key press with hold await godot_simulate_input(actions=[{…
godot_spawn_particlesCreate a GPUParticles3D system in the Godot scene. Sets up a particle system with configurable emission box, count, and draw pass sphere mesh. Use after godot_load_velocity_field for CFD visualisation. ## Return Format {"success": bool, "data": {"spawned": bool, "name": str, "count": int, "particle_system": str}} ## Examples await godot_spawn_particles(count=5000, name="CFD_Flow", spread_x=10, spread_y=10, spread_z=10)
godot_state_digestread-onlyRead structured runtime state from the game scene. Two modes: - **Watch group** (omit ``node_names``): returns state for every node in the ``mcp_watch`` group. Nodes in this group can define a ``_mcp_state()`` method for custom state, or fall back to automatic property collection (position, rotation, scale, velocity, visible, current_animation). - **Named lookup** (provide ``node_names``): finds each node by name anywhere in the tree and returns its state, regardless of watch group membership. Cheaper than ``read_scene_tree`` - returns structured JSON without full hierarchy. ## Retu…
godot_statusread-onlyQuery the Godot engine for version, scene root node count, and current FPS. Calls the GDScript bridge over TCP to read live engine state. ## Return Format {"success": bool, "data": {"godot_version": str, "node_count": int, "fps": float, "bridge_connected": bool}} ## Examples await godot_status()
godot_step_untilStep the game frame-by-frame until a GDScript expression becomes true. Freeze the clock first with ``godot_game_time(action="freeze")``, then call this to advance one frame at a time until the condition is met. The clock re-freezes automatically when the condition triggers (or on timeout). The ``timeout_frames`` param prevents runaway conditions. The condition expression runs in the context of the scene root, so ``get_node("Player")`` resolves relative to the root of the active scene. ## Return Format {"success": bool, "data": {"condition_met": bool, "frames_elapsed": int, "timed_out": bool…
godot_tilemapRead or edit TileMapLayer and GridMap cells. For TileMapLayer: reads cell source IDs, atlas coordinates, and alternative tiles. For GridMap: reads cell item IDs and orientations. The ``set_cell`` operation writes cells that would otherwise be base64-encoded in the ``.tscn`` file - this is the only practical way for agents to edit tilemap data. ## Return Format {"success": bool, "data": {"node": str, "type": str, "cells": [...], "cell_count": int}} ## Examples await godot_tilemap(operation="read", node="GroundLayer") await godot_tilemap(operation="set_cell", node="GroundLayer", cells=[{"x": …
godot_validate_meshesread-onlyValidate all MeshInstance3D meshes in the scene for geometric corruption. Checks each mesh surface for: - **NaN/inf values** in vertex positions (segfault risk at render time) - **Zero-length normals** (causes flat shading on affected faces) - **Degenerate triangles** (zero-area faces from collapsed geometry) - **Empty surface arrays** (missing vertex data) Catches silently corrupt procedural mesh data that masquerades as lighting bugs or invisible geometry - the kind of issue that wastes hours of debugging because there's no visible error. ## Return Format {"success": bool, "data": {"total…
install_community_pluginDownload and install a community Godot plugin from GitHub into the project. Delegates to the module-level install_community_plugin(). See docs/godot-ecosystem.md for the full plugin catalog. ## Return Format {"success": bool, "plugin": str, "addon_path": str, "message": str} ## Examples install_community_plugin(plugin_name="dialogic", project_path="C:/MyGame") install_community_plugin(plugin_name="gut", project_path="C:/MyGame")
install_godot_addonInstall the Godot MCP bridge addon into a Godot project. Copies mcp_bridge.gd and creates plugin.cfg in the project's addons/mcp_bridge/ directory. The addon must be registered as an Autoload in Godot (Project > Project Settings > Autoload). ## Return Format {"success": bool, "message": str, "addon_path": str} ## Examples install_godot_addon(project_path="C:/MyGodotProject")
itch_latest_versionread-onlyQuery api.itch.io/wharf/latest for the newest build version on a channel.
itch_opsread-onlyitch.io publishing - consolidated portmanteau for Butler operations. ## Return Format {"success": bool, ...} ## Examples await itch_ops(operation="status") await itch_ops(operation="export", target="web", game="dodge") await itch_ops(operation="push", upload_dir="build/dodge/web", itch_target="user/game") await itch_ops(operation="ship", target="web", game="dodge", itch_target="user/game")
itch_pushUpload a build directory to itch.io via Butler push. ## Examples await itch_push(upload_dir="...", itch_target="you/my-game", channel="html")
itch_push_previewread-onlyPreview Butler push diff (NEW/MODIFIED/DELETED) before uploading. ## Examples await itch_push_preview(upload_dir="D:/Dev/repos/godot-mcp/build/little-game/dodge/web")
itch_statusread-onlyCheck Butler install, API key env, and default itch.io slug. ## Return Format {"success": bool, "butler": {...}, "auth": {...}, "defaults": {...}} ## Examples await itch_status()
mcpb_buildBuild an MCPB bundle from a tool sequence. This creates a portable .mcpb file. ## Return Format {"success": bool, "path": str, "manifest": {...}} ## Examples await mcpb_build(name="My Scene", description="A test scene", tool_sequence=[{"tool": "godot_create_camera", "params": {}}])
mcpb_inspectread-onlyInspect the contents of an .mcpb bundle without extracting. ## Return Format {"success": bool, "manifest": {...}} ## Examples await mcpb_inspect(bundle_path="my_scene.mcpb")
particle_cfdImport CFD velocity data and spawn GPU particles for flow visualization.
prefab_applyApply a prefab template, executing its tool sequence with given parameters. ## Return Format {"success": bool, "prefab": str, "results": [...]} ## Examples await prefab_apply(prefab_id="standard_lighting", params={"intensity": 2.0})
prefab_listread-onlyList available prefab templates, optionally filtered by category. ## Return Format {"success": bool, "prefabs": [...]} ## Examples await prefab_list() await prefab_list(category="lighting")
prompt_executeExecute a prompt template with given parameters and return the LLM response. Uses ctx.sample() for the LLM call. ## Return Format {"success": bool, "prompt": str, "response": str}
prompt_listread-onlyList available prompt templates. ## Return Format {"success": bool, "prompts": [...]}
scene_setupSet up a complete 3D scene with lighting, camera, and environment.
ship_to_itchExport Godot build, optionally preview and push to itch.io in one flow. ## Examples await ship_to_itch(target="web", game="dodge", itch_target="you/my-game", channel="html")
ship_to_steamExport Windows build, stage to exchange, generate VDF, upload via steam-mcp.
ship_to_steam_prereleaseUpload staged build to Steam beta branch via steam-mcp (dry_run default true).
ship_to_steam_releaseUpload staged build to Steam default (live) branch via steam-mcp.
ship_web_itchExport HTML5 build, preview Butler diff, push to itch.io.
show_fleet_status_cardread-onlyShow fleet exchange depot status as a rich Prefab card. ## Return Format ToolResult with PrefabApp structured_content; plain text fallback. ## Examples await show_fleet_status_card()
show_godot_status_cardread-onlyShow Godot engine status as a rich Prefab card. ## Return Format ToolResult with PrefabApp structured_content; plain text fallback. ## Examples await show_godot_status_card()
show_itch_status_cardread-onlyShow itch.io/Butler publishing status as a rich Prefab card. ## Return Format ToolResult with PrefabApp structured_content; plain text fallback. ## Examples await show_itch_status_card()
show_profile_cardread-onlyShow Godot performance metrics as a rich Prefab card. ## Return Format ToolResult with PrefabApp structured_content; plain text fallback. ## Examples await show_profile_card()
show_read_node_cardread-onlyShow a single node's properties as a rich Prefab card. ## Return Format ToolResult with PrefabApp structured_content; plain text fallback. ## Examples await show_read_node_card(node="Player")
show_state_digest_cardread-onlyShow structured game state as a rich Prefab card. ## Return Format ToolResult with PrefabApp structured_content; plain text fallback. ## Examples await show_state_digest_card() await show_state_digest_card(node_names=["Player"])
show_steam_status_cardread-onlyShow Steam publishing readiness as a rich Prefab card. ## Return Format ToolResult with PrefabApp structured_content; plain text fallback. ## Examples await show_steam_status_card()
show_validate_meshes_cardread-onlyShow mesh validation results as a rich Prefab card. ## Return Format ToolResult with PrefabApp structured_content; plain text fallback. ## Examples await show_validate_meshes_card()
show_viewport_cardread-onlyCapture and show the Godot viewport as a Prefab card. Requires the Godot bridge to be connected. Falls back to a hint if the bridge is not running. ## Return Format ToolResult with PrefabApp structured_content; plain text fallback. ## Examples await show_viewport_card()
show_workflows_cardread-onlyShow built-in workflows as a rich Prefab card. ## Return Format ToolResult with PrefabApp structured_content; plain text fallback. ## Examples await show_workflows_card()
start_bridgeLocate Godot and launch it headless with the MCP bridge addon. Finds godot.exe via GODOT_PATH, PATH, or common install dirs, then starts it with ``--headless`` and the bridge project. Call ``godot_status`` after ~5s to verify the bridge is connected. ## Return Format {"success": bool, "pid": int, "godot": str, "project": str, "log": str, "message": str} ## Examples await start_bridge() await start_bridge(project_root="C:/MyGame")
steam_checklistread-onlyReturn Steam Direct / release checklist from steam-mcp.
steam_monetization_guideread-onlyPricing and revenue guidance (manual Steamworks steps).
steam_opsread-onlySteam publishing via steam-mcp - consolidated portmanteau. ## Return Format {"success": bool, ...} ## Examples await steam_ops(operation="status") await steam_ops(operation="stage", game="dodge") await steam_ops(operation="prerelease", dry_run=True) await steam_ops(operation="ship", game="dodge", phase="release", dry_run=True)
steam_stage_buildExport Windows build and stage files to fleet exchange for Steam depot upload.
steam_statusread-onlyCheck steam-mcp connectivity, Steam App/Depot IDs, and steamcmd readiness.
suggest_lightingGet AI suggestions for improving scene lighting.
vbot_bridge_statusread-onlyCheck the V-Bot bridge connection status. ## Return Format {"success": bool, "connected": bool, "subscribed_bots": int, "last_error": str | None}
vbot_connectConnect to the V-Bot Mind WebSocket bridge for autonomous NPC behavior. Opens a WebSocket to vbot-mind-mcp's engine bridge (port 11080). Once connected, V-Bots can perceive the Godot scene and send actions. ## Return Format {"success": bool, "message": str, "data": {"connected": bool}} ## Examples vbot_connect() vbot_connect(url="ws://127.0.0.1:11080")
vbot_disconnectDisconnect from the V-Bot Mind bridge. ## Return Format {"success": bool, "message": str}
vbot_perceiveSend perception data from the Godot scene to a V-Bot. Feeds the V-Bot's brain with what it sees in the world. The bot will incorporate this into its next think cycle. ## Return Format {"success": bool, "message": str, "data": {"bot_id": str}}
vbot_poll_actionsread-onlyPoll the V-Bot bridge for pending actions from bots. Call this in a loop in the Godot game loop to receive bot actions (MOVE, SPEAK, INTERACT, IDLE, FLEE) and apply them to the scene. ## Return Format {"success": bool, "actions": [{"bot_id": str, "type": str, ...}]} ## Examples vbot_poll_actions() vbot_poll_actions(timeout=0.5)
vbot_send_stateSend a V-Bot's current position and animation state from Godot to the brain. ## Return Format {"success": bool, "message": str}
vbot_subscribeSubscribe to V-Bot updates. Receives actions when bots think in the game loop. ## Return Format {"success": bool, "message": str}
workflow_listread-onlyList all built-in agentic workflows. ## Return Format {"success": bool, "workflows": [{"name": str, "description": str, "steps": int}]} ## Examples await workflow_list()
workflow_runRun a built-in agentic workflow. Executes a predefined multi-step workflow, injecting context variables. ## Return Format {"success": bool, "workflow": str, "steps_completed": int, "results": [...]} ## Examples await workflow_run(workflow_name="scene_setup") await workflow_run(workflow_name="particle_cfd", csv_path="C:/data/flow.csv")
Signals
- Stars
- 6
- Forks
- 1
- Open issues
- 0
- Last commit
- Oct 24, 2026 (5 days ago)
- Last release
- Aug 28, 2026 (2 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- Registry name
io.github.sandraschi/godot-mcp- Version
- 0.5.0-beta.1
- Auth
- No auth
- Packages
- mcpb https://github.com/sandraschi/godot-mcp/releases/download/v0.5.0-beta.1/godot-mcp-v0.5.0-beta.1.mcpb
- License
- MIT
- Repository
- github.com/sandraschi/godot-mcp
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
More from sandraschi
- 0.643score
Qcad MCP
sandraschi
QCAD 2D CAD automation: DXF/DWG floor plans to SVG and STL, via MCP tools and REST
ConnectorAFreshness: ALocal★ 17Claude Desktop - 0.634score
Resonite MCP
sandraschi
Resonite social VR platform MCP server for natural language control of avatars, worlds, and Proto...
ConnectorAFreshness: ALocal★ 10Claude Desktop - 0.628score
Mixx Dj MCP
sandraschi
FastMCP server for Mixxx DJ software control via OSC protocol
ConnectorAFreshness: ALocal★ 7Claude Desktop - 0.619score
Grandorgue MCP
sandraschi
GrandOrgue pipe organ simulator MCP server - MIDI bridge, organ control, sample set management, m...
ConnectorAFreshness: ALocal★ 4Claude Desktop - 0.616score
Yahboom MCP
sandraschi
SOTA 2026 Yahboom Raspbot v2 ROS 2 MCP Server
ConnectorAFreshness: ALocal★ 4Claude Desktop - 0.613score
Leanforge MCP
sandraschi
Lean 4 theorem prover MCP: automated proof search, mathlib integration, job management
ConnectorAFreshness: ALocal★ 3Claude Desktop
Cite this page
Godot MCP. Agent Mart. https://agentmart.dev/connectors/sandraschi-godot-mcp (last updated 2026-10-24)