renderdoc-mcp
renderdoc-mcp
$\Large\color{#ff69b4}{\textsf{Este es un proyecto personal }}$ $\Large\color{#ff69b4}{\mathtt{✨ vibe\text{-}coding ✨}}$ $\Large\color{#ff69b4}{\textsf{—}}$ $\Large\color{#ff69b4}{\textsf{hecho por diversión, no para uso en producción.}}$
$\small\color{gray}{\textsf{No tengo idea de por qué este repo tiene tantas estrellas...}}$
Servidor MCP para RenderDoc: permite que los asistentes de IA analicen capturas de frames de GPU (archivos .rdc) para depuración gráfica y análisis de rendimiento.
Construido sobre el Model Context Protocol, funciona con Claude Desktop, Claude Code y cualquier cliente compatible con MCP.
Características
42 herramientas que cubren el flujo de trabajo completo de análisis de RenderDoc
10 herramientas de alto nivel para análisis con una sola llamada (estado de draw call, resumen de frame, diff, exportación por lotes, muestreo de regiones de píxeles, etc.)
3 prompts integrados para depuración guiada
Salida legible para humanos: modos de blend, funciones de profundidad, topología mostradas como nombres, no como números
Detección de peculiaridades de GPU: identifica automáticamente problemas específicos de Adreno/Mali/PowerVR/Apple a partir del nombre del driver
Headless: no se necesita GUI, se ejecuta completamente mediante la API de replay de Python de RenderDoc
Python puro: un solo
pip install, sin paso de compilaciónCompatible con capturas D3D11, D3D12, OpenGL, Vulkan, OpenGL ES
Inicio rápido
1. Requisitos previos
Python 3.10+
RenderDoc instalado (descarga)
Necesitas el módulo de Python
renderdoc.pyd(Windows) orenderdoc.so(Linux)Se incluye con cada instalación de RenderDoc
2. Instalación
git clone https://github.com/Linkingooo/renderdoc-mcp.git
cd renderdoc-mcp
pip install -e .3. Encuentra la ruta de tu renderdoc.pyd
El módulo de Python está en tu directorio de instalación de RenderDoc:
Plataforma | Ruta típica |
Windows |
|
Linux |
|
Necesitas el directorio que contiene este archivo.
4. Configura tu cliente MCP
Edita claude_desktop_config.json (Configuración → Desarrollador → Editar configuración):
{
"mcpServers": {
"renderdoc": {
"command": "python",
"args": ["-m", "renderdoc_mcp"],
"env": {
"RENDERDOC_MODULE_PATH": "C:\\Program Files\\RenderDoc"
}
}
}
}Añade a .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_mcpEjemplos de uso
Una vez configurado, solo habla con tu asistente de IA:
"Abre
frame.rdcy muéstrame qué está pasando en el frame"
"Encuentra el draw call que renderiza el modelo del personaje y comprueba su estado de pipeline"
"¿Por qué mi shadow map se renderiza en negro? Comprueba el pase de profundidad"
"Analiza el rendimiento: ¿hay draw calls redundantes?"
Flujo de herramientas típico
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 upPara análisis de rendimiento y diagnóstico:
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 checkPara inspección de bajo nivel, todas las herramientas granulares siguen disponibles:
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 textureHerramientas
Gestión de sesión (4)
Herramienta | Descripción |
| Abre un archivo |
| Cierra la captura actual y libera recursos |
| Metadatos de la captura: API, número de acciones, resolución, known_gpu_quirks (Adreno/Mali/PowerVR/Apple) |
| Estadísticas a nivel de frame: recuento de acciones por tipo, memoria de texturas/buffers, render targets, resolución |
Navegación de eventos (5)
Herramienta | Descripción |
| Lista el árbol de draw calls / acciones: admite |
| Detalle completo de una sola acción |
| Navega a un evento (requerido antes de consultas de pipeline) |
| Busca por patrón de nombre y/o flags de acción |
| Busca draw calls por estado de renderizado: blend, vértices mínimos, vinculación de textura/shader/RT |
Inspección de pipeline (4)
Herramienta | Descripción |
| Estado completo: topología, viewports, rasterizer, blend, profundidad, stencil (enums legibles) |
| Constant buffers, SRVs, UAVs, samplers para una etapa de shader |
| Atributos de vértice, vinculaciones de vertex/index buffer |
| Análisis de draw en una llamada: información de acción, fórmula de blend, profundidad, stencil, rasterizer, texturas con tamaños, RTs, shaders |
Análisis de recursos (4)
Herramienta | Descripción |
| Todas las texturas (filtrable por formato, ancho mínimo) |
| Todos los buffers (filtrable por tamaño mínimo) |
| Todos los recursos nombrados (filtrable por tipo, patrón de nombre) |
| Qué eventos leen/escriben un recurso |
Extracción de datos (8)
Herramienta | Descripción |
| Exporta a PNG, JPG, BMP, TGA, HDR, EXR o DDS |
| Lee bytes del buffer (volcado hexadecimal o array float32) |
| Valor RGBA en una coordenada |
| Mín/máx/promedio por canal con detección de anomalías (NaN/Inf/negativos); admite |
| Lee una región rectangular de píxeles (hasta 64×64) con flags de anomalía por píxel |
| Exportación por lotes de todas las texturas vinculadas a un draw call (nombres automáticos, omite placeholders) |
| Guarda una instantánea del RT en un evento (color + profundidad opcional) |
| Exporta la malla como OBJ con posiciones, normales, UVs a partir de datos post-VS |
Análisis de shaders (3)
Herramienta | Descripción |
| Desensamblado de shader con cadena de fallback automática; admite |
| Firmas de entrada/salida, diseño de vinculación de recursos |
| Valores reales de las variables del constant buffer; admite |
Avanzado (6)
Herramienta | Descripción |
| Historial completo de modificaciones por píxel en todos los eventos |
| Datos de vértices post-transformación (VS out / GS out) |
| Compara dos draw calls: muestra diferencias de estado con implicaciones legibles |
| Detecta automáticamente los límites de los render passes mediante cambios de Clear/RT, resume cada pase |
| Escaneo de cuadrícula uniforme de una región de RT: detecta puntos críticos NaN/Inf/negativos/sobreexpuestos |
| Depuración de shader por píxel: devuelve traza de variables o valor de píxel + información del shader como fallback |
Análisis de rendimiento (4)
Herramienta | Descripción |
| Los render passes más costosos: usa contadores de GPU si están disponibles, con fallback a heurística de recuento de triángulos |
| Estimación de overdraw por grupo de render targets |
| Estimación de ancho de banda de escritura/lectura por render target |
| Encuentra patrones redundantes de cambios de estado y oportunidades de batching |
Diagnósticos (4)
Herramienta | Descripción |
| Escanea todos los RTs float en busca de negativos/NaN/Inf: encuentra el primer evento que los introduce, detecta acumulación de TAA |
| Comprueba pérdida de bit de signo en R11G11B10, depth buffers poco profundos, desajustes SRGB/lineal |
| Compara los pases de reflexión con los draws de la escena principal: encuentra causas de shader/blend/formato |
| Comprobación exhaustiva en categorías de riesgo de precisión / rendimiento / compatibilidad / específicas de GPU |
Prompts
Plantillas de prompt integradas para guiar a la IA en flujos de trabajo comunes:
Prompt | Descripción |
| Análisis profundo de un solo draw call: pipeline → shaders → cbuffers → salidas |
| Diagnóstico sistemático a partir de una descripción del problema |
| Análisis de rendimiento de todo el frame: tiempos de pase, overdraw, ancho de banda, cambios de estado |
Cómo funciona
AI Assistant ←—MCP—→ renderdoc-mcp server ←—Python API—→ renderdoc.pyd ←→ GPU replayEl servidor usa la API de replay headless de RenderDoc (renderdoc.pyd) para:
Abrir archivos de captura
.rdcsin la GUIReproducir frames y consultar el estado del pipeline en cualquier evento
Extraer texturas, buffers, datos de shaders e historial de píxeles
Devolver JSON estructurado para que la IA pueda razonar sobre él
Desarrollo
# 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_risksLicencia
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