MCP GameBoy Server
The MCP GameBoy Server allows LLMs to interact with a GameBoy emulator through various functions:
Control GameBoy Buttons: Press UP, DOWN, LEFT, RIGHT, A, B, START, and SELECT with adjustable frame duration
Load ROMs: Load GameBoy ROM files using the
load_romtoolRetrieve Screen Data: Get the current GameBoy screen frame
Check ROM Status: Verify if a ROM is loaded
List Available ROMs: View all available GameBoy ROM files
Wait Frames: Pause execution for a specified number of frames
Web Interface: Control the emulator and upload ROMs via
http://localhost:3001/emulatorMCP Integration: Use with MCP clients like
@modelcontextprotocol/inspectoror FLUJO
Supports configuration through environment variables, particularly for specifying ROM paths and server settings like port number.
Provides a web server in SSE mode for ROM selection through a browser interface, allowing the GameBoy emulator to be accessed via HTTP.
Supports installation via Git clone, allowing users to download the MCP server from its repository.
Enables installation directly from GitHub repositories, including integration with FLUJO via GitHub URL parsing.
Supports installation and management of dependencies through npm, with commands for building and running the server.
Built using the Model Context Protocol TypeScript SDK, providing type-safe implementation of the GameBoy emulator server.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP GameBoy Server press A to jump over the pipe"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP GameBoy Server
Overview
A Model Context Protocol (MCP) server for serverboy, allowing LLMs to interact with a GameBoy emulator. Your LLM can...
Load ROMS
Press Keys
Look at the Gameboy Screen
skip frames
You can...
control the gameboy emulator using the @modelcontextprotocol/inspector
control the gameboy emulator (and upload ROMs) using a web-interface at http://localhost:3001/emulator
install the gameboy emulator in your favorite MCP-Client
Related MCP server: MCP PyBoy Emulator Server
Features
Supports both stdio and SSE transports
Provides tools for GameBoy controls (up, down, left, right, A, B, start, select)
Provides tools to load different ROMs
Provides tools to get the current screen
All tools return an ImageContent with the latest screen frame
Installation
Installing via Smithery
To install GameBoy Emulator Server for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @mario-andreschak/mcp-gameboy --client claudeInstalling in FLUJO
Click Add Server
Copy & Paste Github URL into FLUJO
Click Parse, Clone, Install, Build and Save.
Manual Installation
# Clone the repository
git clone https://github.com/yourusername/mcp-gameboy.git
cd mcp-gameboy
# Install dependencies
npm install
# Build the project
npm run buildInstalling via Configuration Files
!! ATTENTION : Many MCP Clients require to specify the ROM-Path in the .env vars as an absolute path
To integrate this MCP server with Cline or other MCP clients via configuration files:
Open your Cline settings:
In VS Code, go to File -> Preferences -> Settings
Search for "Cline MCP Settings"
Click "Edit in settings.json"
Add the server configuration to the
mcpServersobject:{ "mcpServers": { "mcp-gameboy": { "command": "node", "args": [ "/path/to/mcp-gameboy/dist/index.js" ], "disabled": false, "autoApprove": [] } } }Replace
/path/to/mcp-gameboy/dist/index.jswith the actual path to theindex.jsfile in your project directory. Use forward slashes (/) or double backslashes (\\) for the path on Windows.Save the settings file. Cline should automatically connect to the server.
Usage
Environment Variables
!! ATTENTION : Many MCP Clients require to specify the ROM-Path in the .env vars as an absolute path
Create a .env file in the root directory with the following variables:
# Server configuration
PORT=3001
# ROM path for stdio mode
ROM_PATH=./roms/dangan.gbRunning in stdio Mode
In stdio mode, the server uses the ROM path specified in the ROM_PATH environment variable. It will open a browser window to display the GameBoy screen.
npm run startRunning in SSE Mode
In SSE mode, the server starts an Express server that serves a web page for ROM selection.
npm run start-sseThen open your browser to http://localhost:3001 to select a ROM.
Tools
The server provides the following tools:
press_up: Press the UP button on the GameBoypress_down: Press the DOWN button on the GameBoypress_left: Press the LEFT button on the GameBoypress_right: Press the RIGHT button on the GameBoypress_a: Press the A button on the GameBoypress_b: Press the B button on the GameBoypress_start: Press the START button on the GameBoypress_select: Press the SELECT button on the GameBoyload_rom: Load a GameBoy ROM fileget_screen: Get the current GameBoy screen
All tools return an ImageContent with the latest screen frame.
Implementation Details
This server is built using the Model Context Protocol (MCP) TypeScript SDK. It uses:
McpServerfrom@modelcontextprotocol/sdk/server/mcp.jsfor the server implementationStdioServerTransportfrom@modelcontextprotocol/sdk/server/stdio.jsfor stdio transportSSEServerTransportfrom@modelcontextprotocol/sdk/server/sse.jsfor SSE transportserverboyfor the GameBoy emulationexpressfor the web server in SSE modecanvasfor rendering the GameBoy screen
License
MIT
Available Tools
13 toolsget_screenA
Get the current GameBoy screen (advances one frame)
Inputs: no named parameters.
is_rom_loadedA
Check if a ROM is currently loaded in the emulator
Inputs: no named parameters.
list_romsA
List all available GameBoy ROM files
Inputs: no named parameters.
load_romC
Load a GameBoy ROM file
Inputs: romPath (required).
press_aB
Press the A button on the GameBoy
Inputs: duration_frames.
press_bB
Press the B button on the GameBoy
Inputs: duration_frames.
press_downA
Press the DOWN button on the GameBoy
Inputs: duration_frames.
press_leftA
Press the LEFT button on the GameBoy
Inputs: duration_frames.
press_rightA
Press the RIGHT button on the GameBoy
Inputs: duration_frames.
press_selectB
Press the SELECT button on the GameBoy
Inputs: duration_frames.
press_startA
Press the START button on the GameBoy
Inputs: duration_frames.
press_upB
Press the UP button on the GameBoy
Inputs: duration_frames.
wait_framesC
Wait for a specified number of frames
Inputs: duration_frames.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 13 tools
Every tool has a clearly distinct purpose with no ambiguity. The button press tools are all uniquely named for specific buttons, and the other tools handle distinct emulator operations like screen capture, ROM management, and frame control. There is no overlap in functionality.
All tools follow a consistent verb_noun pattern with snake_case throughout. The naming is perfectly predictable: 'get_screen', 'list_roms', 'load_rom', 'press_a', 'wait_frames', etc. There are no deviations in naming conventions.
13 tools is well-scoped for a GameBoy emulator server. Each tool earns its place with clear purposes: ROM management (3 tools), button controls (8 tools), screen capture (1 tool), and frame control (1 tool). This provides comprehensive coverage without bloat.
The tool surface is nearly complete for GameBoy emulation, covering ROM loading, button inputs, screen capture, and frame control. A minor gap exists in reset/unload functionality, but agents can work around this by reloading ROMs. Core emulator workflows are well-supported.
Maintenance
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to control Unreal E…
The Mercado Pago MCP Server implements the Model Context Protocol to provide AI agents and LLMs with access to Mercado Pago's APIs and tools within compatible development environments. It acts as an intermediary that translates Mercado Pago resources into executable functions (tools) that AI applications can invoke to perform actions and automate flows. The server simplifies integration, enables using documentation to implement or improve code, and optimizes operations through natural language interactions without manual implementations.
A Model Context Protocol server for Wix AI tools
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that allows LLMs to interact with web content through standardized tools, currently supporting web scraping functionality.1MIT
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that allows LLMs to interact with Game Boy games through PyBoy emulation, providing capabilities to load ROMs, control games, capture screens, save/load states, and maintain game knowledge.1MIT
- FlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that provides LLMs with Pokémon data access and battle simulation capabilities, including an interactive web interface.-
- AlicenseNot gradedqualityDmaintenanceMCP server for the mGBA Game Boy/GBA emulator, enabling full emulator control, memory access, debugging, and screenshot capture through natural language.5MIT