GameBoy模拟器服务器

一个基于模型上下文协议(MCP)的服务器,允许大型语言模型与GameBoy模拟器交互,支持加载ROM、按键操作和屏幕查看等功能。

  • by mario-andreschak
  • TypeScript
  • 本地部署
  • 38 星标
  • 更新于
在 GitHub 查看 mario-andreschak/mcp-gameboy

使用说明

MCP GameBoy服务器

概述

服务器男孩的模型上下文协议(MCP)服务器,允许LLM与GameBoy模拟器交互。 你的法学硕士可以。..

  • 加载ROM
  • 按键
  • 看看Gameboy屏幕
  • 跳过帧

你可以。..

  • 使用@modelcontextprotocol/inspector控制gameboy模拟器
  • 使用以下网址的web界面控制gameboy模拟器(并上传ROM)http://localhost:3001/emulator
  • 在您最喜欢的MCP客户端中安装gameboy模拟器

特性

  • 支持stdio和SSE传输
  • 为GameBoy控件提供工具(上、下、左、右、A、B、开始、选择)
  • 提供加载不同ROM的工具
  • 提供获取当前屏幕的工具
  • 所有工具都返回具有最新屏幕框架的ImageContent

安装

通过Smithery安装

通过以下方式自动安装克劳德桌面版GameBoy模拟器服务器 史密瑟里:

npx -y @smithery/cli install @mario-andreschak/mcp-gameboy --client claude

安装在 流动

  1. 单击添加服务器
  2. 将GitHub URL复制并粘贴到流中
  3. 单击解析、克隆、安装、构建和保存。

手动安装

# Clone the repository
git clone https://github.com/yourusername/mcp-gameboy.git
cd mcp-gameboy

# Install dependencies
npm install

# Build the project
npm run build

通过配置文件安装

!! 注意 :许多MCP客户端要求将.env变量中的ROM路径指定为 绝对路径

要通过配置文件将此MCP服务器与Cline或其他MCP客户端集成:

  1. 打开您的Cline设置:

    • 在VS Code中,转到文件->首选项->设置
    • 搜索“临床MCP设置”
    • 点击“在settings.json中编辑”
  2. 将服务器配置添加到 mcpServers 对象:

    {
      "mcpServers": {
        "mcp-gameboy": {
          "command": "node",
          "args": [
            "/path/to/mcp-gameboy/dist/index.js"
          ],
          "disabled": false,
          "autoApprove": []
        }
      }
    }
    
  3. 替换 /path/to/mcp-gameboy/dist/index.js 与实际路径 index.js 项目目录中的文件。在Windows上对路径使用正斜杠(/)或双反斜杠(\\)。

  4. 保存设置文件。Cline应自动连接到服务器。

用法

环境变量

!! 注意 :许多MCP客户端要求将.env变量中的ROM路径指定为 绝对路径

创建一个 .env 根目录中的文件,包含以下变量:

# Server configuration
PORT=3001

# ROM path for stdio mode
ROM_PATH=./roms/dangan.gb

在stdio模式下运行

在stdio模式下,服务器使用在 ROM_PATH 环境变量。它将打开一个浏览器窗口来显示GameBoy屏幕。

npm run start

在SSE模式下运行

在SSE模式下,服务器启动一个Express服务器,为ROM选择提供网页。

npm run start-sse

然后打开浏览器 http://localhost:3001 选择ROM。

工具

服务器提供以下工具:

  • press_up:按下GameBoy上的UP按钮
  • press_down:按下GameBoy上的向下按钮
  • press_left:按下GameBoy上的左键
  • press_right:按GameBoy上的右键
  • press_a:按下GameBoy上的A按钮
  • press_b:按下GameBoy上的B按钮
  • press_start:按下GameBoy上的“开始”按钮
  • press_select:按下GameBoy上的“选择”按钮
  • load_rom:加载GameBoy ROM文件
  • get_screen:获取当前GameBoy屏幕

所有工具都返回具有最新屏幕框架的ImageContent。

实现细节

此服务器是使用模型上下文协议(MCP)TypeScript SDK构建的。它使用:

  • McpServer 从 @modelcontextprotocol/sdk/server/mcp.js 用于服务器实现
  • StdioServerTransport 从 @modelcontextprotocol/sdk/server/stdio.js 用于stdio传输
  • SSEServerTransport 从 @modelcontextprotocol/sdk/server/sse.js SSE 运输
  • serverboy 用于GameBoy模拟
  • express 对于处于SSE模式的web服务器
  • canvas 用于渲染GameBoy屏幕

许可证

麻省理工学院