Game Debug MCP
Game Debug MCP
Дайте вашему ИИ доказательства, а не очередной скриншот.
Game Debug MCP — это открытый, не привязанный к конкретному движку отладчик визуальных эффектов и производительности для разработки игр с участием ИИ. Он превращает сохранённые кадровые буферы, идентификаторы, трассы и подтверждения захвата в детерминированные измерения; проходит по этим наблюдениям в причинно-следственном порядке; определяет самое раннее расхождение, которое может реально доказать; и сообщает агенту, какой минимальный захват уменьшит оставшуюся неопределённость.
Он работает с любым ИИ через доступный только для чтения Model Context Protocol сервер или JSON CLI. Модель предлагает и объясняет; инструмент измеряет и отклоняет неподтверждённые утверждения.
v0.1 — это анализатор доказательств и планировщик захвата. Он не управляет редактором, не запускает игру, не выполняет GPU-нагрузку и не утверждает, что пиксели выглядят хорошо. Адаптеры захвата для движков и графических отладчиков — это следующий слой, а не скрытое обещание в этом релизе.

Почему это существует
ИИ может посмотреть на красивый скриншот и сделать правдоподобное предположение. Дефекты рендеринга обычно требуют более точного вопроса:
Исчезла ли геометрия до затенения, или итоговый цвет стал чёрным позже?
Изменилось ли назначение материала или только его альбедо-вход?
Впервые ли временной артефакт виден в векторах движения, глубине, валидности истории или итоговом цвете?
Улучшение на 3 мс измерено на том же оборудовании и под той же нагрузкой — или это просто две несопоставимые трассы?
Был ли кадр отправлен, завершён, считан обратно, просмотрен или только запрошен?
Game Debug MCP явно обозначает эти границы. Диагноз — это цепочка измерений, а не уверенный абзац без подтверждения.
flowchart LR
A[Game or capture adapter] -->|PNG, NPY, trace JSON, receipts| B[Sealed frame bundle]
B --> C[Deterministic analyzers]
C --> D[First-divergence workflow]
D --> E[MCP-compatible AI host]
D --> F[JSON CLI or CI]
D --> G[Self-contained HTML report]
D -->|missing evidence| H[Smallest next-capture plan]Related MCP server: spector-agent-mcp
Что входит в v0.1
Аналитическое ядро на Node.js 20+ без зависимостей времени выполнения.
MCP-сервер только для чтения с 13 инструментами, работающий через стандартный ввод/вывод.
JSON CLI для моделей и автоматизации, не использующих MCP.
Декодирование PNG с проверкой CRC чанков и декодирование NumPy
.npy.Точные SHA-256-печати артефактов плюс каноническая печать целостности манифеста.
Анализ цветовых, скалярных, масочных, категориально-идентификационных, нормальных и векторных буферов.
Попиксельные различия, MAE, RMSE, PSNR только по цвету и тайловый SSIM, первая различающаяся координата, границы различий, переходы ID, угловая ошибка нормалей, маски и тепловые карты. Нефинитные несоответствия делают агрегированные метрики ошибок недействительными вместо того, чтобы давать ложный ноль.
Причинно-следственные рабочие процессы для пустых кадров, отсутствующей геометрии, неверных материалов, плоского освещения, неверных теней, временных дефектов и исследований производительности.
Распределения времени кадра, превышения бюджета, сводки по основным GPU-проходам и сравнения трасс с контролем идентичности.
Синтетические фикстуры для регрессии входа материала и отсутствующей геометрии.
Автономный HTML-отчёт о доказательствах с базовым и кандидатным вариантами, тепловой картой, причинно-следственным проходом, структурированными измерениями и явным состоянием ожидания проверки человеком.
Ядро выполняется локально и не отправляет сетевых запросов.
Быстрый старт
Клонируйте и проверьте исходный код:
git clone https://github.com/theisegoria/game-debug-mcp.git
cd game-debug-mcp
npm install --ignore-scripts
npm run checkСгенерируйте детерминированное демо во временном каталоге:
node bin/game-debug.mjs demo /tmp/game-debug-demoСпросите, где впервые расходится случай с неверным материалом:
node bin/game-debug.mjs diagnose \
baseline-material-shift \
candidate-material-shift \
wrong_material \
--project /tmp/game-debug-demoВажная часть результата:
{
"first_divergence": {
"semantic": "albedo",
"workflow_position": 3,
"pixel": {
"x": 32,
"y": 14
}
},
"confidence": "bounded_first_divergence",
"next_observation": null
}Создайте отчёт для просмотра:
node bin/game-debug.mjs report \
baseline-material-shift \
candidate-material-shift \
wrong_material \
--out /tmp/material-report.html \
--project /tmp/game-debug-demoДемо — синтетическое. Оно проверяет рабочий процесс продукта без запуска движка или GPU-задачи.
Подключение ИИ-хоста
У каждого MCP-совместимого хоста свой способ конфигурации. Базовая команда выглядит так:
node /absolute/path/to/game-debug-mcp/bin/game-debug-mcp.mjs \
--project /absolute/path/to/your-gameРаспространённая форма MCP-конфигурации выглядит так:
{
"mcpServers": {
"game-debug": {
"command": "node",
"args": [
"/absolute/path/to/game-debug-mcp/bin/game-debug-mcp.mjs",
"--project",
"/absolute/path/to/your-game"
]
}
}
}Корень проекта фиксируется при запуске сервера. Отдельные MCP-вызовы не могут передавать путь или команду. Разумная первая инструкция агенту:
Начните с
get_project_status. Считайте анализ сохранённых артефактов, отправку GPU, завершение GPU, считывание пикселей, производительность и визуальное одобрение человеком отдельными осями доказательств. Используйтеplan_capture, когда отсутствует причинно-следственное наблюдение.
Для агента без MCP запустите CLI и используйте его JSON-вывод. Контракт измерений тот же.
13 MCP-инструментов
Tool | Purpose |
| Подсчитывает бандлы, комплекты, объявленные оси доказательств и свойства безопасности. |
| Обнаруживает стандартные семантики, рабочие процессы и оси доказательств. |
| Находит доказательства по стабильным идентификаторам комплекта, набора и кейса. |
| Читает манифест, не подразумевая, что хеши были перепроверены. |
| Пересчитывает хеши всех артефактов и проверяет печать манифеста. |
| Показывает, какие причинно-следственные наблюдения существуют для кадра. |
| Измеряет распределения, недопустимые значения, заполненность, ID, нормали и пустоту. |
| Сравнивает буферы, совместимые по идентичности, с опциональными масками и выборками ID. |
| Проходит по одной симптом-специфичной причинной цепочке и ограничивает первое расхождение. |
| Сопоставляет базовые/кандидатные кейсы и обобщает весь комплект. |
| Измеряет распределения времени кадра, превышения бюджета и основные GPU-проходы. |
| Отклоняет несовпадающие трассы или сообщает совместимую медианную дельту. |
| Запрашивает минимальный упорядоченный набор доказательств для симптома. |
Все 13 содержат MCP-аннотации: только для чтения, неразрушающие, идемпотентные, замкнутого мира. Каталог и его утверждение о соответствии генерируются из одного и того же контракта времени выполнения.
Структура доказательств
Инициализируйте проект:
node /path/to/game-debug-mcp/bin/game-debug.mjs init /path/to/your-gameЭто создаёт:
your-game/
└── .game-debug/
├── config.json
└── evidence/
└── candidate-town-night/
├── manifest.json
├── buffers/
│ ├── beauty.png
│ ├── coverage.npy
│ ├── material_id.npy
│ └── albedo.png
└── trace.jsonМинимальный манифест выглядит так до того, как приём добавит хеши и bundle_seal:
{
"schema": "org.gamedebug.frame_bundle.v1",
"bundle_id": "candidate-town-night",
"suite_id": "lighting-regression",
"set_id": "candidate",
"case_id": "town-night",
"identity": {
"source_revision": "change-under-test",
"workload_id": "town-night-script-v2",
"frame_index": 480,
"backend": "your-backend",
"hardware_id": "your-device-profile",
"width": 1920,
"height": 1080,
"render_scale": 1,
"settings_hash": "quality-profile-v4",
"camera_hash": "camera-pose-17"
},
"buffers": [
{ "semantic": "beauty", "path": "buffers/beauty.png", "color_space": "srgb" },
{ "semantic": "coverage", "path": "buffers/coverage.npy" },
{ "semantic": "material_id", "path": "buffers/material_id.npy" },
{ "semantic": "albedo", "path": "buffers/albedo.png", "color_space": "srgb" }
],
"evidence": {
"gpu_submission": { "status": "unproven" },
"gpu_completion": { "status": "unproven" },
"pixel_readback": { "status": "unproven" },
"performance": { "status": "unproven" },
"human_review": { "status": "unproven" }
}
}Подготовьте этот манифест и его относительные артефакты вне проекта, затем явно примите его через CLI:
node bin/game-debug.mjs ingest /path/to/export/manifest.json --project /path/to/your-gameПриём копирует обычные файлы в новый бандл, вычисляет хеш каждого артефакта и заверяет канонический манифест. Он отказывается заменять существующий бандл.
Полный контракт см. в модели доказательств, а машиночитаемую структуру — в JSON-схемах.
Стандартные семантические буферы
Встроенный каталог включает:
beauty coverage object_id
material_id albedo normal
roughness metalness ao
depth motion direct_light
indirect_light shadow_visibility history_validity
overdraw lod residencyАдаптеры могут добавлять custom.<name> с явным видом. Стабильное значение важнее словаря движка: документируйте единицы измерения, координатное пространство, кодировку, допустимый диапазон и правила идентичности.
PNG полезен для просматриваемых цветовых и закодированных отладочных представлений. NPY сохраняет значения с плавающей точкой и большие категориальные ID без потери при визуализации. Захваченное изображение и аналитический буфер могут сосуществовать в одном бандле. Сравнение цветов требует одного и того же явного color_space на обоих артефактах; v0.1 измеряет объявленное закодированное пространство выборок и не выполняет скрытого преобразования между sRGB, linear, HDR или пользовательскими пространствами.
Как работает диагностика первого расхождения
Каждый симптом сопоставляется с упорядоченным причинно-следственным рабочим процессом. Для wrong_material v0.1 проверяет:
material_id → residency → albedo → normal → roughness → ao → beautyДля каждого доступного наблюдения анализатор:
проверяет идентичность бандла и хеши артефактов, как требует вызов;
декодирует буфер с явными размерами и каналами, затем связывает его размеры с идентичностью содержащего манифеста;
вычисляет детерминированную статистику и инвариантные находки;
сравнивает базовый и кандидатный варианты на одной и той же семантической границе;
записывает первую координату за пределами выбранного порога; и
возвращает самое раннее расходящееся семантическое значение в рабочем процессе.
Если более ранняя семантика отсутствует, результат сообщает, что расхождение наблюдалось, но не ограничено. Если в рабочем процессе нет ни одного расходящегося сохранённого артефакта, он сообщает об этом. Он никогда не заполняет отсутствующий буфер догадкой.
Чем он отличается
Типичный ИИ-инструмент для разработки игр | Game Debug MCP |
Управляет редактором, создаёт объекты, изменяет сцены или выполняет команды. | Анализирует неизменяемые доказательства и планирует следующее наблюдение. |
Даёт модели очередной скриншот для интерпретации. | Даёт ей точные пиксели, ID, распределения, идентичности и хеши. |
Начинает с видимого симптома. | Проходит выше по потоку по промежуточному состоянию, чтобы найти первое наблюдаемое расхождение. |
Сообщает флаг «пройдено/не пройдено». | Возвращает счётчики, координаты, величины ошибок, границы и отсутствующие доказательства. |
Считает захват доказательством того, что рендеринг сработал. | Разделяет отправку, завершение, чтение обратно, производительность и одобрение человеком. |
Привязан к одному движку или одному вендору моделей. | Использует нейтральные к движку семантики, MCP и JSON CLI. |
Требует широких полномочий на файловую систему или выполнение. | Сохраняет MCP-поверхность без путей, без команд и только для чтения. |
Это дополнение к MCP-инструментам управления редактором, а не их замена. Пусть агент редактора вносит изменение; пусть Game Debug MCP проверяет, сдвинулись ли доказательства на ожидаемой границе.
Он также спроектирован для совместной работы с устоявшимися инструментами захвата и инспекции, а не для их переписывания. Потенциальные адаптеры могут переносить данные из RenderDoc, Open Image Debugger, Perfetto, GFXReconstruct, Metal programmatic capture, PIX programmatic capture или Nsight Graphics CLI capture в единый контракт доказательств. Эти адаптеры — работа на будущее; в v0.1 такая интеграция не заявляется.
Безопасность и доверие
MCP-сервер:
только для чтения;
привязан к одному корню проекта при запуске;
предоставляет идентификаторы, а не пути;
отклоняет артефакты с обходом пути и символическими ссылками;
ограничивает байты файла, декодированные элементы, декодированные байты, одновременно сравниваемые байты, уникальные ID, количество бандлов, размер сообщения протокола и размер предпросмотра;
проверяет CRC PNG, размеры полезной нагрузки, SHA-256-дайджесты и печати манифеста; и
никогда не запускает движок, исполняемый файл, отладчик, редактор или GPU-нагрузку.
Целостность — это не подлинность. Печать бандла доказывает, что байты в данный момент соответствуют манифесту; она не доказывает, кто их создал, что GPU завершил их или что человек их одобрил. См. SECURITY.md и docs/EVIDENCE_MODEL.md.
Жёсткие пределы по умолчанию: 64 МиБ на артефакт, 64 МиБ на декодированный тензор, 128 МиБ декодированных тензоров в одном сравнении и 16 МиБ на JSON-файл трассы. Строки трасс и длины идентификаторов имеют отдельные структурные ограничения. Конфигурация проекта может понизить, но не повысить их.
Архитектура
Пакет намеренно состоит из трёх уровней:
Адаптеры захвата экспортируют состояние, специфичное для движка, в публичную схему доказательств. В v0.1 они не поставляются.
Детерминированное ядро загружает, проверяет, измеряет, сравнивает, диагностирует и формирует отчёты. Оно знает семантику, а не движки или модели.
Тонкие интерфейсы предоставляют то же ядро через MCP и JSON CLI.
Эта граница не позволяет багу адаптера превратиться в разрешение на выполнение произвольной работы и не позволяет интеграции, специфичной для конкретной модели, владеть логикой диагностики. Прежде чем добавлять новую интеграцию, прочитайте docs/ARCHITECTURE.md и docs/ADAPTERS.md.
Разработка
CLI-команды, выводящие JSON, принимают --compact для однострочного вывода. Параметры и позиционная арность строгие, поэтому опечатка в пороге или имени набора приводит к ошибке, а не к молчаливому выбору значения по умолчанию.
npm run format:check
npm test
npm run smoke
npm run scan:private
npm run checknpm run smoke запускает только локальный процесс MCP с синтетическими фикстурами. Он не запускает игру или графический API.
Вклад должен включать опровергающую фикстуру, а не только счастливый путь. См. CONTRIBUTING.md.
Дорожная карта
Следующая полезная работа — это широта адаптеров и более сильные форматы изображений, а не больше прозы для агентов:
документированный SDK адаптеров и набор на соответствие;
OpenEXR через опциональную границу декодера с отдельной лицензией;
трансляторы для распространённых инструментов захвата кадров и трассировки;
шаблоны движков для экспорта стандартной семантики;
история наборов и продвижение базовых линий с явным одобрением человека;
подписанные квитанции производителя и усиление удалённого транспорта только для чтения; и
перцептивные метрики, которые остаются детерминированными и локально воспроизводимыми.
См. docs/ROADMAP.md для условий выпуска. Текущие заявления ограничены тем, что проверяют тесты v0.1.
Лицензия
Apache-2.0. См. LICENSE.
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP server for visual regression testing: triage a PR's UI diffs from your coding agent.
Read-only MCP server: let AI agents read your ORANO saved-video library, tasks, and memory.
Read-only MCP server for The Quiet Protocol's engines, benchmarks, proof, and business data.
Read-only MCP server for the OPERANT AI operating-agent calibration benchmark.
Related MCP Servers
- FlicenseBqualityCmaintenanceMCP server for RenderDoc that enables AI assistants to analyze GPU frame captures (.rdc files) for graphics debugging and performance analysis, with 42 tools covering the full RenderDoc workflow.6-
- AlicenseBqualityDmaintenanceAI-first WebGL 1/2 debugging MCP server that attaches to Chrome via CDP, enables frame capture and diagnostic analysis, and collaborates with Chrome DevTools MCP for agent-driven debugging workflows.394 npm1MIT
- AlicenseNot gradedqualityCmaintenanceA read-only MCP server for operator-grade release inspection and benchmark browsing.24 npm1MIT
- AlicenseAqualityCmaintenanceRead-only MCP server for diagnosing Windows crashes, stability, and gaming performance by reading event logs, crash dumps, hardware inventory, performance counters, and registry settings.35MIT