Skip to content
Agentmart
Submit a tool

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

IndexedMITLocal (stdio)★ 6
Write a review

Install

Works with Claude Desktop. Read the repository before you give any tool access to your data.

Download the bundle

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.

We use your email only for this newsletter. Privacy

About

Godot MCP server - Godot 4.x engine control via TCP bridge, STL/GLB/OBJ import, GPU particles, an...

No 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_artifact
  • artifact_get
  • artifact_list
  • artifact_list_backups
  • artifact_search
  • bridge_call_tool
  • describe_scene
  • design_game
  • fleet_exchange_status
  • fleet_ops
  • fleet_worldlabs_get_world
  • godot_capture_viewport
Show 36 more tools
  • godot_docs
  • godot_headless_verify
  • godot_help
  • godot_inspect_resource
  • godot_list_vrm
  • godot_profile
  • godot_read_node
  • godot_read_scene_tree
  • godot_state_digest
  • godot_status
  • godot_validate_meshes
  • itch_latest_version
  • itch_ops
  • itch_push_preview
  • itch_status
  • mcpb_inspect
  • prefab_list
  • prompt_list
  • show_fleet_status_card
  • show_godot_status_card
  • show_itch_status_card
  • show_profile_card
  • show_read_node_card
  • show_state_digest_card
  • show_steam_status_card
  • show_validate_meshes_card
  • show_viewport_card
  • show_workflows_card
  • steam_checklist
  • steam_monetization_guide
  • steam_ops
  • steam_status
  • suggest_lighting
  • vbot_bridge_status
  • vbot_poll_actions
  • workflow_list

Write 58 · Create, change, send or run things.

  • ai_generate_gdscript
  • artifact_backup
  • artifact_register
  • artifact_restore_backup
  • artifact_update
  • bridge_connect
  • build_game
  • compose_game_scene
  • export_and_ship
  • fleet_import_from_exchange
  • fleet_worldlabs_import_mesh
  • fleet_worldlabs_stage_mesh
Show 46 more tools
  • fleet_worldlabs_stage_splat
  • generate_dialogue
  • generate_game_logic
  • generate_game_tests
  • generate_game_worlds
  • godot_add_light
  • godot_animate_streamlines
  • godot_animation
  • godot_create_camera
  • godot_export_release
  • godot_export_web
  • godot_game_time
  • godot_generate_procedural_texture
  • godot_import_glb
  • godot_import_obj
  • godot_import_splat
  • godot_import_stl
  • godot_import_vrm
  • godot_load_velocity_field
  • godot_play_animation
  • godot_set_config
  • godot_set_material
  • godot_simulate_input
  • godot_spawn_particles
  • godot_step_until
  • godot_tilemap
  • install_community_plugin
  • install_godot_addon
  • itch_push
  • mcpb_build
  • particle_cfd
  • prefab_apply
  • prompt_execute
  • scene_setup
  • ship_to_itch
  • ship_to_steam
  • ship_to_steam_prerelease
  • ship_to_steam_release
  • start_bridge
  • steam_stage_build
  • vbot_connect
  • vbot_disconnect
  • vbot_perceive
  • vbot_send_state
  • vbot_subscribe
  • workflow_run

Delete 3 · Delete, drop, revoke or wipe things.

  • artifact_delete
  • godot_scene
  • godot_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 code
  • api.github.com · found in code
  • api.itch.io · found in code
  • api.openai.com · found in code
  • biomejs.dev · found in code
  • docs.godotengine.org · found in code
  • github.com · found in install command, code
  • glama.ai · found in code
  • godotengine.org · found in code
  • itchio.itch.io · found in code
  • openrouter.ai · found in code
  • partner.steamgames.com · found in code
  • schema.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-only

    Generate 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_gdscript

    Generate 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_backup

    Zip-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_delete

    Delete an artifact from the depot. ## Return Format {"success": bool} ## Examples await artifact_delete(artifact_id="abc12345")

  • artifact_getread-only

    Get a single artifact's details by ID. ## Return Format {"success": bool, "artifact": {...}} ## Examples await artifact_get(artifact_id="abc12345")

  • artifact_listread-only

    List 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-only

    List available depot backup archives, newest first. ## Return Format {"success": bool, "backups": [{"name","size","created_at"}], "count": int} ## Examples await artifact_list_backups()

  • artifact_register

    Register 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_backup

    Restore 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-only

    Search 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_update

    Edit 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-only

    Call 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_connect

    Connect to another fleet MCP server via its REST API. ## Return Format {"success": bool, "server": str}

  • build_game

    Build a complete game: design → worlds (fleet stage) → compose → logic → export.

  • compose_game_scene

    Assemble the Godot scene - imports staged Marble GLBs via fleet + bridge.

Show 95 more tools
  • describe_scene

    Generate a natural language description of the current 3D scene.

  • design_gameread-only

    Design a game from a natural-language concept using AI.

  • export_and_ship

    Export the Godot project and optionally ship to itch.io.

  • fleet_exchange_statusread-only

    List fleet exchange depot assets and pipeline readiness.

  • fleet_import_from_exchange

    Import a mesh from the fleet exchange into Godot (requires godot-bridge).

  • fleet_opsread-only

    Fleet 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-only

    Fetch World Labs asset URLs (mesh, splats, panorama) via worldlabs bridge API.

  • fleet_worldlabs_import_mesh

    Download World Labs collider GLB and import into Godot via godot_import_glb bridge.

  • fleet_worldlabs_stage_mesh

    Download Chisel collision GLB to _exchange/models/worldlabs/ (no Godot import).

  • fleet_worldlabs_stage_splat

    Download SPZ splat to exchange for Spark/Unity - not imported to Godot yet.

  • generate_dialogue

    Generate 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_logic

    Generate GDScript files; optionally persist to a Godot project.

  • generate_game_tests

    Generate 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_worlds

    Generate Marble worlds and stage collider GLBs to fleet exchange.

  • godot_add_light

    Add 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_streamlines

    Animate 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_animation

    Read 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-only

    Capture 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_camera

    Create 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_docs

    Fetch 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_release

    Export a Godot sample or custom project for itch.io (Web or Windows). ## Examples await godot_export_release(target="web", game="dodge")

  • godot_export_web

    Export 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_time

    Control 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_texture

    Generate 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-only

    Check 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-only

    Get 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_glb

    Import 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_obj

    Import 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_splat

    Import 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_stl

    Import 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_vrm

    Import 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-only

    Inspect 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-only

    List 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_field

    Load 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_animation

    Play 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-only

    Read 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-only

    Read 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-only

    Read 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_scene

    Manage 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_config

    Write 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_material

    Assign 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 data

    Shut down the godot-mcp server process. ## Return Format {"success": bool, "message": str} ## Examples await godot_shutdown(confirmed=True)

  • godot_simulate_input

    Simulate 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_particles

    Create 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-only

    Read 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-only

    Query 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_until

    Step 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_tilemap

    Read 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-only

    Validate 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_plugin

    Download 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_addon

    Install 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-only

    Query api.itch.io/wharf/latest for the newest build version on a channel.

  • itch_opsread-only

    itch.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_push

    Upload 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-only

    Preview 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-only

    Check Butler install, API key env, and default itch.io slug. ## Return Format {"success": bool, "butler": {...}, "auth": {...}, "defaults": {...}} ## Examples await itch_status()

  • mcpb_build

    Build 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-only

    Inspect the contents of an .mcpb bundle without extracting. ## Return Format {"success": bool, "manifest": {...}} ## Examples await mcpb_inspect(bundle_path="my_scene.mcpb")

  • particle_cfd

    Import CFD velocity data and spawn GPU particles for flow visualization.

  • prefab_apply

    Apply 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-only

    List available prefab templates, optionally filtered by category. ## Return Format {"success": bool, "prefabs": [...]} ## Examples await prefab_list() await prefab_list(category="lighting")

  • prompt_execute

    Execute 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-only

    List available prompt templates. ## Return Format {"success": bool, "prompts": [...]}

  • scene_setup

    Set up a complete 3D scene with lighting, camera, and environment.

  • ship_to_itch

    Export 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_steam

    Export Windows build, stage to exchange, generate VDF, upload via steam-mcp.

  • ship_to_steam_prerelease

    Upload staged build to Steam beta branch via steam-mcp (dry_run default true).

  • ship_to_steam_release

    Upload staged build to Steam default (live) branch via steam-mcp.

  • ship_web_itch

    Export HTML5 build, preview Butler diff, push to itch.io.

  • show_fleet_status_cardread-only

    Show 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-only

    Show 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-only

    Show 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-only

    Show 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-only

    Show 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-only

    Show 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-only

    Show 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-only

    Show 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-only

    Capture 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-only

    Show built-in workflows as a rich Prefab card. ## Return Format ToolResult with PrefabApp structured_content; plain text fallback. ## Examples await show_workflows_card()

  • start_bridge

    Locate 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-only

    Return Steam Direct / release checklist from steam-mcp.

  • steam_monetization_guideread-only

    Pricing and revenue guidance (manual Steamworks steps).

  • steam_opsread-only

    Steam 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_build

    Export Windows build and stage files to fleet exchange for Steam depot upload.

  • steam_statusread-only

    Check steam-mcp connectivity, Steam App/Depot IDs, and steamcmd readiness.

  • suggest_lighting

    Get AI suggestions for improving scene lighting.

  • vbot_bridge_statusread-only

    Check the V-Bot bridge connection status. ## Return Format {"success": bool, "connected": bool, "subscribed_bots": int, "last_error": str | None}

  • vbot_connect

    Connect 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_disconnect

    Disconnect from the V-Bot Mind bridge. ## Return Format {"success": bool, "message": str}

  • vbot_perceive

    Send 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-only

    Poll 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_state

    Send a V-Bot's current position and animation state from Godot to the brain. ## Return Format {"success": bool, "message": str}

  • vbot_subscribe

    Subscribe to V-Bot updates. Receives actions when bots think in the game loop. ## Return Format {"success": bool, "message": str}

  • workflow_listread-only

    List all built-in agentic workflows. ## Return Format {"success": bool, "workflows": [{"name": str, "description": str, "steps": int}]} ## Examples await workflow_list()

  • workflow_run

    Run 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
License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from sandraschi

Cite this page

Godot MCP. Agent Mart. https://agentmart.dev/connectors/sandraschi-godot-mcp (last updated 2026-10-24)