bg3-steam-launcher

Launch Baldur's Gate 3 through Steam on macOS and load saved games using macos-automator and peekaboo MCP servers. Designed for testing bg3se-macos (Script Extender) development. Use when: (1) launching BG3 from Steam, (2) loading a BG3 saved game, (3) testing SE mod injection, (4) user asks to "start BG3", "load my BG3 save", "play Baldur's Gate", "test the script extender". Requires macos-automator and peekaboo MCP servers installed with accessibility permissions.

$ Instalar

git clone https://github.com/tdimino/bg3se-macos /tmp/bg3se-macos && cp -r /tmp/bg3se-macos/tools/automation/skills/bg3-steam-launcher ~/.claude/skills/bg3se-macos

// tip: Run this command in your terminal to install the skill


name: bg3-steam-launcher description: | Launch Baldur's Gate 3 through Steam on macOS and load saved games using macos-automator and peekaboo MCP servers. Designed for testing bg3se-macos (Script Extender) development. Use when: (1) launching BG3 from Steam, (2) loading a BG3 saved game, (3) testing SE mod injection, (4) user asks to "start BG3", "load my BG3 save", "play Baldur's Gate", "test the script extender". Requires macos-automator and peekaboo MCP servers installed with accessibility permissions.

BG3 Steam Launcher

Automate launching Baldur's Gate 3 via Steam and loading saved games.

MCP Servers Used:

  • macos-automator - AppleScript execution for UI automation
  • peekaboo - Fast screenshots and AI-powered visual analysis

Prerequisites

claude mcp add macos-automator -- npx -y @steipete/macos-automator-mcp@latest
claude mcp add peekaboo -- npx -y @steipete/peekaboo-mcp@beta

Grant accessibility permissions to osascript in System Preferences → Security → Accessibility.

MCP Tools Quick Reference

Peekaboo (Vision)

ToolUse
mcp__peekaboo__imageCapture screenshot of screen/app/window
mcp__peekaboo__analyzeAsk AI questions about screenshots
mcp__peekaboo__listList running apps and windows

macos-automator (Actions)

ToolUse
mcp__macos-automator__execute_scriptRun AppleScript/JXA
mcp__macos-automator__get_scripting_tipsSearch automation scripts

Core Workflow

Step 1: Launch BG3 via Steam Protocol

do shell script "open steam://run/1086940"

BG3 Steam App ID: 1086940

Step 2: Wait for Larian Launcher

Use Peekaboo to monitor for the PLAY button, then click it.

Step 3: Wait for Main Menu (15-30s)

Poll with Peekaboo screenshots looking for Continue/Load Game/New Game buttons.

Step 4: Load Save

Navigate menus using keyboard (Enter=36, Esc=53, arrows) or mouse coordinates.

Mouse Clicks (JXA + CGEvent)

Standard AppleScript click at doesn't work for game UIs. Use JXA with CGEvent:

// Execute with language: "javascript"
ObjC.import('Cocoa');

function clickAt(x, y) {
    const point = $.CGPointMake(x, y);
    const down = $.CGEventCreateMouseEvent($(), $.kCGEventLeftMouseDown, point, $.kCGMouseButtonLeft);
    const up = $.CGEventCreateMouseEvent($(), $.kCGEventLeftMouseUp, point, $.kCGMouseButtonLeft);
    $.CGEventPost($.kCGHIDEventTap, down);
    delay(0.05);
    $.CGEventPost($.kCGHIDEventTap, up);
}

// Get window-relative coordinates
function getWindowClickPos(processName, xPercent, yPercent) {
    const se = Application('System Events');
    const proc = se.processes.byName(processName);
    const win = proc.windows[0];
    const pos = win.position();
    const size = win.size();
    return {
        x: pos[0] + (size[0] * xPercent),
        y: pos[1] + (size[1] * yPercent)
    };
}

// Example: click PLAY button (22% across, 87% down)
const coords = getWindowClickPos('bg3', 0.22, 0.87);
clickAt(coords.x, coords.y);

Process Names

AppProcess NameBundle ID
SteamSteamcom.valvesoftware.steam
BG3 (Launcher & Game)bg3com.larian.bg3

Button Coordinates (1728x1117 fullscreen)

ScreenElementXY
Larian LauncherPLAY button22%87%
Main MenuContinue310510
Main MenuLoad Game310610
Load ScreenFirst save slot200230
Load ScreenLoad Game button8701050
Mod VerificationStart Game button7201000

SE Testing Workflow

  1. Build:

    cd /path/to/bg3se-macos && ./scripts/build.sh
    
  2. Verify SE wrapper in Steam launch options:

    /tmp/bg3w.sh %command%
    
  3. Launch via this skill and load a save

  4. Check SE logs:

    tail -f /tmp/bg3se_macos.log
    

Crash Reports

SE Log: /tmp/bg3se_macos.log

macOS Crash Reports: ~/Library/Logs/DiagnosticReports/

  • Files named Baldur's Gate 3-YYYY-MM-DD-HHMMSS.ips
  • JSON format with full stack traces
# List recent BG3 crash reports
ls -la ~/Library/Logs/DiagnosticReports/ | grep -i "baldur"

# Find crash location in our dylib
grep -A5 "libbg3se.dylib" ~/Library/Logs/DiagnosticReports/'Baldur'\''s Gate 3-*.ips'

Troubleshooting

IssueSolution
Click doesn't workUse JXA CGEvent (see above)
Permission deniedSystem Preferences → Accessibility → enable osascript
Can't see screenUse mcp__peekaboo__image with app_target: "screen"