MCP ExplorerExplorer

Mcp Openmsx

@nataliapcon a year ago
10 GPL-2.0
FreeCommunity
AI Systems
A Model Context Protocol (MCP) server for automating openMSX emulator instances. This server provides comprehensive tools for MSX software development, testing, and automation through standardized MCP protocols.

Overview

What is Mcp Openmsx

mcp-openmsx is a Model Context Protocol (MCP) server designed to automate openMSX emulator instances, providing tools for MSX software development, testing, and automation through standardized MCP protocols.

Use cases

Use cases include automating testing of MSX software, debugging applications, managing ROMs and media, and enhancing the development workflow with AI tools.

How to use

To use mcp-openmsx, install it on a Linux system, configure the server, and connect it with the openMSX emulator. You can then send commands to control the emulator and manage MSX software.

Key features

Key features include emulator control, media management, debugging tools, video control, memory operations, automation capabilities, and support for both stdio and HTTP transports.

Where to use

mcp-openmsx is suitable for software development and testing in retro computing environments, particularly for MSX systems, and can be integrated with AI-assisted development tools.

Content

MCP-openMSX

“Orchestrating a binary opera where AI conducts, MCP interprets, and openMSX acts as the 8-bit diva.”

A Model Context Protocol (MCP) server for automating openMSX emulator instances.

This server provides comprehensive tools for MSX software development, testing, and automation through standardized MCP protocols.

🎯 Project Overview

This project creates a bridge between modern AI-assisted development (e.g. GitHub Copilot, Claude Desktop) and retro computing (MSX systems) by providing:

  • Emulator Control: Launch, configure, manage openMSX instances, and replay timelines.
  • Media Management: Handle ROM cartridges, floppy disks, and cassette tapes.
  • Debugging Tools: Full CPU debugging with breakpoints, memory inspection, and step execution.
  • Video Control: VDP register manipulation and screen capture.
  • Memory Operations: Read/write RAM, VRAM, and I/O port access.
  • Automation: Keyboard input simulation and savestate management.
  • Dual Transport: Support for both stdio and HTTP transports.

🏗️ Architecture

flowchart TB
  subgraph subGraph0["Your computer for develop"]
    HOST["Your AI dev companion<br>(mcp client support)"]
    MCP(["mcp-openmsx<br>(mcp server)"])
    EMU["openMSX emulator<br>(local instance)"]
    HOST <--&nbsp;MCP&nbsp;<br>&nbsp;protocol&nbsp;--> MCP
    MCP <--&nbsp;stdio&nbsp;--> EMU
  end
    HOST@{ shape: rounded}
    EMU@{ shape: rounded}
    style subGraph0 color:#fff,fill:#5555
    style HOST color:#000000,fill:#BBDEFB,stroke-width:4px,stroke-dasharray:0
    style MCP color:#000000,fill:#FFF9C4
    style EMU color:#FFFFFF,fill:#0000FF,stroke-width:4px,stroke-dasharray:0

The MCP server translates high-level commands from your Copilot AI into TCL commands to control openMSX, enabling automated MSX software testing and debugging.

🛠️ Available MCP Tools

Emulator Control Tools

  • emu_control: Controls an openMSX emulator: launch, close, powerOn, powerOff, reset, getEmulatorSpeed, setEmulatorSpeed, machineList, extensionList, wait.
  • emu_replay: Controls emulation timeline: start, stop, status, goBack, absoluteGoto, truncate, saveReplay, loadReplay.
  • emu_info: Obtain informacion about the current emulated machine: getStatus, getSlotsMap, getIOPortsMap.
  • emu_media: Manage ROM, disk, and tape media: tapeInsert, tapeRewind, tapeEject, romInsert, romEject, diskInsert, diskInsertFolder, diskEject.
  • emu_vdp: Manage VDP (Video Display Processor): getPalette, getRegisters, getRegisterValue, setRegisterValue, screenGetMode, screenGetFullText.

Debugging Tools

  • debug_run: Control execution: break, isBreaked, continue, stepIn, stepOut, stepOver, stepBack, runTo.
  • debug_cpu: Read/write CPU registers, CPU info, Stack pile, and Disassemble code: getCpuRegisters, getRegister, setRegister, getStackPile, disassemble, getActiveCpu.
  • debug_memory: RAM memory operations: selectedSlots, getBlock, readByte, readWord, writeByte, writeWord, advanced_basic_listing.
  • debug_vram: VRAM operations: getBlock, readByte, writeByte.
  • debug_breakpoints: Breakpoint management: create, remove, list.

Automation Tools

  • emu_keyboard: Send text input to emulator: sendText.
  • emu_savestates: Save and restore machine states: load, save, list.
  • screen_shot: Capture emulator screen: as_image, to_file.
  • screen_dump: Export screen data as BASIC BSAVE instruction.

🚀 Quick Start

You can use this MCP server in this basic way with the precompiled NPM package. You may need to have nodejs installed for this to work.

🟢 Basic Usage with VSCode

STDIO mode (recommended)

{
  "servers": {
    "mcp-openmsx": {
      "command": "npx",
      "args": [
        "@nataliapc/mcp-openmsx"
      ],
      "env": {
        "OPENMSX_SHARE_DIR": "/usr/share/openmsx"
      }
    }
  }
}

Note: Environment variables are optional. Customize them as you need.

Streamed HTTP mode (more advanced)

{
  "servers": {
    "mcp-openmsx": {
      "type": "http",
      "url": "http://localhost:3000/mcp",
      "headers": {}
    }
  }
}

Note: The MCP HTTP Server must be running standalone in the same computer or in another (make run_http).

🟢 Basic Usage with Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "mcp-openmsx": {
      "command": "npx",
      "args": [
        "@nataliapc/mcp-openmsx"
      ],
      "env": {
        "OPENMSX_SHARE_DIR": "/usr/share/openmsx"
      }
    }
  }
}

🟢 Environment Variables

Variable Description Default Value Example
OPENMSX_EXECUTABLE Path or command to the openMSX executable openmsx /usr/local/bin/openmsx
OPENMSX_SHARE_DIR Directory containing openMSX data files (machines, extensions, etc.) System dependent /home/myuser/.openmsx/share
OPENMSX_SCREENSHOT_DIR Directory where screenshots will be saved Default for openmsx /myproject/screenshots
OPENMSX_SCREENDUMP_DIR Directory where screen dumps will be saved Default for openmsx /myproject/screendumps
MCP_TRANSPORT Transport mode (stdio or http) stdio http
MCP_HTTP_PORT Port number for HTTP transport mode 3000 8080

🧑‍💻 Advanced Manual Usage

Currently, the MCP server requires Linux to be compiled. It has not been tested on Windows or macOS, although it will likely work on the latter as well.

Manual installation

npm install -g @nataliapc/mcp-openmsx

Manual set of Environment Variables

Set optional environment variables to customize the server:

export OPENMSX_EXECUTABLE="openmsx"
export OPENMSX_SHARE_DIR="/usr/share/openmsx"
export OPENMSX_SCREENSHOT_DIR="/my_project/screenshots"
export OPENMSX_SCREENDUMP_DIR="/my_project/screendumps"
export MCP_HTTP_PORT=3000

As MCP Server (stdio)

mcp-openmsx

As HTTP Server

MCP_TRANSPORT=http mcp-openmsx
# or
mcp-openmsx http

💡 Development

Prerequisites

  • Node.js >= 18.0.0
  • TypeScript
  • openMSX emulator installed

Building

git clone https://github.com/nataliapc/mcp-openmsx.git
cd mcp-openmsx/mcp-server
npm install
npm run build

Running in Development

npm run dev

🪪 License

GPL2 License - see LICENSE file for details.

🆘 Support

If you need help, or have questions or suggestions, please open an issue on the GitHub Issues page or check the project discussions.

🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.


Tools

No tools

Comments

Recommend MCP Servers

View All MCP Servers