BizHawk Emulator MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| emulator_statusB | Return emulator status for a target: system, frame, screen size. |
| emulator_bridge_infoC | Return bridge.lua version and advertised capabilities for a target. |
| emulator_stepC | Advance the emulator by N neutral/released frames. Max 600 per call. |
| emulator_tapC | Tap one button with neutral frames before and after. |
| emulator_holdB | Hold one button for N frames without releasing afterward. |
| emulator_releaseC | Release all known buttons for N frames. |
| emulator_resetB | Reboot the emulator core and settle with neutral input for N frames. |
| emulator_screenshotC | Save a screenshot for a target and return its path. |
| emulator_save_stateC | Save a BizHawk state under the target runtime states directory. |
| emulator_load_stateC | Load a BizHawk state from the target runtime states directory. |
| emulator_create_baselineC | Alias for saving a named baseline state under runtime//states. |
| emulator_load_baselineC | Alias for loading a named baseline state from runtime//states. |
| emulator_buttonsC | Return current BizHawk joypad button names/states. |
| emulator_read_memoryC | Read a memory range and return its bytes as an uppercase hex string. |
| emulator_gb_gpu_snapshotC | Dump raw GB DMG GPU data and optionally render diagnostic PNG panels. |
| gb_gpu_snapshotC | Legacy-short alias for emulator_gb_gpu_snapshot(target='gb'). |
| emulator_run_scenarioC | Run a JSON scenario file against a target. |
| emulator_run_pair_scenarioC | Run paired GB and MD scenarios and collect their outputs without visual diffing. |
| emulator_build_pair_contact_sheetC | Rebuild a pair contact sheet from an existing pair_summary.json. |
| emulator_build_pair_diffsC | Rebuild canonical crop diffs and the contact sheet from an existing pair_summary.json. |
| bizhawk_statusD | GB-compatible wrapper for emulator_status. |
| bizhawk_bridge_infoC | GB-compatible wrapper for emulator_bridge_info. |
| bizhawk_stepC | GB-compatible wrapper for emulator_step. |
| bizhawk_tapC | GB-compatible wrapper for emulator_tap. |
| bizhawk_holdD | GB-compatible wrapper for emulator_hold. |
| bizhawk_releaseC | GB-compatible wrapper for emulator_release. |
| bizhawk_resetC | GB-compatible wrapper for emulator_reset. |
| bizhawk_pressA | Legacy GB alias for tap(button, hold_frames=frames, release_frames=2). |
| bizhawk_screenshotC | GB-compatible wrapper for emulator_screenshot. |
| bizhawk_save_stateD | GB-compatible wrapper for emulator_save_state. |
| bizhawk_load_stateC | GB-compatible wrapper for emulator_load_state. |
| bizhawk_create_baselineC | GB-compatible alias for saving a named baseline state. |
| bizhawk_load_baselineC | GB-compatible alias for loading a named baseline state. |
| bizhawk_read_memoryC | GB-compatible wrapper for emulator_read_memory. |
| bizhawk_run_sequenceC | GB-compatible sequence runner. |
| bizhawk_run_scenarioC | GB-compatible wrapper for emulator_run_scenario. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 36 tools
Many tools are aliases or wrappers for the same operations (e.g., emulator_step and bizhawk_step, emulator_tap and bizhawk_tap), making it unclear which to call. Even within the emulator_* group, save_state and create_baseline have blurred boundaries. Several tools appear to do the same thing.
Naming uses three inconsistent prefix schemes: emulator_, bizhawk_, and legacy aliases like gb_gpu_snapshot. While the core emulator_* tools are consistent, the mix of prefixes and verbose names like emulator_build_pair_contact_sheet breaks the pattern.
At 36 tools, many are redundant wrappers or aliases, inflating the count. The actual unique functionality could be covered by fewer tools, making the surface feel bloated and harder to navigate.
Core emulator operations are well covered: status, stepping, input, reset, screenshot, save/load states, memory read, GPU snapshot, and scenario running. Minor gaps like memory write and ROM loading exist but do not severely hinder the apparent purpose.