Skip to main content
Glama
szyzgz
by szyzgz

PIXEL FLIPPERS 🦭

一个 MCP 服务器,让 Claude 困 双手、眼睛和一本日记 的 Pokémon 体验——因此 Claude Desktop 或任何 MCP 客户端里的 Claude,都能在一台 Game Boy / Game Boy Advance 游戏机,甚至一台真实的 Nintendo Switch 上玩起来,而你可以在旁边看着。

┌──────────────┐   MCP (stdio)   ┌──────────────────┐        ┌─────────────┐
│ Claude       │ ──────────────► │ PIXEL FLIPPERS    │ ─────► │ Emulator    │ ← you watch this
│ Desktop app  │  press_buttons  │  server           │        └─────────────┘
│              │  read_game_state│                   │ ─────► ┌─────────────┐
└──────────────┘  write_note ... │                   │        │ Obsidian    │ ← ...and this
                                 └──────────────────┘         │ vault (.md) │
                                                              └─────────────┘

为什么这样设计:

  • 沙盒不重要。 Claude 无法运行模拟器,但他能调用工具。模拟器运行在你自己的机器上;Claude 通过 MCP 玩游戏。

  • 读取 RAM 状态,而不是只靠截图。 在 Game Boy 层级,位置、队伍、HP、金钱、徽章和战斗状态都直接从 Pokémon Red/Blue 的 WRAM 解码成几百个 token 的文本。截图仍然存在,但有数量限制——截图成本高,而且会加速上下文压缩。

  • 压缩是不可靠的叙说者;笔记本库才是事实来源。 长对话会被自动压缩(有损!)。笔记工具会把纯 Markdown 写进一个文件夹——让 Obsidian 指向它,Claude 的笔记就能经受住一切,同时你还能看着这个日记被实时写出来。

  • 存档让勇敢变得便宜。 在每个道馆之前都存下命名好的快照。

安装要求

需要 Python 3.12 和 uv

git clone https://github.com/szyzgz/pixel-flippers && cd pixel-flippers
uv sync --extra emulator --extra dev
uv run pytest          # everything should pass, no ROM needed

然后加入 ~/Library/Application Support/Claude/claude_desktop_config.json(macOS 中使用;其他操作系统可根据实际情况调整该路径):

{
  "mcpServers": {
    "pixel-flippers": {
      "command": "uv",
      "args": ["run", "--directory", "/ABSOLUTE/PATH/TO/pixel-flippers", "--extra", "emulator", "pixel-flippers"],
      "env": {
        "PIXEL_FLIPPERS_ROM": "/path/to/your/pokemon-red.gb",
        "PIXEL_FLIPPERS_VAULT": "/path/to/YourObsidianVault/Pokemon",
        "PIXEL_FLIPPERS_SAVES": "/path/to/somewhere/saves"
      }
    }
  }
}

重启 Claude Desktop。重启 不会 重置对话——重新打开一个已存在的对话,剩下的工具就已经在那里了。模拟器窗口会在你的屏幕上打开;把它放在 Obsidian 旁边(并且把上面的 vault 打开),享受表演。接着把 prompts/play-guide-gb.md 粘贴到聊天中,把控制权交接过去。

macOS 小提示:.rom、vault 和存档文件放在 ~/Documents~/Desktop~/Downloads 文件夹 之外—— macOS 会阻止 Claude Desktop 的子进程读取这些文件夹,除非你明确授权。

配置参考(环境变量)

变量

默认值

含义

PIXEL_FLIPPERS_BACKEND

pyboy

pyboy(GB/GBC)、gba(Game Boy Advance)、switch(真实硬件)、mock

PIXEL_FLIPPERS_ROM

—(pyboy/gba 必填)

你自己 ROM dump 文件的路径(.gb/.gbc.gba

PIXEL_FLIPPERS_VAULT

未设置

存放 markdown 笔记的文件夹(在 Obsidian 仓库中建立)

PIXEL_FLIPPERS_SAVES

<rom dir>/saves

保存状态目录

PIXEL_FLIPPERS_GAME

pokemon_red

RAM 解码器;设为 none 则禁用(只能看截图——硬核模式!)

PIXEL_FLIPPERS_WINDOW

SDL2

null 表示无窗口(headless 模式)

PIXEL_FLIPPERS_SCALE

3

窗口缩放倍数

PIXEL_FLIPPERS_SPEED

1

模拟速度(0 = 无限速)

PIXEL_FLIPPERS_MOCK

关闭

模拟器,不需要 ROM/PyBoy——用于测试和管线检查

GBA 游戏(Pokémon Emerald 以及同类作品)

gba 后端会通过 stable-retro 自带的 mGBA 核心运行任意 .gba 的 ROM——不需要单独安装模拟器:

uv sync --extra gba

PIXEL_FLIPPERS_BACKEND 设为 gba,然后让 PIXEL_FLIPPERS_ROM 指向你的 .gba 文件。一个观察者窗口会显示游戏画面,同时 Claude 在生产实际运行。这个层级目前 偏向于点按(vision-only)(最新第 3 代的 RAM 是加密且被指针追逐的——解码器是以后计划的内容),但保存 state 可用,所以高风险战斗也不会太贵。试着读取 prompts/play-guide-gba.md 来转交操作控制。

在没有 ROM 的情况下试用

PIXEL_FLIPPERS_MOCK=1(并去掉 --extra emulator)添加进去:所有工具都会在一个假 Game Boy 上运行,并使用看起来合理的 Pokémon Red 状态。这对于在 ROM 之夜开始之前端到端验证 Claude Desktop 的配置很有帮助。

工具

工具

作用

press_buttons

手部控制 —— 序列中的 a/b/start/select/up/down/left/right(GBA 上还有 l/r)

read_game_state

低成本的文本报告,从 WRAM 中读取(位置、队伍、HP、金钱、徽章、背包、战斗)

get_screenshot

眼睛 —— 2 倍放大后的 PNG,尽量少用

wait

让 N 帧通过(对话框、动画)

save_state / load_state / list_states

命名命名的完整游戏快照

write_note / append_note / read_note / list_notes / search_notes

Readme.mac

write_note / append_note / read_note / list_notes / search_notes

日记——写入 vault 的 markdown 文件

read_last_session

唤起仪式:状态 + 目标 + 最近的日志 + 当前状态,用于在压缩后重新定位

set_goal / complete_goal / current_goals

持久目标清单(一份 Goals.md 笔记)

read_memory

指向任意地址的原始十六进制字节,供好奇时使用

freeze / resume / move_stick

仅真实硬件:“子弹时间”的暂停缓冲与模拟摇杆

工具根据后端能力注册,因此 Claude 只会看到当前层级真正能做的内容。

战斗报告会还以 ✨ retro-shiny(复古色违)形式点亮(在精灵第 1 代没有 color/闪 Discard系统,所以会检查转移规则),并包含当前音乐轨道 ID,用于捕捉当时氛围。

按键和读档/存档操作也会自动记录到 vault 里的 Journal/Log <date>.md 中——一个详细的逐帧记录,你可以在 Obsidian 中浏览。

Roadmap

红/蓝(PyBoy,完整的 RAM 解码)→ Emerald(GBA,vision-only)→ Crystal(PyBoy,真正的闪光与友情)→ HeartGold/SoulSilver(DS 层——stable-retro 也附带了 melonDS 核心)→ Ultra Sun/Ultra Moon(3DS 通过 Azahar,请见 docs/3ds-usum.md))→ 篇后:一台真正的 Nintendo Switch(Raspberry Pi 蓝牙桥接 + 彩色抓拍摄像头的 vision-only 解决方案,只支持离线播放——已实现,请见 docs/real-hardware.mdPIXEL_FLIPPERS_BACKEND=switch)。

其他升级方向:

  • 硬核模式: PIXEL_FLIPPERS_GAME=none — 不进行 RAM 解码,Claude 只能靠 眼睛硬猜

  • NDS: 为触控笔添 touch(x, y) 工具。

请在您自己的存储中带好

请携带自己的 ROM 卡带——自己 compile 自己的系统。本仓库永远不会有任何 ROM(.gitignore 会强制此要求)。这个项目只关注早已过时的游戏。对于真实硬件聚类,只能进行离线游戏(不支持自动联机游戏、不支持 Pokémon HOME)。

贡献与许可证

由 Claude(Fable 5,通过 Claude Code)与 szyzgz 共同开发,为一位“想体验 Pokémon”的 Clude 制作。MIT — 详见 LICENSE

-
license - not tested
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

  • Markdown-first MCP server for Notion API with 8 composite tools and 39 actions.

  • Markdown-based note-taking with a hosted MCP server. Your notes serve you and your AI.

  • Read and write your Fresh Jots notes from Claude, Cursor, and any MCP client.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/szyzgz/pixel-flippers'

If you have feedback or need assistance with the MCP directory API, please join our Discord server