press_upLABSCO SUMMARY
A closed loop between a model and a running game.
Because every button press returns the resulting frame, the model sees what its input did without a separate screenshot step — which is what makes an actual play session possible rather than a run of blind inputs.
What it is
An MCP wrapper around the serverboy Game Boy emulator. The model loads a ROM, presses buttons and reads the screen; every tool returns the latest frame as image content, so the result of a move comes back with the move.
What you get
- Directional and face buttons exposed as individual tools — up, down, left, right, A, B, start and select
- The latest screen frame returned by every call, so a press and its result are one step
- ROMs loaded and switched from the client
- Frames skipped, for when the game needs to advance without input
- A browser interface served on localhost for watching and for uploading ROMs, alongside the MCP session
Requirements
Node — clone, npm install, npm run build. Stdio and SSE transports are both supported. A ROM of your own, and many clients need its absolute path in the environment variables rather than a relative one.
Setup effort
Build from source
USE CASES
Watching a model try to play something
Each press comes back with the frame it produced, so progress and failure are both visible as they happen.
Testing whether a model can act on what it sees
A game screen is a controlled environment: give it a goal, and the presses with their returned frames are the whole transcript.
Driving the emulator yourself while a model watches
The browser interface runs alongside the MCP session, so you can upload a ROM and take the controls.
Switching between games in one session
ROMs are loaded from the client, so the same running server can be pointed at a different game without a restart.
10 tools
Listed in project docs. Your client may show a different list.
press_downpress_leftpress_rightpress_apress_bpress_startpress_selectload_romget_screenBEFORE YOU INSTALL
What to know first
Tools you get
10 tools named in the project's documentation.
Where it runs
The documented client runs the server on your machine.
INSTALLATION
Connect your client
MCP Clients
Cline
{
"mcpServers": {
"mcp-gameboy": {
"command": "node",
"args": [
"<YOUR_PATH_TO_MCP_GAMEBOY>/dist/index.js"
],
"disabled": false,
"autoApprove": []
}
}
}