This is an HTTP-based MCP server that runs inside the Godot 4.2+ editor as a plugin, letting Claude and other AI assistants create scenes, generate scripts, build UI trees, simulate input, and control play mode through a single execute_code tool plus structured resources for project state and editor context. It defaults to a compact core tool profile to keep token budgets low, exposes optional project-local skill files and AGENTS.md for repository-aware clients, and includes a Godot dock for one-click client configuration, tool exposure control, and update checks. The npm package listed here is a stdio wrapper around that HTTP server for registries that require stdio transport. Reach for this when you want AI-driven Godot workflows that go beyond file editing into live editor automation and runtime validation.
The Most Advanced MCP Server for Godot Editor
Godot Asset Store · 中文 | English
💖 If you find this project useful, please consider giving it a Star. It helps more Godot developers discover it and supports ongoing development.
Funplay MCP for Godot is an MIT-licensed Godot Editor MCP server that lets AI assistants like Claude Code, Cursor, Windsurf, Codex, and VS Code Copilot operate directly inside your running Godot project.
The addon works in standard Godot 4.2+ projects and is also usable in Godot .NET projects. The current implementation is GDScript-based, and the exported script tools are language-aware: GDScript projects see GDScript workflows, .NET projects see C#/.NET workflows, and mixed projects expose both where useful.
Describe your game or tool in one sentence — your AI assistant builds it in Godot through Funplay MCP for Godot’s built-in tools for scene creation, script generation, UI authoring, play-mode validation, input simulation, animation setup, camera control, performance inspection, and editor automation.
"Build a top-down shooter HUD with health, ammo, pause menu, and hit flash feedback"
Your AI assistant handles it through Funplay MCP for Godot: creates the scene structure, generates scripts, builds the Control tree, wires signals, configures animations, and validates the workflow — all from a single prompt.
If you just want to get connected fast, do these three things:
addons/funplay_mcp into your own Godot projectYou can either:
Funplay.GodotMcp.vX.Y.Z.zip from the latest GitHub Release and extract it into your project root,addons/funplay_mcp into your own Godot res://addons/ directory💡 Before you clone or install, a quick ⭐ on GitHub would be greatly appreciated.
In Godot:
The server starts on http://127.0.0.1:8765/ by default.
If that port is already occupied, it automatically picks another free local port and saves it to user://funplay_mcp_settings.cfg.
Local MCP POST requests require the per-project auth token stored in user://funplay_mcp_settings.cfg; the dock writes it into generated stdio client configs automatically.
Authenticated clients can run high-impact editor tools, including execute_code; keep the server enabled only while working with trusted local clients and leave safety checks on unless you intentionally need to override them.
The dock also shows the installed addon version and includes a Check Updates action that opens the latest GitHub Release when a newer version is available.
Use the built-in One-Click MCP Configuration in the Funplay MCP dock first.
Select your target client, click Configure, and the addon writes the recommended MCP config entry for you.
Use Configure + Skills when you also want the addon to generate project-local skill files under res://.funplay/skills/ and an AGENTS.md bridge for AI clients that read repository instructions.
If Godot had to pick a different port, use the endpoint shown in the dock. If you prefer to edit config files manually, use the examples below as fallback references:
{
"mcpServers": {
"funplay": {
"type": "stdio",
"command": "npx",
"args": ["-y", "funplay-godot-mcp@0.9.4"],
"env": {
"FUNPLAY_GODOT_MCP_URL": "http://127.0.0.1:8765/",
"FUNPLAY_GODOT_MCP_TOKEN": "<token from Funplay MCP dock>"
}
}
}
}
{
"mcpServers": {
"funplay": {
"command": "npx",
"args": ["-y", "funplay-godot-mcp@0.9.4"],
"env": {
"FUNPLAY_GODOT_MCP_URL": "http://127.0.0.1:8765/",
"FUNPLAY_GODOT_MCP_TOKEN": "<token from Funplay MCP dock>"
}
}
}
}
{
"servers": {
"funplay": {
"type": "stdio",
"command": "npx",
"args": ["-y", "funplay-godot-mcp@0.9.4"],
"env": {
"FUNPLAY_GODOT_MCP_URL": "http://127.0.0.1:8765/",
"FUNPLAY_GODOT_MCP_TOKEN": "<token from Funplay MCP dock>"
}
}
}
}
[mcp_servers.funplay]
url = "http://127.0.0.1:8765/"
Most clients can connect directly to the addon over HTTP. For clients or registries that prefer stdio packages, this repository also includes an npm-ready wrapper under stdio-wrapper/.
cd stdio-wrapper
npm link
FUNPLAY_GODOT_MCP_URL=http://127.0.0.1:8765/ funplay-godot-mcp
After the wrapper is published to npm, replace npm link with npm install -g funplay-godot-mcp.
Example MCP client entry:
{
"mcpServers": {
"funplay": {
"command": "funplay-godot-mcp",
"env": {
"FUNPLAY_GODOT_MCP_URL": "http://127.0.0.1:8765/"
}
}
}
}
Open your AI client and try a few safe requests first:
get_scene_info and tell me what scene is open."godot://project/context and summarize the current editor state."execute_code to return the active scene name."If those work, the MCP server, resources, and primary execution tool are connected correctly.
Open your AI client and try: "Create a 2D HUD with health bar, score label, and pause button"
http://127.0.0.1:8765/ by default. If the same project already owns that port, the dock attaches to it; otherwise it falls back to another free local port.user://funplay_mcp_settings.cfg.core MCP tool profile to reduce tool-list noise for AI clients. Switch to full in the dock if you want the complete tool surface.execute_code safety toggles.execute_code safety checks are on by default for common process, filesystem, and project-setting mutations. A reviewed call can pass safety_checks=false.execute_code First — The addon is optimized around one high-flexibility GDScript execution tool for rich editor/runtime orchestration, now with default-on safety checks for risky snippetscore exposes a compact high-signal toolset; full exposes a broader editor automation surface.NET project resources when applicable, template resources, and reusable workflow promptsstructuredContent, and node/resource summaries include session instance_id values for follow-up callsserver.json, and release readiness is exposed through MCPThe table below compares this repository with the public behavior and positioning of FunplayAI/funplay-unity-mcp.
| Area | Funplay MCP for Godot | Funplay MCP for Unity |
|---|---|---|
| Engine-side architecture | Embedded Godot Editor addon with built-in HTTP MCP server | Embedded Unity Editor package with built-in HTTP MCP server |
| Extra local prerequisites | Godot addon only for core workflows | Unity package only for core workflows |
| Primary workflow style | execute_code first, then focused helper tools | execute_code first, then focused helper tools |
| Default tool exposure | Compact core profile with optional full expansion | Compact core profile with optional full expansion |
| Built-in context model | Project resources, script error summary, play state, runtime scene tree, logs, prompts, interaction history | Project resources, compile errors, play state, logs, prompts, interaction history |
| UI automation | Deep Godot Control / CanvasLayer workflows | Unity Canvas / UI helpers |
| Positioning | Lightweight, direct, MIT-licensed Godot MCP server for AI-driven editor control | Lightweight, direct, MIT-licensed Unity MCP server for AI-driven editor control |
The current open-source package exposes four high-value capability layers:
execute_code for rich editor/runtime orchestration, with default-on safety checks, optional object-style context helpers, logs, and change tracking metadatascene_review, feature_plan, runtime_debug, script_patch, ui_layout_plan, architecture_advice, performance_advice, network_template, and template_generateFunplay MCP for Godot currently ships with 124 registered tool functions across major workflow groups. The effective exported script tools are filtered by detected project language and per-tool exposure settings:
| Category | Tools |
|---|---|
| Scene | get_scene_info, get_scene_tree, list_scenes, open_scene, save_scene, save_scene_as, create_new_scene, instantiate_scene, create_packed_scene_from_node, get_packed_scene_info |
| Nodes | get_node_info, find_nodes, select_node, create_node, duplicate_node, rename_node, reparent_node, remove_node, set_node_property, set_node_properties, set_transform_2d, set_transform_3d, set_node_script |
| Node Reflection | list_node_properties, list_node_signals, list_node_methods |
| Scripts | create_script, list_scripts, edit_script, patch_script, open_script, validate_script, get_script_errors, request_script_reload; .NET projects also expose get_dotnet_project_info |
| Project Map | map_project, find_usages, plan_script_refactor, apply_script_refactor |
| Project Settings / Input / Autoload | list_project_settings, get_project_setting, set_project_setting, list_input_actions, get_input_action, add_input_action, remove_input_action, add_input_event_to_action, clear_input_events, list_autoloads, set_autoload, remove_autoload |
| Guidance / Capability | funplay_help, list_tool_catalog, get_capability_status, get_editor_protocol_status, get_release_readiness, list_workflow_coverage |
| Runtime Bridge / Undo | install_runtime_bridge, remove_runtime_bridge, get_runtime_bridge_status, get_undo_redo_status, editor_undo, editor_redo |
| Files | read_file, write_file, search_files, list_files, file_exists, delete_file, move_file, copy_file |
| Play / Input | get_play_state, enter_play_mode, play_main_scene, exit_play_mode, simulate_action, simulate_key_event, simulate_mouse_button, simulate_mouse_drag, simulate_input_sequence, get_time_scale, set_time_scale |
| Assertions / Diagnostics | assert_node_exists, assert_node_property, assert_signal_connected, wait_msec, get_performance_snapshot, analyze_scene_complexity, get_console_logs, log_message |
| Animation | create_animation_player, create_animation_clip, add_animation_track, list_animations, play_animation |
| Camera | get_camera_info, set_camera_2d, set_camera_3d |
| Materials | create_material, assign_material |
| UI / Control | create_ui_root, create_control, create_label, create_button, create_panel, create_texture_rect, create_container, set_control_layout, set_control_size_flags, set_control_text, set_control_theme_override, set_control_texture, connect_node_signal |
| Project / Addons | get_project_info, list_project_features, plan_asset_import, get_project_skills_status, generate_project_skills, select_file, list_addons, set_addon_enabled |
| Capture / Execution | capture_editor_view, execute_code |
addons/funplay_mcp/plugin.gd — Godot editor plugin entryaddons/funplay_mcp/core/ — MCP server, tools, resources, prompts, settings, and config writersaddons/funplay_mcp/ui/ — Godot dock UIstdio-wrapper/ — npm stdio bridge for clients that cannot connect to HTTP MCP directlyserver.json — MCP Registry metadata for the stdio wrapperscripts/package_release.py — release artifact builder and package validatorASSET_LIBRARY.md — Godot Asset Library packaging, submission, and update-safety notesCHANGELOG.md — user-facing changesCONTRIBUTING.md — contributor workflowRELEASE_CHECKLIST.md — release processSee CONTRIBUTING.md.
This repository is licensed under MIT.
FUNPLAY_GODOT_MCP_URLOptional Godot MCP HTTP endpoint. Defaults to http://127.0.0.1:8765/.
GODOT_MCP_URLCompatibility endpoint variable used when FUNPLAY_GODOT_MCP_URL is not set.
miapre/html-to-figma-design-system
ie3jp/illustrator-mcp-server
coding-solo/godot-mcp
ivanmurzak/unity-mcp
yctimlin/mcp_excalidraw
figma/mcp-server-guide