gdd_add_playersLABSCO SUMMARY
Parallel devices with real input, not synthetic clicks.
Two things separate it from a scripted headless browser. Several isolated instances run at once with different device profiles, so "test the signup on three phones and a desktop" is one instruction rather than four runs. And the input path is deliberate — one device-appropriate event per tap instead of both touch and mouse, trusted keystrokes so autocomplete and masks behave, key codes following the emulated layout. gdd_get_manual is the tell: the agent reads the manual itself rather than you pasting usage into the prompt.
What it is
A local browser farm exposed over MCP. Ask for three iPhones and a desktop and you get four isolated Chromium instances, each with its own profile, cookies, device emulation, geolocation and network conditions, all addressable by player number from the same conversation. The headless server is the MCP backend; a separate desktop app adds a live grid of thumbnails you can click into and take over by hand.
What you get
- N browsers added with a device preset, removed individually, and listed with their current state —
gdd_add_players,gdd_remove_player,gdd_list_windows - Navigation with a real wait rather than a sleep —
gdd_navigate,gdd_wait,gdd_reload,gdd_back,gdd_forward - Input that behaves like a person's: a single device-appropriate event per tap, trusted keystrokes through CDP so masks and maxlength behave normally, physical key codes following the emulated layout, and an optional humanised cursor path —
gdd_tap,gdd_type,gdd_press,gdd_hover,gdd_swipe,gdd_drag,gdd_scroll,gdd_select,gdd_dialog - Content read back and screenshots captured at CSS pixel resolution —
gdd_read,gdd_read_all,gdd_screenshot - Emulation changed at runtime: device preset, viewport, geolocation with timezone and locale, network conditions, language, and response headers — including stripping X-Frame-Options and CSP to allow framing —
gdd_set_device,gdd_set_viewport,gdd_set_location,gdd_set_network,gdd_set_language,gdd_set_headers - Diagnostics per browser: state, console output with uncaught exceptions, network requests with timing and status, push notifications, and performance metrics —
gdd_get_state,gdd_get_console,gdd_get_network,gdd_get_notifications,gdd_get_performance,gdd_clear_logs - Auto-registration and login with generated credentials, and arbitrary JavaScript execution —
gdd_quick_auth,gdd_execute_js - Storage and cookies read, written and cleared —
gdd_storage,gdd_cookies - The full manual served to the agent so it can teach itself, plus in-place updates —
gdd_get_manual,gdd_check_update,gdd_update
Requirements
Runs on your own machine and needs no account. Download the headless server for Linux, macOS ARM, macOS Intel or Windows, or run docker run -p 9700:9700 ghcr.io/cap-of-tea/gdd. Connect over HTTP by adding {"url": "http://localhost:9700/mcp"} to .mcp.json — no command, no path. Claude Desktop users can open the .mcpb file from Releases instead and skip the config entirely. The server runs on port 9700 and the desktop app on 9800, so both can run side by side. The desktop app needs WebView2 on Windows. The licence is free for personal use.
Setup effort
One command — curl -sL https://github.com/Cap-of-tea/GDD/releases/latest/download/GDD-Server-Linux.tar.gz | tar xz && chmod +x GDD.Headless && ./GDD.Headless
USE CASES
Testing a flow on several devices at once
Add a few phones and a desktop, navigate them all to your app, and run the same interaction across every instance in parallel.
Finding out why a page misbehaves for one user and not another
Read that browser's console, its network requests with timing and status, and its performance metrics, without touching the others.
Checking what a visitor from somewhere else sees
Set geolocation, timezone, locale and language on one instance and reload, rather than reasoning about what should happen.
Filling a form the way a person would
Type with trusted keystrokes so masks, autocomplete and length limits behave as they do for a real user, with humanised timing if the page watches for it.
Testing a signed-in experience without keeping test accounts
Auto-register and log in with generated credentials, then inspect the storage and cookies the session produced.
Working on a slow connection
Set the network conditions to 3G or offline for one instance and watch what the page does instead of guessing.
39 tools
Listed in project docs. Your client may show a different list.
gdd_remove_playergdd_list_windowsgdd_navigategdd_waitgdd_reloadgdd_backgdd_forwardgdd_tapgdd_swipegdd_draggdd_scrollgdd_typegdd_pressgdd_hovergdd_selectgdd_dialoggdd_readgdd_read_allgdd_screenshotgdd_set_devicegdd_set_viewportgdd_set_locationgdd_set_networkgdd_set_languagegdd_set_headersgdd_get_stategdd_get_consolegdd_get_networkgdd_get_notificationsgdd_get_performancegdd_clear_logsgdd_quick_authgdd_execute_jsgdd_storagegdd_cookiesgdd_get_manualgdd_check_updategdd_updateBEFORE YOU INSTALL
What to know first
Tools you get
39 tools named in the project's documentation.
INSTALLATION
Connect your client
Server setup
Setup
Pick an edition: Server (headless MCP backend, port 9700) or Desktop app (GUI video wall, port 9800) — they can run side by side
Download the platform archive from the latest release, e.g. GDD-Server-Linux.tar.gz / GDD-Server-macOS-ARM.tar.gz / GDD-Server-Windows.zip
Run it: Linux chmod +x GDD.Headless && ./GDD.Headless; macOS bash Scripts/setup-macos.sh && ./GDD.Headless; Windows .\GDD.Headless.exe
Alternative — Docker:
docker run -p 9700:9700 ghcr.io/cap-of-tea/gddAlternative — Claude Desktop: download the platform .mcpb file and open it; it installs as a one-click desktop extension with no manual config
Add the mcpServers block to .mcp.json (Claude Code / Cursor) or the servers form to .vscode/mcp.json (VS Code-family IDEs), then restart the AI client — config changes are only picked up on restart
First launch downloads Chromium (~80 MB); if the AI client times out, start GDD manually first and then reconnect
Or install the published package
curl -sL https://github.com/Cap-of-tea/GDD/releases/latest/download/GDD-Server-Linux.tar.gz | tar xz && chmod +x GDD.Headless && ./GDD.HeadlessMCP Clients
Claude Code, Other MCP clients
{
"mcpServers": {
"gdd": {
"type": "http",
"url": "http://localhost:9700/mcp"
}
}
}Cursor
{
"mcpServers": {
"gdd": {
"url": "http://localhost:9700/mcp"
}
}
}VS Code
{
"servers": {
"gdd": {
"type": "http",
"url": "http://localhost:9700/mcp"
}
}
}Windsurf
{
"mcpServers": {
"gdd": {
"type": "http",
"serverUrl": "http://localhost:9700/mcp"
}
}
}Claude Desktop
Open the .mcpb file — installs as desktop extension