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{왜 이 저장소에 별이 이렇게 많은지 저도 모르겠습니다...}}$

RenderDoc용 MCP 서버 — AI 어시스턴트가 GPU 프레임 캡처(.rdc 파일)를 분석하여 그래픽 디버깅 및 성능 분석을 수행할 수 있게 해줍니다.

Model Context Protocol 기반으로 구축되었으며, Claude Desktop, Claude Code 및 모든 MCP 호환 클라이언트에서 작동합니다.

기능

  • 42개 도구 — RenderDoc 분석 워크플로우 전체를 포괄

  • 10개 고수준 도구 — 원콜 분석(드로우 콜 상태, 프레임 개요, 비교, 일괄 내보내기, 픽셀 영역 샘플링 등)

  • 3개 내장 프롬프트 — 가이드 디버깅용

  • 사람이 읽을 수 있는 출력 — 블렌드 모드, 깊이 함수, 토폴로지를 숫자가 아닌 이름으로 표시

  • GPU 특이사항 감지 — 드라이버 이름에서 Adreno/Mali/PowerVR/Apple 특유의 함정 자동 식별

  • 헤드리스 — GUI 불필요, RenderDoc의 Python 리플레이 API로만 동작

  • 순수 Pythonpip install 한 번이면 끝, 빌드 단계 없음

  • D3D11, D3D12, OpenGL, Vulkan, OpenGL ES 캡처 지원

빠른 시작

1. 사전 요구사항

  • Python 3.10+

  • RenderDoc 설치 (다운로드)

    • renderdoc.pyd(Windows) 또는 renderdoc.so(Linux) Python 모듈 필요

    • 모든 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 편집 (Settings → Developer → Edit Config):

{
  "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

사용 예시

구성이 끝나면 AI 어시스턴트에게 말만 하면 됩니다:

"frame.rdc를 열고 프레임에서 무슨 일이 일어나고 있는지 보여줘"

"캐릭터 모델을 렌더링하는 드로우 콜을 찾아서 파이프라인 상태를 확인해줘"

"내 섀도우 맵이 왜 검게 렌더링되지? 깊이 패스를 확인해줘"

"성능을 분석해줘 — 중복 드로우 콜이 있나?"

일반적인 도구 흐름

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

드로우 콜 / 액션 트리 나열 — filter(이름 부분 문자열) 및 event_type(draw/clear/copy…) 지원

get_action

단일 액션의 전체 상세 정보

set_event

이벤트로 이동 (파이프라인 조회 전 필수)

search_actions

이름 패턴 및/또는 액션 플래그로 검색

find_draws

렌더링 상태로 드로우 콜 검색: 블렌드, 최소 정점 수, 텍스처/셰이더/RT 바인딩

파이프라인 검사 (4)

도구

설명

get_pipeline_state

전체 상태: 토폴로지, 뷰포트, 래스터라이저, 블렌드, 깊이, 스텐실 (사람이 읽을 수 있는 열거형)

get_shader_bindings

셰이더 스테이지의 상수 버퍼, SRV, UAV, 샘플러

get_vertex_inputs

정점 속성, 정점/인덱스 버퍼 바인딩

get_draw_call_state

원콜 드로우 분석: 액션 정보, 블렌드 공식, 깊이, 스텐실, 래스터라이저, 크기 포함 텍스처, 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

채널별 min/max/avg 및 이상치 감지 (NaN/Inf/음수); 큐브맵용 all_slices 지원

read_texture_pixels

픽셀의 사각 영역 읽기 (최대 64×64) — 픽셀별 이상치 플래그 포함

export_draw_textures

일괄 내보내기 — 드로우 콜에 바인딩된 모든 텍스처 (자동 이름 지정, 플레이스홀더 건너뜀)

save_render_target

이벤트 시점의 RT 스냅샷 저장 (컬러 + 선택적 깊이)

export_mesh

메시를 OBJ로 내보내기 — VS 이후 데이터의 위치, 법선, UV 포함

셰이더 분석 (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

두 드로우 콜 비교 — 사람이 읽을 수 있는 의미와 함께 상태 차이 표시

analyze_render_passes

Clear/RT 전환으로 렌더 패스 경계 자동 감지, 각 패스 요약

sample_pixel_region

RT 영역의 균일 그리드 스캔 — NaN/Inf/음수/과노출 핫스팟 감지

debug_shader_at_pixel

픽셀별 셰이더 디버그 — 변수 추적 또는 픽셀 값 + 셰이더 정보를 폴백으로 반환

성능 분석 (4)

도구

설명

get_pass_timing

가장 비용이 큰 렌더 패스 — GPU 카운터 사용 가능 시 사용, 그 외에는 삼각형 수 휴리스틱으로 폴백

analyze_overdraw

렌더 타겟 그룹별 오버드로우 추정

analyze_bandwidth

렌더 타겟별 쓰기/읽기 대역폭 추정

analyze_state_changes

중복 상태 변경 패턴 및 배칭 기회 탐지

진단 (4)

도구

설명

diagnose_negative_values

모든 float RT에서 음수/NaN/Inf 스캔 — 이를 처음 유발한 이벤트 탐지, TAA 누적 감지

diagnose_precision_issues

R11G11B10 부호 비트 손실, 얕은 깊이 버퍼, SRGB/선형 불일치 확인

diagnose_reflection_mismatch

리플렉션 패스를 메인 씬 드로우와 비교 — 셰이더/블렌드/포맷 원인 탐지

diagnose_mobile_risks

정밀도 / 성능 / 호환성 / GPU별 위험 범주에 걸친 종합 검사

프롬프트

일반적인 워크플로우에서 AI를 안내하는 내장 프롬프트 템플릿:

프롬프트

설명

debug_draw_call

단일 드로우 콜 심층 분석: 파이프라인 → 셰이더 → cbuffer → 출력

find_rendering_issue

문제 설명에서 체계적 진단 수행

analyze_performance

프레임 전체 성능 분석: 패스 타이밍, 오버드로우, 대역폭, 상태 변경

작동 방식

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

서버는 RenderDoc의 헤드리스 리플레이 API(renderdoc.pyd)를 사용하여:

  1. GUI 없이 .rdc 캡처 파일 열기

  2. 프레임 리플레이 및 임의 이벤트에서 파이프라인 상태 조회

  3. 텍스처, 버퍼, 셰이더 데이터, 픽셀 히스토리 추출

  4. AI가 추론할 수 있도록 구조화된 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