renderdoc-mcp
renderdoc-mcp
$\Large\color{#ff69b4}{\textsf{Это личный }}$ $\Large\color{#ff69b4}{\mathtt{✨ vibe\text{-}coding ✨}}$ $\Large\color{#ff69b4}{\textsf{проект —}}$ $\Large\color{#ff69b4}{\textsf{создан ради фана, а не для использования в продакшене.}}$
$\small\color{gray}{\textsf{Понятия не имею, почему у этого репозитория столько звёзд...}}$
MCP-сервер для RenderDoc — позволяет ИИ-ассистентам анализировать захваты кадров GPU (файлы .rdc) для отладки графики и анализа производительности.
Построен на Model Context Protocol, работает с Claude Desktop, Claude Code и любым MCP-совместимым клиентом.
Возможности
42 инструмента, покрывающих весь рабочий процесс анализа RenderDoc
10 высокоуровневых инструментов для анализа одним вызовом (состояние draw call, обзор кадра, diff, пакетный экспорт, сэмплирование области пикселей и т.д.)
3 встроенных промпта для управляемой отладки
Человекочитаемый вывод — режимы смешивания, функции глубины, топология отображаются именами, а не числами
Обнаружение особенностей GPU — автоматически выявляет подводные камни, характерные для Adreno/Mali/PowerVR/Apple, по имени драйвера
Headless — графический интерфейс не нужен, всё работает через Python replay API RenderDoc
Чистый Python — одна команда
pip install, без этапа сборкиПоддерживает захваты D3D11, D3D12, OpenGL, Vulkan, OpenGL ES
Related MCP server: RenderDoc MCP Server
Быстрый старт
1. Предварительные требования
Python 3.10+
Установленный RenderDoc (скачать)
Понадобится Python-модуль
renderdoc.pyd(Windows) илиrenderdoc.so(Linux)Он поставляется с каждой установкой RenderDoc
2. Установка
git clone https://github.com/Linkingooo/renderdoc-mcp.git
cd renderdoc-mcp
pip install -e .3. Найдите путь к renderdoc.pyd
Python-модуль находится в каталоге установки RenderDoc:
Платформа | Типичный путь |
Windows |
|
Linux |
|
Вам нужен каталог, содержащий этот файл.
4. Настройте MCP-клиент
Отредактируйте claude_desktop_config.json (Настройки → Разработчик → Изменить конфигурацию):
{
"mcpServers": {
"renderdoc": {
"command": "python",
"args": ["-m", "renderdoc_mcp"],
"env": {
"RENDERDOC_MODULE_PATH": "C:\\Program Files\\RenderDoc"
}
}
}
}Добавьте в .claude/settings.json:
{
"mcpServers": {
"renderdoc": {
"command": "python",
"args": ["-m", "renderdoc_mcp"],
"env": {
"RENDERDOC_MODULE_PATH": "C:\\Program Files\\RenderDoc"
}
}
}
}# Set the module path
export RENDERDOC_MODULE_PATH="/path/to/renderdoc" # Linux/macOS
set RENDERDOC_MODULE_PATH=C:\Program Files\RenderDoc # Windows
# Run
python -m renderdoc_mcpПримеры использования
После настройки просто общайтесь со своим ИИ-ассистентом:
«Открой
frame.rdcи покажи, что происходит в кадре»
«Найди draw call, который рендерит модель персонажа, и проверь состояние его конвейера»
«Почему моя карта теней рендерится чёрной? Проверь проход глубины»
«Проанализируй производительность — есть ли избыточные draw call'ы?»
Типичный порядок работы с инструментами
open_capture("frame.rdc") # Load the capture
├── get_capture_info() # API, GPU, known_gpu_quirks
├── get_frame_overview() # Frame-level stats and render passes
├── get_draw_call_state(142) # Complete draw call state in one call
├── diff_draw_calls(140, 142) # Compare two draw calls (with implications)
├── export_draw_textures(142, "./tex/") # Batch export all bound textures
├── save_render_target(142, "./rt.png") # Save render target snapshot
├── analyze_render_passes() # Auto-detect render pass boundaries
├── find_draws(blend=True, min_vertices=1000) # Search by rendering state
├── sample_pixel_region(rt_id, 0,0,512,512) # Scan RT region for NaN/Inf/negatives
├── pixel_history(id, 512, 384) # Debug a specific pixel
├── export_mesh(142, "./mesh.obj") # Export mesh as OBJ
└── close_capture() # Clean upДля анализа производительности и диагностики:
get_pass_timing(granularity="pass") # Find most expensive render passes
analyze_overdraw() # Fill-rate pressure estimate
analyze_bandwidth() # Memory bandwidth estimate
analyze_state_changes() # Batching opportunities
diagnose_negative_values() # Find NaN/Inf/negative color values (爆闪)
diagnose_precision_issues() # R11G11B10, D16, SRGB mismatches
diagnose_reflection_mismatch() # Reflection artifact diagnosis
diagnose_mobile_risks() # Comprehensive mobile GPU risk checkДля низкоуровневого исследования все детальные инструменты остаются доступны:
set_event(142) # Navigate to a draw call
├── get_pipeline_state() # Inspect rasterizer/blend/depth
├── get_shader_bindings("pixel") # Check what textures/buffers are bound
├── get_cbuffer_contents("pixel", 0, filter="ibl") # Read shader constants (filterable)
├── disassemble_shader("pixel", search="SampleSH") # Shader code with context search
└── save_texture(id, "rt.png") # Export a specific textureИнструменты
Управление сессией (4)
Инструмент | Описание |
| Открыть файл |
| Закрыть текущий захват и освободить ресурсы |
| Метаданные захвата: API, количество действий, разрешение, known_gpu_quirks (Adreno/Mali/PowerVR/Apple) |
| Статистика уровня кадра: количество действий по типам, память текстур/буферов, цели рендеринга, разрешение |
Навигация по событиям (5)
Инструмент | Описание |
| Вывести дерево draw call'ов / действий — поддерживает |
| Полная информация об одном действии |
| Перейти к событию (обязательно перед запросами к конвейеру) |
| Поиск по шаблону имени и/или флагам действий |
| Поиск draw call'ов по состоянию рендеринга: смешивание, минимальное число вершин, привязка текстур/шейдеров/RT |
Проверка конвейера (4)
Инструмент | Описание |
| Полное состояние: топология, viewport'ы, растеризатор, смешивание, глубина, трафарет (человекочитаемые перечисления) |
| Константные буферы, SRV, UAV, сэмплеры для шейдерной стадии |
| Вершинные атрибуты, привязки вершинных/индексных буферов |
| Анализ draw call одним вызовом: информация о действии, формула смешивания, глубина, трафарет, растеризатор, текстуры с размерами, RT, шейдеры |
Анализ ресурсов (4)
Инструмент | Описание |
| Все текстуры (с фильтром по формату и минимальной ширине) |
| Все буферы (с фильтром по минимальному размеру) |
| Все именованные ресурсы (с фильтром по типу и шаблону имени) |
| Какие события читают/записывают ресурс |
Извлечение данных (8)
Инструмент | Описание |
| Экспорт в PNG, JPG, BMP, TGA, HDR, EXR или DDS |
| Чтение байтов буфера (hex-дамп или массив float32) |
| Значение RGBA по координате |
| Мин/макс/среднее по каналам с обнаружением аномалий (NaN/Inf/отрицательные); поддерживает |
| Чтение прямоугольной области пикселей (до 64×64) с флагами аномалий для каждого пикселя |
| Пакетный экспорт всех текстур, привязанных к draw call (автоназвания, пропускает текстуры-заглушки) |
| Снимок RT в событии (цвет + опционально глубина) |
| Экспорт меша в OBJ с позициями, нормалями и UV из данных post-VS |
Анализ шейдеров (3)
Инструмент | Описание |
| Дизассемблирование шейдера с автоматической цепочкой запасных вариантов; поддерживает |
| Сигнатуры входов/выходов, раскладка привязки ресурсов |
| Фактические значения переменных константного буфера; поддерживает |
Продвинутые (6)
Инструмент | Описание |
| Полная история изменений каждого пикселя по всем событиям |
| Вершинные данные после трансформации (выход VS / выход GS) |
| Сравнение двух draw call'ов — показывает различия состояния с человекочитаемыми пояснениями |
| Автоопределение границ render pass по переключениям Clear/RT, сводка по каждому проходу |
| Сканирование области RT по равномерной сетке — обнаруживает очаги NaN/Inf/отрицательных/переэкспонированных значений |
| Попиксельная отладка шейдера — возвращает трассировку переменных или значение пикселя + информацию о шейдере как запасной вариант |
Анализ производительности (4)
Инструмент | Описание |
| Самые дорогие render pass'ы — использует счётчики GPU, если доступны, иначе эвристику по количеству треугольников |
| Оценка overdraw для каждой группы целей рендеринга |
| Оценка пропускной способности записи/чтения для каждой цели рендеринга |
| Находит избыточные смены состояния и возможности для батчинга |
Диагностика (4)
Инструмент | Описание |
| Сканирует все float-цели рендеринга на отрицательные значения/NaN/Inf — находит первое событие, которое их вносит, обнаруживает накопление TAA |
| Проверяет потерю знакового бита R11G11B10, недостаточно точные буферы глубины, несоответствия SRGB/линейного пространства |
| Сравнивает проходы отражений с отрисовкой основной сцены — находит причины в шейдере/смешивании/формате |
| Комплексная проверка по категориям рисков: точность / производительность / совместимость / GPU-специфичные |
Промпты
Встроенные шаблоны промптов, направляющие ИИ в типовых рабочих процессах:
Промпт | Описание |
| Глубокий разбор одного draw call: конвейер → шейдеры → cbuffer'ы → выходные данные |
| Систематическая диагностика по описанию проблемы |
| Анализ производительности всего кадра: тайминги проходов, overdraw, пропускная способность, смены состояния |
Как это работает
AI Assistant ←—MCP—→ renderdoc-mcp server ←—Python API—→ renderdoc.pyd ←→ GPU replayСервер использует headless replay API RenderDoc (renderdoc.pyd) для:
Открытия файлов захвата
.rdcбез графического интерфейсаВоспроизведения кадров и запроса состояния конвейера в любом событии
Извлечения текстур, буферов, данных шейдеров и истории пикселей
Возврата структурированного JSON для анализа ИИ
Разработка
# Install in dev mode
pip install -e .
# Run tests (no RenderDoc needed — uses mocks)
python -m pytest tests/ -v
# Project structure
src/renderdoc_mcp/
├── server.py # FastMCP server, 3 prompt definitions
├── session.py # Capture lifecycle, resource/texture caches (singleton)
├── util.py # Serialization, enum maps, blend formula, module loader
└── tools/
├── session_tools.py # open/close/info (GPU quirks) + get_frame_overview
├── event_tools.py # list/get/set/search actions + find_draws
├── pipeline_tools.py # pipeline state, shader bindings, vertex inputs + get_draw_call_state
├── resource_tools.py # texture/buffer/resource enumeration
├── data_tools.py # save/read/pick/stats + read_texture_pixels + export_draw_textures, save_render_target, export_mesh
├── shader_tools.py # disassembly (fallback chain, search), reflection, cbuffer contents (filter)
├── advanced_tools.py # pixel history, post-VS data + diff_draw_calls (implications), analyze_render_passes, sample_pixel_region, debug_shader_at_pixel
├── performance_tools.py # get_pass_timing, analyze_overdraw, analyze_bandwidth, analyze_state_changes
└── diagnostic_tools.py # diagnose_negative_values, diagnose_precision_issues, diagnose_reflection_mismatch, diagnose_mobile_risksЛицензия
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP server for building and testing AI agents with multi-model experimentation and insights.
MCP server for Sentry - error monitoring, issue tracking, and debugging for AI assistants
Driflyte MCP server which lets AI assistants query topic-specific knowledge from web and GitHub.
MCP server for Wan AI video generation
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to analyze RenderDoc GPU frame captures for graphics debugging and performance analysis through a headless Python API. It provides a comprehensive suite of tools for inspecting pipeline states, shader bindings, and exporting frame resources like textures and meshes.166-
- AlicenseAqualityNot gradedmaintenanceEnables AI assistants to analyze and inspect RenderDoc capture files, providing tools to examine draw calls, textures, buffers, and shader information. It allows developers to perform graphics debugging and resource analysis through natural language interactions.12MIT
- AlicenseNot gradedqualityDmaintenanceExposes RenderDoc capture analysis to AI clients via MCP, enabling offline analysis of .rdc files (action tree, pipeline state, textures, shaders) and GUI state interaction on Windows.2MIT
- 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-