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
Быстрый старт
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 installed
Maintenance
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
Driflyte MCP server which lets AI assistants query topic-specific knowledge from web and GitHub.
MCP server for Wan AI video generation
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/fjxyyzg3/renderdoc-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server