MCP:NES
通过模型上下文协议(MCP)为LLM提供的NES仿真器。
通过MCP兼容界面玩NES游戏——加载ROM、按下按钮、前进帧并查看屏幕。包括一个带有怀旧CRT电视+NES控制台设计的浏览器UI和一个完整的MCP工具API,用于LLM驱动的游戏。
特性
- 具有内置内核的NES仿真(不依赖于外部仿真器)
- 带stdio和SSE传输的MCP服务器
- 带有CRT电视、NES控制台和控制器布局的浏览器UI
- 客户端60fps渲染,带Web音频声音
- 速度控制(1x/2x/4x/8x)
- ROM上传和管理
- 完全控制器支持(D-pad、A、B、启动、选择)
- 键盘输入(箭头键、Z、X、Enter、Shift)
设置
npm install
npm run build用法
标准模式(默认)
ROM_PATH=./roms/game.nes npm startSSE模式
ROM_PATH=./roms/game.nes npm run start-sse发展
npm run devMCP检查员
npm run debugweb UI可在 http://localhost:3001.
环境变量
| 变量 | 描述 | 默认值 |
|---|---|---|
SERVER_PORT | Web服务器端口 | 3001 |
ROM_PATH | 启动时自动加载ROM的路径 | -- |
MCP工具
| 工具 | 说明 |
|---|---|
load_rom | 加载ROM文件 |
get_screen | 获取当前屏幕为PNG图像 |
press_up/down/left/right | 按D-pad方向 |
press_a/b | 按下A或B按钮 |
press_start/select | 按开始或选择 |
wait_frames | 通过N帧进行高级仿真 |
is_rom_loaded | 检查ROM是否已加载 |
list_roms | 列出ROMs/目录中的可用ROM |
项目结构
src/
index.ts # Entry point
types.ts # NESButton enum, interfaces
nes.ts # NES emulator wrapper
emulatorService.ts # Service layer
tools.ts # MCP tool registration
ui.ts # Web UI and API routes
nes-core/ # NES emulation core (JS)
server/
server.ts # MCP server factory
stdio.ts # Stdio transport
sse.ts # SSE transport
utils/
logger.ts # File logger致谢
许可证
麻省理工学院
