Skip to content

feat: add E2E testing bridge with 25 new MCP tools#72

Open
sjennings wants to merge 2 commits intoCoding-Solo:mainfrom
sjennings:main
Open

feat: add E2E testing bridge with 25 new MCP tools#72
sjennings wants to merge 2 commits intoCoding-Solo:mainfrom
sjennings:main

Conversation

@sjennings
Copy link

Summary

  • Adds a WebSocket-based E2E testing bridge that connects the MCP server to running Godot games for live testing
  • Implements 25 new MCP tools across 7 categories: connection management, scene tree inspection, game state queries, input simulation, wait/polling, visual verification, and test orchestration
  • Includes TestBridge.gd autoload for Godot that runs a WebSocket server inside the game, processing JSON-RPC commands in the game's _process() loop

New files

  • src/bridge.ts — WebSocket client + JSON-RPC transport
  • src/e2e-tools.ts — 25 tool schemas and handlers
  • src/scripts/test_bridge.gd — Godot autoload WebSocket server
  • test/fixtures/test-project/ — Test fixture project

Modified files

  • src/index.ts — Wires BridgeClient and E2E tools into GodotServer
  • package.json — Adds ws dependency
  • scripts/build.js — Copies test_bridge.gd to build output
  • CLAUDE.md / README.md — Updated documentation

Safety model

  • evaluate_expression, wait_for_condition, and dangerous methods in call_method require --unsafe flag
  • Singleton names reject path traversal (.., /)
  • find_nodes results capped at 1000
  • All path inputs validated against .. traversal

Tool categories

Category Tools
Connection connect_to_game, disconnect_from_game, get_bridge_status
Orchestration install_test_bridge, run_project_with_bridge
Scene Tree get_tree, find_nodes, get_node_properties, set_node_property, call_method
Game State get_singleton, evaluate_expression, get_performance_metrics
Input send_key, send_mouse_click, send_mouse_drag, send_text
Waiting wait_for_signal, wait_for_condition, wait_for_node, wait_for_property
Visual take_screenshot, get_viewport_info
Scene Control reset_scene, load_scene

Test plan

  • npm run build compiles without errors
  • npm run inspector launches and shows all 40 tools
  • install_test_bridge registers autoload in project.godot
  • run_project_with_bridge launches game and auto-connects
  • Scene tree tools return correct node data from a running game
  • Input simulation tools produce visible effects in-game
  • Wait tools resolve when conditions are met and timeout correctly
  • take_screenshot returns valid base64 PNG
  • Safety-gated tools reject without --unsafe flag
  • Disconnecting cleans up all resources

Scott Jennings added 2 commits February 10, 2026 15:51
WebSocket-based bridge connecting MCP server to running Godot games
via TestBridge.gd autoload. Adds input simulation, scene tree
inspection, game state queries, wait/polling, visual verification,
and test orchestration tools. Safety-gated unsafe operations behind
--unsafe flag.
Document the 25 new E2E testing tools including architecture overview,
tool reference table, safety model, and example prompts.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant