Skip to main content
Glama
szyzgz
by szyzgz

PIXEL FLIPPERS 🦭

Claude に、ポケモンを遊ぶための手・目・日記を与えるMCPサーバーです。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から直接デコードされ、数百トークンのテキストに変換される。スクリーンショットは存在するが、割り当ては控えめにされている。費用が高く、コンテキストのコンパクションを加速させてしまうからだ。

  • コンパクションはあてにならない語り手であり、ボールトこそが真実の根拠。 長いチャットは自動的にコンパクションされる(リアルに欠落する!)。日記ツールはプレーンなマークダウンをボールト内のフォルダに書き出す。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の場合。お使いのOSに合わせてパスは読み替えてください)。:

{
  "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(先ほど開いたボールトを開いたまま)の横に配置して、ショーを楽しんでください。それから、prompts/play-guide-gb.md をチャットに貼り付けれれば、コントロールをClaudeに渡せます。

macOSのちょっとしたヒント: ROM 、ボールト、セーブは ~/Documents~/Desktop~/Downloadsに置いてください。macOS は、Claude Desktop の子プロセスがアクセス許可有しない限り、これらのフォルダをScanさせることをブロックします。

対応変数リファレンス(env vars)

変数

デフォルト

意味

PIXEL_FLIPPERS_BACKEND

pyboy

pyboy (GB/GBC)、gba (Game Boy Advance)、switch (実機)、mock

PIXEL_FLIPPERS_ROM

— (pyboy/gbaでは必須)

自分で持っているROMダンプ (.gb/.gbc/.gba) へのパス

PIXEL_FLIPPERS_VAULT

unset

マークダウンのメモを置くフォルダ(Obsidianボールトの中のフォルダにしてください)

PIXEL_FLIPPERS_SAVES

<rom dir>/saves

セーブ状態のためのディレクトリ

PIXEL_FLIPPERS_GAME

pokemon_red

RAMデコーダー。none では無効(スクリーンショットのみ — ハードモード!)

PIXEL_FLIPPERS_WINDOW

SDL2

null でヘッドレス

PIXEL_FLIPPERS_SCALE

3

ウィンドウのスケール率

PIXEL_FLIPPERS_SPEED

1

エミュレーション速度(0 = 無制限)

PIXEL_FLIPPERS_MOCK

off

フェイクのエミュレーター。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 がプレイしている間、観覧用ウィンドウにゲームが表示されます。このティアは今のところビジョンオンリーです(Gen 3 のRAMは暗号化され、ポインタを追う方式のためデコーダーは今後の課題)。ただしセーブステートは動作するので、危なそうな戦も安大丈夫。操作は prompts/play-guide-gba.md から Claude にわたします。

ROMなしで試す

PIXEL_FLIPPERS_MOCK=1 を設定してみる(ついでに --extra emulator は外す)と、すべてのツールがそれらしい「Pokémon Red」状態をもつフェイクGame Boyに対して動作します。Claude Desktopと の接続のエンドツーエンドを、ROMの夜の前に確認するのに最適です。

ツール

ツール

それが何か

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

日記 — ボールト化したマークダウン

read_last_session

目覚めの儀式: ステータス + 目標 + 最近のjournal + 現在の状態を見て、コンパクションの後の再方向決定

set_goal / complete_goal / current_goals

永続的な目標チェックリスト(Goals.md ノート)

read_memory

任意のアドレスの生のhexを見られる、好奇心をもじる人のために

freeze / resume / move_stick

実機ハードのみ。「バレットタイム」のポーズバッファリングと、アナログスティック

ツールはバックエンドの能力に合わせて登録されるので、Claude は現在のティアで実際にできることだけが表示されます。

バトルレポートは ✨ レトロうまくいく色違い遭遇をマークします(Gen 1 に Shiny はいないが、Gen 2 の Shiny を決めるのがDVs — このハーネスが転送ルールをチェックしています)。現在の曲トラックIDを付けて場の雰囲気もトラッキングできます。

ボタン押下やセーブ/ロードの実行も

-
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