Introduction¶
In DSH, the common approach to having an agent interact with a Godot project is to use a godot-mcp MCP service: an extra protocol layer, an additional Python/Node process, and a separate editor plugin to maintain. On the game side, although there is already a McpInteractionServer listening on 127.0.0.1:9090 for newline-separated JSON, the harness side still needs to communicate via an MCP intermediary.
godot-bridge consolidates this chain into the DSH host plugin: no MCP, no standalone Python service, no editor addon modifications. The host directly spawns the Godot process and communicates with the in-game autoload via a short-lived TCP connection. Tools are registered into the session with the godot_* prefix. Below, we introduce its positioning, capabilities, and installation method.
What It Is¶
godot-bridge is a native DeepSeek Harness plugin released by maintainer Smalldy (GitHub: Smalldy/godot-bridge, current package version 0.1.5, MIT license). It is classified as a workflow plugin.
In one sentence: It launches and drives a running Godot 4.x game within a DSH session. It uses the same in-game TCP interaction service protocol as godot-mcp, but replaces the MCP service with first-class agent tools.
How It Works¶
The game project must have the McpInteractionServer autoload (mcp_interaction_server.gd), which by default listens on 127.0.0.1:9090 and exchanges newline-separated JSON messages. godot-bridge operates within the harness as follows:
godot_run_projectlaunches a debug process withgodot -d --path …, waiting for port 9090 to become ready.godot_command,godot_screenshot,godot_ping, etc., use a one-shotnode -ebridge to connect to TCP, send a single command, read a single response line, and then exit. This adapts to the server’s single-connection, single-command_busysemantics.- Headless editing operations use scripts like
godot --headless --script godot_operations.gd, requiring no active game process.
Spawning uses the harness’s raw subprocess service (not a sandboxed shell), ensuring that Godot can write to paths like user:// without being blocked by the DSH file sandbox.
If the project does not yet have McpInteractionServer, godot_run_project will automatically copy the vendored file to autoload/ and register it in project.godot. Non-Godot projects are unaffected.
Core Tools¶
The README lists each tool alongside its godot-mcp counterpart; here, we categorize the verified capabilities by usage.
Running Game (TCP 9090)¶
| Tool | Function |
|---|---|
godot_run_project |
Launches the project in debug mode, waiting for port 9090 |
godot_stop_project |
Terminates the launched game process (tree-range kill) |
godot_get_debug_output |
Incrementally reads child process stdout/stderr |
godot_command |
Sends arbitrary commands to the interaction service (consolidating about 130 game_* capabilities): get_scene_tree, eval, get/set_property, call_method, click, key_press, screenshot, raycast, serialize_state, ui_*, etc. |
godot_screenshot |
Viewport screenshot, base64 PNG |
godot_ping |
Probes if 9090 is responding; includes installed/latest plugin version info |
Headless & Project Static Operations¶
| Tool | Function |
|---|---|
godot_headless_op |
16 headless static operations (read/modify scene nodes, attach scripts, create resources, save scenes, etc.), no running game required |
godot_validate_script |
Headless GDScript compilation check, returns {valid, errors} |
godot_set_project_setting |
Writes arbitrary key-value pairs to sections in project.godot based on type |
godot_manage_autoloads |
Lists/adds/removes autoload singletons |
godot_manage_input_map |
Lists/adds/removes input actions (uses Godot 4 key codes, fixing the Godot 3 baseline issue in godot-mcp) |
godot_manage_export_presets |
Manages export_presets.cfg |
godot_create_script |
Generates GDScript templates |
godot_create_project |
Scaffolds a project, with optional Godot .NET .csproj |
godot_export_project |
Headless export (--export-release / --export-debug) |
Configuration¶
| Tool | Function |
|---|---|
godot_set_engine_path |
Writes the path to the Godot executable into settings (godotPath in the godot-bridge: section of settings.yaml), hot-reloadable |
Pure file read/write operations are covered by DSH’s native file tools. Items requiring Godot-specific syntax (input mappings, export presets, project.godot types, etc.) are handled by the specialized tools above. For a complete mapping, see COVERAGE.md in the repository.
Requirements¶
- DeepSeek Harness installed (session with host runtime).
- Godot 4.x executable: Priority is tool parameter
godot_path→ settinggodotPath→godotcommand on PATH. Use the full path to the real executable, avoiding version manager shims. nodeon PATH (used for one-shot bridge connections).- The target Godot project must have or be able to auto-install the
McpInteractionServerautoload.
Installation & Enabling¶
The plugin must be installed via the DSH bundle mechanism; do not copy it to ~/.dsh/.agent-presets/... (which cannot resolve @deepseek-ai/dsh-tools).
Recommended one-liner (requires dsh CLI):
dsh plugin --profile web add github:Smalldy/godot-bridge
dsh plugin forwards to pnpm: it installs into the profile’s node_modules and writes tool-godot-bridge into the profile’s dsh.profile.bundles via cordis.patch.yml. web is the default profile for Web applications; no new profile is created. After restarting DSH, sixteen godot_* tools will be visible in sessions under that profile.
Local paths or tarballs are also supported:
dsh plugin --profile web add ./path/to/godot-bridge
Uninstall:
dsh plugin --profile web remove godot-bridge
First, use godot_stop_project to stop the game. After uninstalling and restarting, the tools are removed from the session, but the web profile itself remains unchanged.
Update:
dsh plugin --profile web update godot-bridge
The plugin performs a best-effort comparison with the package.json version on GitHub main upon loading. If an update is available, the system will show a prompt: “godot-bridge update available: installed X, latest Y”. godot_ping also reports plugin_version / latest_version.
For community registration, see awesome-dsh-plugin (topic: dsh-plugin).
Typical Usage¶
1. Specify Godot Path (When godot is Not on PATH)¶
Have the model ask the user and then call godot_set_engine_path, or configure the godotPath in the godot-bridge: section of the Web plugin page / settings.yaml.
2. Launch Project & Check Readiness¶
godot_run_project # project_path points to the Godot project root
godot_ping # Confirm 9090 is responding
3. Query Scene & Interact¶
Send JSON line protocols identical to godot-mcp via godot_command, for example:
{"command": "get_scene_tree", "params": {}, "id": "1"}
Other common commands include get_ui_elements, eval, click, key_press, serialize_state, etc.; refer to the interaction service implementation for specific parameters.
4. Screenshot¶
godot_screenshot directly returns a base64 PNG, equivalent to godot-mcp’s game_screenshot.
5. Headless Scene Modification / Script Validation¶
When the game does not need to be running:
godot_headless_op: Static editing of scenes and resources.godot_validate_script: Compile-checks GDScript.godot_set_project_setting,godot_manage_autoloads,godot_manage_input_map: Modifyproject.godotand related configurations.
6. View Debug Output¶
godot_get_debug_output incrementally fetches child process logs by offset, useful for debugging with godot_run_project.
Suitable Scenarios & Considerations¶
Who Is It For
- Those already using agents in DSH to develop or test Godot 4.x games/tool projects.
- Those looking to remove the
godot-mcpMCP layer while preserving the workflow with the existingMcpInteractionServerand 9090 protocol. - Those needing headless editing of
project.godot, input mappings, and export presets, all within the same set ofgodot_*tools as controlling the running game.
Considerations
- The plugin runs child processes and file operations with the current DSH process permissions. Read the source code and MIT license before installation to ensure it aligns with your security policy.
- Do not use version manager shims for the Godot path; otherwise, spawning or
user://behavior may be abnormal. - Interaction service single connection: Relies on the short-lived bridge design; avoid occupying the same TCP session for extended periods.
- The SkillHub directory page (
skillhub.cn) is a community index and has no official affiliation with DeepSeek /幻方; installation commands are subject to the README anddsh plugin.
Conclusion¶
godot-bridge connects Godot 4.x’s in-game TCP protocol directly to the DSH host, using sixteen native tools to cover the main workflow of godot-mcp, and adds Godot 4-specific capabilities like input mapping. If you are already doing Godot agent workflows in the harness, you can install it via the official bundle command into the web profile for a trial.
- Directory page: https://www.skillhub.cn/plugins/Smalldy/godot-bridge
- GitHub: https://github.com/Smalldy/godot-bridge