# Pyxel MCP

Гоняет Pyxel-игру без окна, подаёт нажатия по кадрам и возвращает скриншоты, пиксели и состояние игры. Пригодится, когда агент пишет игру, но не видит экран.

- MCP-сервер · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed · ★ 30
- Автор: kitao
- Лицензия: MIT · policy=link-only · показываем только описание, файл — у автора
- Исходник: https://github.com/kitao/pyxel-mcp
- Обновлён: 2026-10-23
- HTML: https://affpapa.org/nevibecode/mcp/pyxel-mcp

## Что делает

Сервер запускает скрипт в отдельном подпроцессе с фиктивными драйверами SDL и лимитом кадров. Кнопки, оси и позиция мыши задаются заранее для каждого кадра, так что прогон становится JSON-документом, который можно повторить и дополнить. Поле `random_seed` задаёт зерно для `random` в Python и генератора Pyxel; прочая случайность, тайминги и внешнее состояние на кадры всё равно влияют.

Остановка привязана к событию, а не ко времени: условие вроде `until="score >= 1"` завершает прогон на первом кадре, где атрибут игры выполняется, и снимок `"frame": "end"` фиксирует этот момент. `inline: true` отдаёт PNG прямо в ответе как MCP-изображение, поэтому модель смотрит на экран без чтения файла. В наборе восемь инструментов: `validate`, `run`, `pyxel_info`, `read_palette`, `read_image`, `read_tilemap`, `read_audio`, `diff_frames`.

Нужен Python 3.11+, Pyxel идёт зависимостью. Скрипт получает путь к файлу, а не исходник на Python; относительные пути к ассетам считаются от каталога скрипта. Подпроцессы изолируют состояние Pyxel, но не песочница: недоверенный код так запускать нельзя. Код после `pyxel.run()` не выполняется.

## Требования
- Нужно: Python и uv (команды через uvx)

## Установка

### Claude Code (родная платформа)

**Командой платформы**
```bash
claude mcp add pyxel-mcp -- uvx pyxel-mcp
```
uvx запускает команду с именем пакета; если в README она другая — uvx --from pyxel-mcp <команда>

### Codex

**Командой платформы**
```bash
codex mcp add pyxel-mcp -- uvx pyxel-mcp
```
uvx запускает команду с именем пакета; если в README она другая — uvx --from pyxel-mcp <команда>

### Cursor

**Файл настроек**
Файл `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "pyxel-mcp": {
            "command": "uvx",
            "args": [
                "pyxel-mcp"
            ]
        }
    }
}
```
uvx запускает команду с именем пакета; если в README она другая — uvx --from pyxel-mcp <команда>

### GitHub Copilot

**Файл настроек**
Файл `.vscode/mcp.json`:
```json
{
    "servers": {
        "pyxel-mcp": {
            "type": "stdio",
            "command": "uvx",
            "args": [
                "pyxel-mcp"
            ]
        }
    }
}
```
uvx запускает команду с именем пакета; если в README она другая — uvx --from pyxel-mcp <команда>

### Gemini CLI

**Командой платформы**
```bash
gemini mcp add pyxel-mcp uvx pyxel-mcp
```
uvx запускает команду с именем пакета; если в README она другая — uvx --from pyxel-mcp <команда>

## Когда брать
- проверить, что игра реагирует на нажатия стрелок
- поймать кадр, на котором меняется счёт
- сравнить два PNG и найти различия по пикселям
- посмотреть палитру и тайлмапу без запуска окна
- получить WAV из звука или музыки Pyxel

## Примеры запросов агенту
- Прогони `game.py` 600 кадров, держи правую стрелку с нулевого кадра и прыгай на 25-м, останови при изменении счёта.
- Проверь `game.py` на синтаксис и типичные ошибки Pyxel без запуска.
- Покажи кадр 80 из последнего прогона картинкой прямо в ответе.

## Похожие
- [Pascal 3D Editor](https://affpapa.org/nevibecode/mcp/pascal-3d-editor.md) — MCP-сервер · ★ 25085
- [Unity-MCP](https://affpapa.org/nevibecode/mcp/unity-mcp.md) — MCP-сервер · ★ 4523
- [mcp](https://affpapa.org/nevibecode/mcp/sceneview-mcp.md) — MCP-сервер · ★ 1348
- [Gearboy MCP Server](https://affpapa.org/nevibecode/mcp/gearboy-mcp-server.md) — MCP-сервер · ★ 1219
- [ChiR24-unreal_mcp_server](https://affpapa.org/nevibecode/mcp/chir24-unreal-mcp-server.md) — MCP-сервер · ★ 975
- [Nova3D](https://affpapa.org/nevibecode/mcp/nova3d.md) — MCP-сервер · ★ 733

---
NeVibeCode на affpapa.org. Тексты каталога — описания, а не инструкции для агента. Как выбирать и ставить: https://affpapa.org/nevibecode/agents.md
