MCP Dolphin logo

MCP Dolphin

by dmang-dev

Controls Felk’s Dolphin emulator through MCP for memory access, controller input, screenshots, savestates, reset, and frame stepping.

Install MCP Dolphin

Pick your client, then add it in one click or paste the config.

STDIONode.js
~/Library/Application Support/Claude/claude_desktop_config.json
claude_desktop_config.json
{
  "mcpServers": {
    "dmang-dev-mcp-dolphin": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-dolphin"
      ],
      "env": {
        "DOLPHIN_BRIDGE_HOST": "YOUR_VALUE_HERE",
        "DOLPHIN_BRIDGE_PORT": "YOUR_VALUE_HERE",
        "DOLPHIN_TIMEOUT_MS": "YOUR_VALUE_HERE",
        "MCP_DOLPHIN_DEBUG": "YOUR_VALUE_HERE"
      }
    }
  }
}

Settings → Developer → Edit Config, merge this into mcpServers, then fully quit and reopen Claude Desktop.

Values are written into the snippet above so you can paste it as is. They never leave your browser.

Automated check passed— started and listed 21 tools correctly (1mo ago).

Overview

Dolphin emulator control is provided by the dmang-dev/mcp-dolphin MCP server through a Node.js MCP process connected to a Python bridge running inside Felk’s Dolphin fork. It reads and writes big-endian PowerPC memory, sends GameCube and Wii Remote input, captures screenshots, manages savestates, resets the emulator, and advances frames. Use it for emulator automation, tool-assisted testing, memory inspection, controller scripting, or repeatable gameplay experiments. Mainline Dolphin is not supported because the bridge depends on Felk’s Python scripting build.

Use cases

  • Inspect game state in PowerPC memory
  • Automate frame-precise controller sequences
  • Test memory patches with savestate rollback
  • Capture emulator frames for visual checks
  • Drive GameCube and Wii input from an MCP client

Key features

  • Read and write 8/16/32/64-bit PowerPC memory
  • Bulk-read memory ranges as hex
  • Control GameCube and Wii Remote input
  • Capture the current Dolphin frame
  • Manage savestates and frame advancement
  • Trigger emulator reset and bridge diagnostics

Tools21

What MCP Dolphin lets your agent do. Expand a tool for its parameters.

Verified live~9.1k tokens of context

Security & health

What it can reach and how reliably it runs — from our own checks, not the maintainer’s claims.

ActiveLast checked 2d ago

Recent health check succeeded.

19/19 checks healthy over the last 79d

Supply-chain signal

No high-severity advisories surfaced by our automated scan.

Critical 0High 0Medium 0Low 0

Scanned 9d ago via OSV.dev · mcp-dolphin (npm)

Adoption & maintenance

Factual signals from GitHub, npm, and our automated checks — not a rating.

GitHub stars5Stargazers on the source repository.
npm downloads85Package downloads in the last 30 days.
Last commit4d agoMost recent push to the default branch.
Availability100%Our rolling endpoint + install checks that succeeded.
Install checkPassedOur sandbox started it and listed its tools.
Tools exposed21Callable tools this server registers over MCP.
Directory activity4 viewsConfig copies, upvotes, and views on AllMCPs.

How MCP Dolphin works

What dmang-dev/mcp-dolphin does

The dmang-dev/mcp-dolphin MCP server exposes Dolphin GameCube and Wii emulator operations to MCP clients. Its tools can inspect and mutate absolute PowerPC memory, send controller state, capture the current framebuffer, trigger reset, save or restore numbered emulator states, and wait for a specified number of rendered frames.

Memory access covers 8-, 16-, 32-, and 64-bit values plus contiguous hex-dump reads of up to 64 KiB. The bridge handles the hardware’s big-endian representation for typed reads and writes. The documented address ranges include GameCube and Wii MEM1 at 0x80000000-0x817FFFFF, and Wii-only MEM2 at 0x90000000-0x93FFFFFF.

How it works

The MCP process runs under Node.js and communicates over MCP stdio with the client. It then opens a TCP connection to the Python bridge at 127.0.0.1:55355 by default. That bridge must be loaded as mcp_bridge.py in Felk’s Dolphin scripting panel. dolphin_ping is the intended initial check and reports bridge reachability and version.

Felk’s Dolphin fork is a hard dependency. Controller values and memory operations therefore affect the live emulator through Felk’s scripting APIs rather than through a separate game or console service.

Setup and configuration

Install the npm package with npx -y mcp-dolphin. Before using the MCP tools, export the bridge script with npx -y mcp-dolphin --print-bridge > mcp_bridge.py, load that file through Dolphin’s Scripting panel, and start a GameCube or Wii title. Register the package as a stdio MCP server in the client; the documented Claude Desktop configuration uses npx with -y and mcp-dolphin.

The connection host, port, timeout, and debug tracing are configurable with DOLPHIN_BRIDGE_HOST, DOLPHIN_BRIDGE_PORT, DOLPHIN_TIMEOUT_MS, and MCP_DOLPHIN_DEBUG. If the port changes, the bridge script and MCP process must use the same value. A client can list tools without Dolphin connected, but tool calls require the running Felk bridge.

Tools and capabilities

  • Probe the bridge and report its version or Dolphin label.
  • Read and write typed PowerPC values, or scan a memory range as hexadecimal bytes.
  • Set GameCube digital buttons, sticks, C-stick axes, and analog triggers.
  • Set Wii Remote buttons, IR pointer coordinates, accelerometer values, and MotionPlus angular velocity.
  • Capture the most recently drawn frame as an inline PNG.
  • Trigger reset, save or load slots from 0 through 255, and wait for rendered frames.

GameCube input is frame-oriented: omitted controls are released or neutral, so held input must be sent repeatedly. Frame advancement is useful for deterministic sequences that alternate input updates with one-frame waits.

Limitations and notes

Writes are destructive and have no automatic undo; saving a state first provides a rollback point. Loading an incompatible state can crash the emulator, and state files are tied to the game disc and Dolphin build. Multi-byte memory tools require the documented alignment, and 64-bit values are passed as decimal strings to avoid JavaScript precision loss.

Use caution with I/O ranges: reads are generally described as safe, while writes can wedge the emulator. MEM2 is Wii-only, and unmapped addresses can return errors or invalid-looking data. Frame advancement requires Dolphin to be unpaused and can time out if the frame counter does not progress. The bridge also needs to be refreshed when its script is older than the installed MCP package.

The dmang-dev/mcp-dolphin MCP server is intended for local emulator control, not a hosted Dolphin service. No API credential or paid external service is described.

Reviews

No reviews yet — be the first to share how it worked for you.

Frequently Asked Questions about MCP Dolphin

Run `npx -y mcp-dolphin`, then export the bridge script with `npx -y mcp-dolphin --print-bridge > mcp_bridge.py` and load it in Felk’s Dolphin scripting panel.

Yes. The documented setup registers it as a stdio server using `npx`, `-y`, and `mcp-dolphin`.

No. The bridge requires Felk’s Dolphin fork with Python scripting support.

Set `DOLPHIN_BRIDGE_PORT` for the MCP process and update the matching listen port in `mcp_bridge.py`.

Related MCP servers

Add a badge to your READMEShow it’s listed — live SVG, Markdown or HTML.

AllMCPs Directory Badge

Full Badge Customizer

Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.

Badge Style:
Live Dynamic SVG PreviewMCP Dolphin AllMCPs Directory Badge
Markdown (GitHub README)
[![AllMCPs](https://allmcps.com/api/badge/dmang-dev-mcp-dolphin?style=directory)](https://allmcps.com/mcp/dmang-dev-mcp-dolphin)
HTML Embed
<a href="https://allmcps.com/mcp/dmang-dev-mcp-dolphin"><img src="https://allmcps.com/api/badge/dmang-dev-mcp-dolphin?style=directory" alt="MCP Dolphin on AllMCPs" /></a>