Skip to main content
Glama

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

C:\Program Files\RenderDoc\renderdoc.pyd

Linux

/usr/lib/renderdoc/librenderdoc.so или там, где вы его собрали

Вам нужен каталог, содержащий этот файл.

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)

Инструмент

Описание

open_capture

Открыть файл .rdc (автоматически закрывает предыдущий)

close_capture

Закрыть текущий захват и освободить ресурсы

get_capture_info

Метаданные захвата: API, количество действий, разрешение, known_gpu_quirks (Adreno/Mali/PowerVR/Apple)

get_frame_overview

Статистика уровня кадра: количество действий по типам, память текстур/буферов, цели рендеринга, разрешение

Навигация по событиям (5)

Инструмент

Описание

list_actions

Вывести дерево draw call'ов / действий — поддерживает filter (подстрока имени) и event_type (draw/clear/copy…)

get_action

Полная информация об одном действии

set_event

Перейти к событию (обязательно перед запросами к конвейеру)

search_actions

Поиск по шаблону имени и/или флагам действий

find_draws

Поиск draw call'ов по состоянию рендеринга: смешивание, минимальное число вершин, привязка текстур/шейдеров/RT

Проверка конвейера (4)

Инструмент

Описание

get_pipeline_state

Полное состояние: топология, viewport'ы, растеризатор, смешивание, глубина, трафарет (человекочитаемые перечисления)

get_shader_bindings

Константные буферы, SRV, UAV, сэмплеры для шейдерной стадии

get_vertex_inputs

Вершинные атрибуты, привязки вершинных/индексных буферов

get_draw_call_state

Анализ draw call одним вызовом: информация о действии, формула смешивания, глубина, трафарет, растеризатор, текстуры с размерами, RT, шейдеры

Анализ ресурсов (4)

Инструмент

Описание

list_textures

Все текстуры (с фильтром по формату и минимальной ширине)

list_buffers

Все буферы (с фильтром по минимальному размеру)

list_resources

Все именованные ресурсы (с фильтром по типу и шаблону имени)

get_resource_usage

Какие события читают/записывают ресурс

Извлечение данных (8)

Инструмент

Описание

save_texture

Экспорт в PNG, JPG, BMP, TGA, HDR, EXR или DDS

get_buffer_data

Чтение байтов буфера (hex-дамп или массив float32)

pick_pixel

Значение RGBA по координате

get_texture_stats

Мин/макс/среднее по каналам с обнаружением аномалий (NaN/Inf/отрицательные); поддерживает all_slices для cubemap'ов

read_texture_pixels

Чтение прямоугольной области пикселей (до 64×64) с флагами аномалий для каждого пикселя

export_draw_textures

Пакетный экспорт всех текстур, привязанных к draw call (автоназвания, пропускает текстуры-заглушки)

save_render_target

Снимок RT в событии (цвет + опционально глубина)

export_mesh

Экспорт меша в OBJ с позициями, нормалями и UV из данных post-VS

Анализ шейдеров (3)

Инструмент

Описание

disassemble_shader

Дизассемблирование шейдера с автоматической цепочкой запасных вариантов; поддерживает search (ключевое слово + контекст) и line_range

get_shader_reflection

Сигнатуры входов/выходов, раскладка привязки ресурсов

get_cbuffer_contents

Фактические значения переменных константного буфера; поддерживает filter по подстроке имени переменной

Продвинутые (6)

Инструмент

Описание

pixel_history

Полная история изменений каждого пикселя по всем событиям

get_post_vs_data

Вершинные данные после трансформации (выход VS / выход GS)

diff_draw_calls

Сравнение двух draw call'ов — показывает различия состояния с человекочитаемыми пояснениями

analyze_render_passes

Автоопределение границ render pass по переключениям Clear/RT, сводка по каждому проходу

sample_pixel_region

Сканирование области RT по равномерной сетке — обнаруживает очаги NaN/Inf/отрицательных/переэкспонированных значений

debug_shader_at_pixel

Попиксельная отладка шейдера — возвращает трассировку переменных или значение пикселя + информацию о шейдере как запасной вариант

Анализ производительности (4)

Инструмент

Описание

get_pass_timing

Самые дорогие render pass'ы — использует счётчики GPU, если доступны, иначе эвристику по количеству треугольников

analyze_overdraw

Оценка overdraw для каждой группы целей рендеринга

analyze_bandwidth

Оценка пропускной способности записи/чтения для каждой цели рендеринга

analyze_state_changes

Находит избыточные смены состояния и возможности для батчинга

Диагностика (4)

Инструмент

Описание

diagnose_negative_values

Сканирует все float-цели рендеринга на отрицательные значения/NaN/Inf — находит первое событие, которое их вносит, обнаруживает накопление TAA

diagnose_precision_issues

Проверяет потерю знакового бита R11G11B10, недостаточно точные буферы глубины, несоответствия SRGB/линейного пространства

diagnose_reflection_mismatch

Сравнивает проходы отражений с отрисовкой основной сцены — находит причины в шейдере/смешивании/формате

diagnose_mobile_risks

Комплексная проверка по категориям рисков: точность / производительность / совместимость / GPU-специфичные

Промпты

Встроенные шаблоны промптов, направляющие ИИ в типовых рабочих процессах:

Промпт

Описание

debug_draw_call

Глубокий разбор одного draw call: конвейер → шейдеры → cbuffer'ы → выходные данные

find_rendering_issue

Систематическая диагностика по описанию проблемы

analyze_performance

Анализ производительности всего кадра: тайминги проходов, overdraw, пропускная способность, смены состояния

Как это работает

AI Assistant ←—MCP—→ renderdoc-mcp server ←—Python API—→ renderdoc.pyd ←→ GPU replay

Сервер использует headless replay API RenderDoc (renderdoc.pyd) для:

  1. Открытия файлов захвата .rdc без графического интерфейса

  2. Воспроизведения кадров и запроса состояния конвейера в любом событии

  3. Извлечения текстур, буферов, данных шейдеров и истории пикселей

  4. Возврата структурированного 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

-
license - not tested
-
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

  • 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…

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/fjxyyzg3/renderdoc-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server