Pure-Python FastMCP server for Godot 4 — 28 headless & animation tools. Runs via uvx.
A zero Node.js Model Context Protocol server for Godot 4 — translated from
Coding-Solo/godot-mcp and youichi-uda/godot-mcp-pro into pure Python using
the official FastMCP framework. Runs with ultra-low RAM via uvx.
You can invoke this server over standard I/O (stdio) from anywhere on your machine instantly using uvx without manually cloning files or configuring virtual environments:
# Run globally via uvx from PyPI (Bypasses local setup completely)
GODOT_PATH=/path/to/godot4 uvx --from godot-mcp-uvx godot-mcp
# Local development installation (For active contributors)
git clone https://github.com/jxlee007/godot_mcp
cd godot_mcp
uv tool install --editable .
Add this structural configuration block straight into your global client matrix environment profile (e.g., ~/.gemini/antigravity-cli/settings.json or Claude / Cline settings):
{
"mcpServers": {
"godot_render": {
"command": "uvx",
"args": [
"--from",
"godot-mcp-uvx",
"godot-mcp"
],
"env": {
"GODOT_PATH": "/path/to/godot4",
"DEBUG": "false"
}
}
}
}
| Variable | Description |
|---|---|
GODOT_PATH | Path to the Godot 4 executable (auto-detected if unset) |
DEBUG | "true" enables verbose stderr logging |
| Tool | Description |
|---|---|
get_godot_version | Return installed Godot version |
launch_editor | Open Godot editor for a project |
run_project | Run project in debug mode, capture output |
get_debug_output | Read stdout/stderr from running project |
stop_project | Kill running project, return final output |
list_projects | Find Godot projects in a directory |
get_project_info | Metadata, file counts, version |
create_scene | Create a new .tscn file via GDScript |
add_node | Add a node to an existing scene |
load_sprite | Load texture onto Sprite2D/TextureRect |
export_mesh_library | Export .tscn as MeshLibrary .res |
save_scene | Save / save-as a scene file |
get_uid | Get UID for a Godot 4.4+ resource |
update_project_uids | Resave all resources to regenerate UIDs |
| Tool | Description |
|---|---|
quantize_animation_keyframes | Round timestamps to fixed fps increments (12/24 fps anime look) |
set_animation_interpolation_mode | Bulk-swap easing: linear, cubic, nearest/stepped |
stitch_animation_library | Merge external .glb/.tres clips into master AnimationLibrary |
generate_track_filter | Generate AnimationNodeBlendFilter for upper/lower body isolation |
| Tool | Description |
|---|---|
generate_state_machine | Inject AnimationNodeStateMachine into a .tscn file |
compile_state_transitions | Write transition arrows with conditions |
calculate_blend_space_2d | Generate 2D blend space for directional locomotion |
| Tool | Description |
|---|---|
generate_bezier_camera_path | Catmull-Rom bezier Path3D + PathFollow3D + Camera3D with tension control |
inject_lookat_tracking | Generate LookAt tracking GDScript for Camera3D |
build_camera_switcher_timeline | Write Animation that switches Camera3D.current at timestamps |
| Tool | Description |
|---|---|
batch_shader_uniforms | Bulk-override shader_parameter/* in all .tres files |
remap_texture_channels | Wire textures into material property slots |
| Tool | Description |
|---|---|
toggle_movie_maker | Edit project.godot to enable/disable Movie Maker mode |
run_headless_diagnostics | Validate imports, UIDs, shader entry points via Godot CLI |
src/godot_mcp/
├── __init__.py
├── server.py # FastMCP app — all 28 tools
└── scripts/
└── godot_operations.gd # Bundled GDScript engine (preserved untouched)
Two operation modes:
godot_operations.gd headlessly via subprocess.run().tscn, .tres, project.godot files as plain text using Python stdlib re onlyGODOT_PATH or ensure it is on $PATH)uv or pipMIT
Source-derived launch command. Check the maintainer’s required arguments and credentials before running:
uvx godot-mcp-uvxMerge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.
{
"mcpServers": {
"io-github-jxlee007-godot-mcp": {
"command": "uvx",
"args": [
"godot-mcp-uvx"
]
}
}
}Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.
Claude Desktop setup referencegodot-mcp-uvxpypiGodot MCP works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.
~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.~/.cursor/mcp.jsonRestart Cursor for changes to take effect..vscode/mcp.jsonReload VS Code window for changes to take effect.~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect..mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.