Skip to main content
Glama
Leuconoe

ryubing-mcp

by Leuconoe

ryubing-mcp

ryubing-mcp is a local Model Context Protocol server for automating the Ryubing Nintendo Switch emulator.

This repository contains the MCP server, its versioned bridge protocol, tests, and live smoke-test scripts. A companion opt-in Ryubing control-bridge patch is implemented on the local feature/mcp-control-bridge upstream branch and must be present in the Ryubing binary used by this server.

Tool surface

Tool

Purpose

ryubing_get_status

Check connection, protocol version, and current title

ryubing_press_buttons

Press one or more Switch controller buttons

ryubing_set_sticks

Set analog stick values

ryubing_touch

Tap, long-press, or swipe the 1280x720 touch surface

ryubing_take_screenshot

Return the raw rendered frame as MCP image content

ryubing_get_logs

Read structured, cursor-based emulator logs

ryubing_launch_game

Launch a base file with an optional session-only update

ryubing_create_session

Start an isolated Ryubing process and profile

ryubing_list_sessions

List the default and managed sessions

ryubing_stop_session

Stop a managed process and optionally remove its profile

Every emulator-control tool accepts an optional sessionId. Omit it to target the externally started default bridge, or pass an ID returned by ryubing_create_session to control one of several concurrent processes.

Only use game and update files you are legally entitled to use. This project does not provide games, firmware, title keys, or decryption keys.

Related MCP server: algorithmaide-mcp

Development

Prerequisites: Node.js 20 or newer.

npm install
npm run typecheck
npm test
npm run build

Run the server over stdio:

npm run dev

Example MCP client configuration after building:

{
  "mcpServers": {
    "ryubing": {
      "command": "node",
      "args": ["D:/workspace/____personal____/ryubing-mcp/dist/index.js"],
      "env": {
        "RYUBING_CONTROL_TOKEN": "replace-with-the-same-random-token-used-by-ryubing",
        "RYUBING_ALLOWED_GAME_DIRS": "D:/Games/Switch"
      }
    }
  }
}

Configuration

Environment variable

Default

Meaning

RYUBING_CONTROL_HOST

127.0.0.1

Bridge host; loopback only

RYUBING_CONTROL_PORT

49600

Bridge TCP port

RYUBING_CONTROL_TOKEN

unset

Shared bearer token sent with each bridge request

RYUBING_CONTROL_TIMEOUT_MS

10000

Per-request timeout

RYUBING_ALLOWED_GAME_DIRS

unrestricted

Platform-delimited allowlist for base/update paths

RYUBING_EXECUTABLE

unset

Patched Ryubing .exe or .dll used for managed sessions

RYUBING_PROFILE_TEMPLATE

unset

Ready-to-use profile copied for every managed session

RYUBING_SESSION_ROOT

unset

Parent directory for isolated managed profiles

RYUBING_SESSION_PORT_START

49610

First port considered for managed bridges

RYUBING_MAX_SESSIONS

4

Concurrent managed-process limit (maximum 32)

RYUBING_SESSION_STARTUP_TIMEOUT_MS

30000

Managed bridge readiness timeout

All three managed-session paths are required before ryubing_create_session is enabled. On Windows, the server uses a one-time token file inside the new profile because GUI processes started by the interactive shell do not inherit the MCP host environment; patched Ryubing deletes that file immediately after reading it. Profiles are retained by default when a session stops.

Live verification

With a patched build already running on the configured default port:

npm run smoke:live

For two fully managed processes, set the managed-session variables plus RYUBING_LIVE_BASE_A, RYUBING_LIVE_UPDATE_A, and RYUBING_LIVE_BASE_B, then:

npm run smoke:parallel

The parallel smoke test starts two isolated profiles, boots both titles, captures both rendered frames, and stops/removes the temporary sessions.

For design status and upstream integration points, see PDCA iteration 01, the live PDCA iteration 02, and the bridge protocol.

Install Server
A
license - permissive license
A
quality
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    MCP server for the mGBA Game Boy Advance emulator. Read and write GBA memory, inject button presses, take screenshots, save/load state, and step the emulator through a Lua bridge.
    Last updated
    18
    41
    1
    MIT
  • A
    license
    C
    quality
    D
    maintenance
    An MCP server for real-device Android reversing workflows, wrapping AlgorithmAide config writes, AppSwitch/logList sync, LSPosed scope sync, Frida script injection, and runtime log queries into a stable MCP toolset.
    Last updated
    23
    13
    MIT
  • A
    license
    -
    quality
    B
    maintenance
    Local MCP server for Android and iOS mobile automation and performance telemetry, enabling device control (screenshot, tap, swipe, input, app launch) and metric collection (CPU, memory, launch time) via ADB, simctl, and WebDriverAgent with SQLite session history.
    Last updated
    21
    1
    MIT
  • A
    license
    -
    quality
    C
    maintenance
    MCP server for controlling Android devices over ADB, using direct commands and semantic accessibility selectors with a Kotlin helper APK.
    Last updated
    123
    MIT

View all related MCP servers

Related MCP Connectors

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Leuconoe/ryubing-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server