mcp-openmsx

mcp-openmsx

This MCP provides comprehensive tools and resources for MSX software development, testing, and automation through openMSX emulator.

Category
访问服务器

README

MCP-openMSX

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

Built by NataliaPC License GitHub Repo stars
NPM Version NPM Downloads

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.

🎁🎁 If you find this project useful, please consider making a donation: PAYPAL Link


Table of Contents

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.
  • BASIC Programming Support: Tools to facilitate BASIC language programming and development.
  • 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.
  • Vector DB Integration: Query an embedded vector database with MSX resources for development support.
  • Hybrid Mode: This MCP server supports hybrid access mode (STDIO and HTTP transports).

Architecture

flowchart TB
  %%{init: {'flowchart': {'curve':'monotoneX' }}}%%

  subgraph yourComputerGroup[" "]
    HOST["Your AI dev companion<br>(MCP Client support)"]
    EMU["openMSX emulator<br>(local instance)"]

    subgraph mcpGroup["**mcp-openmsx**"]
      MCP["MCP Server<br>stdio / http"]
      TOOLS["MCP Tools"]
      VECTORDB[("Embeddings RAG<br>(Vector Database)")]
      RESOURCES["MCP Resources"]
      LOCALDATA["Local data<br>(inner documentation)"]
    end
    EXTDATA["External data<br>(webpages)"]

    HOST <--"_MCP<br>&nbsp;protocol&nbsp;_"--> MCP
    MCP <--> TOOLS & RESOURCES
    TOOLS <--"_&nbsp;Query&nbsp;_"--> VECTORDB
    TOOLS <--"_&nbsp;Console commands&nbsp;_"---> EMU
    RESOURCES <--_&nbsp;http&nbsp;_---> EXTDATA
    RESOURCES <--> LOCALDATA
  end

  HOST@{ shape: rounded }
  MCP@{ shape: rounded }
  EMU@{ shape: rounded }
  LOCALDATA@{ shape: docs }
  EXTDATA@{ shape: docs }
  style yourComputerGroup color:#fff,fill:#4444,text-align:left
  style mcpGroup color:#fff,fill:#4444
  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 natural language 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, advanceFrame, reverseFrame, 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.

Programming Tools

  • basic_programming: BASIC tools: isBasicAvailable, newProgram, runProgram, setProgram, getFullProgram, getFullProgramAdvanced, listProgramLines, deleteProgramLines.

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.
  • msxdocs_resource_get: Retrieve MCP resources for MCP clients that don't support MCP resources.

Documentation Tools

  • vector_db_query: Query the Vector DB resources to obtain information about MSX systems, cartridges, and other development resources.
  • msxdocs_resource_get: Retrieve MCP resources for MCP clients that don't support MCP resources.

Available MCP Resources

What are MCP Resources?

MCP resources are structured data sets, documentation, and helper files that extend the capabilities of the MCP server. They provide essential information such as machine definitions, extension lists, media templates, and programming examples, enabling more powerful automation, testing, and development workflows for MSX software within the MCP-openMSX environment.

Available Resources

There are more than 60 resources available, some included directly in the MCP and others accessible via download when queried. They are organized into the following categories:

  • Processors (Z80, R800)
  • Bios (Bios ROM, DOS ROM, SUBROM, ...)
  • System
  • Audio
  • Video
  • Programming (ASM, BASIC, ...)
  • MSX-DOS
  • MSX-UNAPI
  • MSX BASIC

And books and manuals:

  • MSX2 Technical Handbook
  • The MSX Red Book
  • SDCC Compiler

Resources from:

Thanks to the authors of these resources, who have made them available under various licenses. This MCP server includes some of these resources to enhance the development experience.

[!IMPORTANT]
The rights to these resources belong to their respective authors and are distributed under the licenses they have defined.

Quick Start

You can use this MCP server in this basic way with the precompiled NPM package.

Quick installation with VSCode

Install in VS Code

Steps to install the MCP server in VSCode:

  1. Install Github Copilot extension
  2. Install nodejs (npx command must be available in your PATH).
  3. Install de MCP Server:
    • Use the Install MCP Server button above to install the MCP server in your VSCode settings.
    • Or add to your workspace folder a file named .vscode/mcp.json with the json configuration below.

STDIO mode (recommended)

{
  "servers": {
    "mcp-openmsx": {
      "command": "npx",
      "args": ["@nataliapc/mcp-openmsx"],
      "env": {
        "OPENMSX_SHARE_DIR": "C:\\the\\location\\of\\your\\openmsx\\share\\folder"
      }
    }
  }
}

[!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 Installation with Claude Desktop

Follow these instrutions to access Claude's claude_desktop_config.json file.

Edit it to include the following JSON entry:

{
  "mcpServers": {
    "mcp-openmsx": {
      "command": "npx",
      "args": ["@nataliapc/mcp-openmsx"],
      "env": {
        "OPENMSX_SHARE_DIR": "C:\\the\\location\\of\\your\\openmsx\\share\\folder"
      }
    }
  }
}

[!NOTE]
Environment variables are optional. Customize them as you need.

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
OPENMSX_REPLAYS_DIR Directory where replay files will be saved Default for openmsx /myproject/replays
MCP_TRANSPORT Transport mode (stdio or http) stdio http
MCP_HTTP_PORT Port number for HTTP transport mode 3000 8080

Advanced Manual Usage

[!IMPORTANT]
This is not needed for using the MCP server, but if you want to install it manually, follow these steps.

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 OPENMSX_REPLAYS_DIR="/my_project/replays"
export MCP_HTTP_PORT=3000

As MCP Server (stdio)

mcp-openmsx

As HTTP Server

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

Development

[!IMPORTANT]
This is not needed for using the MCP server, but if you want to contribute or modify the code, follow these steps.

Prerequisites to build

  • 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.


推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选