"在AI指挥、MCP诠释、openMSX扮演8位女神的二进制歌剧中进行编排。"
一个用于自动化openMSX模拟器实例的模型上下文协议 (MCP)服务器。
此服务器通过标准化的MCP协议提供了全面的工具,用于MSX软件的开发、测试和自动化。
🎁🎁 如果您发现这个项目有用,请考虑捐款:PAYPAL链接
该项目通过提供以下内容,在现代AI辅助开发(如GitHub Copilot、Claude Desktop)与复古计算(MSX系统)之间架起了一座桥梁:
flowchart TB
%%{init: {'flowchart': {'curve':'monotoneX' }}}%%
subgraph yourComputerGroup[" "]
HOST["您的AI开发伴侣<br>(MCP客户端支持)"]
EMU["openMSX模拟器<br>(本地实例)"]
subgraph mcpGroup["**mcp-openmsx**"]
MCP["MCP服务器<br>stdio / http"]
TOOLS["MCP工具"]
VECTORDB[("嵌入式RAG<br>(向量数据库)")]
RESOURCES["MCP资源"]
LOCALDATA["本地数据<br>(内部文档)"]
end
EXTDATA["外部数据<br>(网页)"]
HOST <--"_MCP<br> 协议 _"--> MCP
MCP <--> TOOLS & RESOURCES
TOOLS <--"_ 查询 _"--> VECTORDB
TOOLS <--"_ 控制台命令 _"---> EMU
RESOURCES <--_ http _---> 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:2px,stroke-dasharray:0
MCP服务器将来自Copilot AI的高级自然语言命令转换为TCL命令来控制openMSX,从而实现自动化的MSX软件测试和调试。
emu_control:控制openMSX模拟器:launch, close, powerOn, powerOff, reset, getEmulatorSpeed, setEmulatorSpeed, machineList, extensionList, wait。emu_replay:控制模拟时间线:start, stop, status, goBack, absoluteGoto, advanceFrame, reverseFrame, truncate, saveReplay, loadReplay。emu_info:获取当前模拟机器的信息:getStatus, getSlotsMap, getIOPortsMap。emu_media:管理ROM、磁盘和磁带媒体:tapeInsert, tapeRewind, tapeEject, romInsert, romEject, diskInsert, diskInsertFolder, diskEject。emu_vdp:管理VDP(视频显示处理器):getPalette, getRegisters, getRegisterValue, setRegisterValue, screenGetMode, screenGetFullText。basic_programming:BASIC工具:isBasicAvailable, newProgram, runProgram, setProgram, getFullProgram, getFullProgramAdvanced, listProgramLines, deleteProgramLines。debug_run:控制执行:break, isBreaked, continue, stepIn, stepOut, stepOver, stepBack, runTo。debug_cpu:读写CPU寄存器、CPU信息、堆栈和反汇编代码:getCpuRegisters, getRegister, setRegister, getStackPile, disassemble, getActiveCpu。debug_memory:RAM内存操作:selectedSlots, getBlock, readByte, readWord, writeByte, writeWord, advanced_basic_listing。debug_vram:VRAM操作:getBlock, readByte, writeByte。debug_breakpoints:断点管理:create, remove, list。emu_keyboard:发送文本输入到模拟器:sendText。emu_savestates:保存和恢复机器状态:load, save, list。screen_shot:捕获模拟器屏幕:as_image, to_file。screen_dump:导出屏幕数据作为BASIC BSAVE指令。msxdocs_resource_get:检索MCP资源供不支持MCP资源的MCP客户端使用。vector_db_query:查询向量数据库资源以获取关于MSX系统、卡带和其他开发资源的信息。msxdocs_resource_get:检索MCP资源供不支持MCP资源的MCP客户端使用。MCP资源是扩展MCP服务器能力的结构化数据集、文档和辅助文件。它们提供了诸如机器定义、扩展列表、媒体模板和编程示例等重要信息,使MSX软件在MCP-openMSX环境中能够进行更强大的自动化、测试和开发工作流程。
有超过60种资源可供使用,有些直接包含在MCP中,而其他则可以通过查询下载。它们被组织成以下类别:
处理器(Z80, R800)BIOS(BIOS ROM, DOS ROM, SUBROM, ...)系统音频视频编程(ASM, BASIC, ...)MSX-DOSMSX-UNAPIMSX BASIC以及书籍和手册:
MSX2技术手册MSX红皮书SDCC编译器感谢这些资源的作者,他们根据各种许可证将其公开。此MCP服务器包含了一些这些资源以增强开发体验。
[!重要]
这些资源的权利属于其各自的作者,并根据他们定义的许可证分发。
您可以使用预编译的NPM包以这种方式基本使用此MCP服务器。
在VSCode中安装MCP服务器的步骤:
npx命令必须在PATH中可用)。.vscode/mcp.json的文件,其中包含以下json配置。{
"servers": {
"mcp-openmsx": {
"command": "npx",
"args": ["@nataliapc/mcp-openmsx"],
"env": {
"OPENMSX_SHARE_DIR": "C:\\the\\location\\of\\your\\openmsx\\share\\folder"
}
}
}
}
[!注意]
环境变量是可选的。根据需要自定义它们。
{
"servers": {
"mcp-openmsx": {
"type": "http",
"url": "http://localhost:3000/mcp",
"headers": { }
}
}
}
[!注意]
MCP HTTP服务器必须在同一台计算机上独立运行或在另一台计算机上运行(make run_http)。
遵循这些说明访问Claude的claude_desktop_config.json文件。
编辑它以包含以下JSON条目:
{
"mcpServers": {
"mcp-openmsx": {
"command": "npx",
"args": ["@nataliapc/mcp-openmsx"],
"env": {
"OPENMSX_SHARE_DIR": "C:\\the\\location\\of\\your\\openmsx\\share\\folder"
}
}
}
}
[!注意]
环境变量是可选的。根据需要自定义它们。
| 变量 | 描述 | 默认值 | 示例 |
|---|---|---|---|
OPENMSX_EXECUTABLE | openMSX可执行文件的路径或命令 | openmsx | /usr/local/bin/openmsx |
OPENMSX_SHARE_DIR | 包含openMSX数据文件(机器、扩展等)的目录 | 系统依赖 | /home/myuser/.openmsx/share |
OPENMSX_SCREENSHOT_DIR | 截图将保存的目录 | openmsx默认 | /myproject/screenshots |
OPENMSX_SCREENDUMP_DIR | 屏幕转储将保存的目录 | openmsx默认 | /myproject/screendumps |
OPENMSX_REPLAYS_DIR | 回放文件将保存的目录 | openmsx默认 | /myproject/replays |
MCP_TRANSPORT | 传输模式(stdio或http) | stdio | http |
MCP_HTTP_PORT | HTTP传输模式的端口号 | 3000 | 8080 |
[!重要]
使用MCP服务器不需要此步骤,但如果您想手动安装,请按照以下步骤操作。
目前,MCP服务器需要Linux才能编译。尚未在Windows或macOS上进行测试,尽管它可能也能在后者上运行。
npm install -g @nataliapc/mcp-openmsx
设置可选的环境变量以自定义服务器:
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
mcp-openmsx
MCP_TRANSPORT=http mcp-openmsx
# 或
mcp-openmsx http
[!重要]
使用MCP服务器不需要此步骤,但如果您想贡献或修改代码,请按照以下步骤操作。
git clone https://github.com/nataliapc/mcp-openmsx.git
cd mcp-openmsx/mcp-server
npm install
npm run build
npm run dev
GPL2许可 - 详情见LICENSE文件。
如果您需要帮助,或有任何问题或建议,请在GitHub问题页面上打开一个问题或查看项目讨论。
欢迎贡献!请随时提交拉取请求。
如果您喜欢这个项目,请在GitHub上给我们一个星标。