RenderDoc MCP
Enables AI clients to analyze RenderDoc captures by browsing draw/dispatch events, inspecting pipeline state and shaders, and paginating vertex/constant buffer data.
README
RenderDoc MCP
让支持 Model Context Protocol(MCP) 的 AI 客户端直接分析 RenderDoc 捕获文件:浏览 Draw/Dispatch 事件、检查管线与 Shader,并分页读取顶点和常量缓冲数据。
仓库包含可运行的 MCP stdio 服务、会话与路径安全边界、用于开发测试的 Mock 后端,以及连接 qrenderdoc 1.44 的真实 Replay 桥接后端。
[!IMPORTANT] 当前推荐使用
qrenderdoc后端连接真实捕获;renderdoc/native后端仍是预留实现。
真实桥接由两个进程组成:现代 Python 3.11 MCP Gateway,以及运行在 qrenderdoc 内嵌
Python 3.6 中的 UI 扩展。两者通过带随机令牌的本机文件队列 JSON 协议通信;这样不依赖
RenderDoc 精简 Python 中缺失的 _socket 模块。
MCP Client <-- stdio --> Python 3.11 Gateway
|
authenticated JSON spool
|
qrenderdoc extension
|
RenderDoc ReplayController
已有能力
- MCP stdio 服务与结构化工具响应。
.rdc路径白名单、文件类型、大小和会话数限制。- 通过 RenderDoc 注入启动独立白名单内的
.exe,参数使用数组传递,不执行 shell。 - 稳定的
capture_id、显式event_id,不依赖隐藏的当前选中事件。 - 每个 capture 串行访问后端,为 RenderDoc ReplayController 的线程模型留出边界。
- Action 过滤和游标分页。
inspect_event复合调用,避免为一次检查产生大量细粒度 MCP 往返。- 读取当前事件的拓扑、viewport/scissor、Shader、资源绑定、渲染目标和验证消息。
- 统一错误结构和被动的 capture summary Resource。
首批工具:
healthlaunch_programopen_captureclose_captureget_capture_summarylist_actionsget_eventinspect_eventget_pipeline_stateget_shaderget_vertex_datalist_constant_buffersget_constant_buffer
Pipeline、Shader 与 Buffer 数据
get_pipeline_state不传section时返回跨 API 的通用快照和api_specific_sections;把其中任一名称作为section再调用,可读取 D3D11、D3D12、 Vulkan 或 OpenGL 的完整顶层状态组。get_shader按 stage 读取reflection、disassembly、source或raw。后三类大内容使用cursor/next_cursor分页;source_file_index可遍历每一个嵌入源码文件。get_vertex_data将实例与 draw 顶点展开成稳定记录,返回所有 attribute 的解码值、精确raw_hex、实际 buffer offset 和格式元数据;uv_attributes会明确标出UV/TEXCOORD。 持续跟随next_cursor即可覆盖全部实例和顶点。list_constant_buffers枚举每个 shader stage、reflection block 和 array element;随后用get_constant_buffer读取该组全部解码变量。底层原始字节以raw_offset/next_offset分页,因此即使超过单次读取上限也不会丢失数据。
环境
- Python 3.11+
- MCP Python SDK 稳定线
>=1.27,<2 - RenderDoc/qrenderdoc 1.44(真实桥接后端)
SDK v2 仍处于预发布阶段,因此本项目暂时锁定 v1.x,避免框架代码随预发布接口变化。
快速开始(Mock 后端)
在 PowerShell 中:
python -m venv .venv
.venv\Scripts\python -m pip install -e ".[dev]"
$env:RENDERDOC_MCP_BACKEND = "mock"
$env:RENDERDOC_MCP_ALLOWED_ROOTS = (Get-Location).Path
.venv\Scripts\python -m renderdoc_mcp
stdio 是协议通道,普通日志不要写入 stdout。
使用 MCP Inspector:
.venv\Scripts\mcp dev src\renderdoc_mcp\server.py
Mock 后端仍要求传入一个真实存在、位于白名单中的 .rdc 路径,但不会解析文件内容。
安装 qrenderdoc 桥接
假设 RenderDoc 安装在 C:\Tools\RenderDoc,在项目目录运行:
powershell -ExecutionPolicy Bypass -File .\scripts\install_qrenderdoc_bridge.ps1 `
-RenderDocRoot C:\Tools\RenderDoc
脚本会:
- 安装扩展到
%APPDATA%\qrenderdoc\extensions\renderdoc_mcp_bridge; - 生成随机令牌并写入扩展端的
bridge_config.json; - 在项目根目录生成 Gateway 使用的
.renderdoc-mcp-bridge.json。
随后打开 C:\Tools\RenderDoc\qrenderdoc.exe,进入 Tools → Manage Extensions,选择
RenderDoc MCP Bridge,先点 Load,成功后勾选 Always Load。使用真实后端时
qrenderdoc 必须保持运行;队列目录默认是项目内被 Git 忽略的 .renderdoc-mcp-spool。
开发时也可以让 qrenderdoc 在 UI 打开后自动执行一次加载脚本:
C:\Tools\RenderDoc\qrenderdoc.exe --ui-python .\scripts\load_qrenderdoc_bridge.py
这个命令只负责本次加载;日常使用仍建议在扩展管理器中勾选 Always Load。
MCP 客户端配置示例
把路径替换为实际位置:
{
"mcpServers": {
"renderdoc": {
"command": "C:\\path\\to\\RenderDoc_MCP\\.venv\\Scripts\\python.exe",
"args": ["-m", "renderdoc_mcp"],
"env": {
"RENDERDOC_MCP_BACKEND": "qrenderdoc",
"RENDERDOC_MCP_ALLOWED_ROOTS": "C:\\captures",
"RENDERDOC_MCP_ALLOWED_EXECUTABLE_ROOTS": "C:\\projects\\my-renderer",
"RENDERDOC_MCP_ARTIFACT_ROOT": "C:\\path\\to\\RenderDoc_MCP\\artifacts",
"RENDERDOC_MCP_RENDERDOC_ROOT": "C:\\Tools\\RenderDoc"
},
"cwd": "C:\\path\\to\\RenderDoc_MCP"
}
}
}
在 Codex 的图形配置页中,参数要拆成两行:-m 和 renderdoc_mcp。环境变量透传保持
空白;Working directory 填项目根目录。由于工作目录中已有 .renderdoc-mcp-bridge.json,
不需要把令牌手工贴进 MCP 配置。
配置项
| 环境变量 | 默认值 | 说明 |
|---|---|---|
RENDERDOC_MCP_BACKEND |
mock |
mock、qrenderdoc(真实 UI 桥接)或 renderdoc(预留原生后端) |
RENDERDOC_MCP_ALLOWED_ROOTS |
当前目录 | 可打开 capture 的目录;多个目录用系统 path separator 分隔 |
RENDERDOC_MCP_ALLOWED_EXECUTABLE_ROOTS |
空(禁止启动) | launch_program 可启动的 .exe 及工作目录根路径;多个目录用系统 path separator 分隔 |
RENDERDOC_MCP_ARTIFACT_ROOT |
./artifacts |
后续生成 PNG、Shader、JSON 等 artifact 的目录 |
RENDERDOC_MCP_MAX_SESSIONS |
2 |
最大并发 capture 会话数;qrenderdoc 后端固定收紧为 1 |
RENDERDOC_MCP_MAX_CAPTURE_BYTES |
8589934592 |
单个 capture 大小上限 |
RENDERDOC_MCP_MAX_PAGE_SIZE |
100 |
Action 单页硬上限 |
RENDERDOC_MCP_MAX_BUFFER_READ_BYTES |
65536 |
单页顶点、常量缓冲与 Shader 内容读取硬上限;可用游标续读 |
RENDERDOC_MCP_RENDERDOC_ROOT |
配置文件值 | RenderDoc 安装目录,例如 E:\RenderDoc |
RENDERDOC_MCP_BRIDGE_CONFIG |
./.renderdoc-mcp-bridge.json |
Gateway 桥接配置文件 |
RENDERDOC_MCP_BRIDGE_SPOOL_DIR |
配置文件值 | 本机桥接请求/响应队列目录 |
RENDERDOC_MCP_BRIDGE_TOKEN |
配置文件值 | 可选环境变量覆盖;通常无需手工配置 |
RENDERDOC_MCP_BRIDGE_TIMEOUT_SECONDS |
120 |
单次桥接请求超时 |
从 RenderDoc 启动程序
先把你自己的程序所在项目根目录加入 RENDERDOC_MCP_ALLOWED_EXECUTABLE_ROOTS,重启 MCP
服务,然后调用:
{
"executable": "C:\\projects\\my-renderer\\bin\\renderer.exe",
"arguments": ["--scene", "C:\\projects\\my-renderer\\scenes\\demo.json"],
"working_directory": "C:\\projects\\my-renderer",
"hook_into_children": false,
"api_validation": false
}
成功结果包含 RenderDoc target-control ident 和 capture 文件模板。程序已由 RenderDoc 注入,
可在程序窗口中按默认截帧热键 F12。该工具不接受 shell 命令或环境变量修改;需要子进程也被
注入时才打开 hook_into_children,需要 API 验证层时才打开 api_validation。
测试
安装开发依赖后:
.venv\Scripts\python -m pytest
.venv\Scripts\ruff check .
不安装第三方测试依赖也可以运行核心服务测试:
$env:PYTHONPATH = "src"
python -m unittest discover -s tests -v
安全边界
- 只能打开
RENDERDOC_MCP_ALLOWED_ROOTS下的.rdc文件。 launch_program默认禁用,只允许启动RENDERDOC_MCP_ALLOWED_EXECUTABLE_ROOTS下的.exe。- 启动参数按数组传递,不经过 shell;Gateway 不允许通过工具修改目标程序环境变量。
- Gateway 与 qrenderdoc 扩展之间的本机消息使用安装时生成的随机令牌认证。
- Action、Shader、顶点和 Buffer 数据均受分页或单次读取上限约束。
项目状态与下一步
桥接主链路、Pipeline state、Shader、顶点输入和常量缓冲读取已经实现。后续适合按任务继续增加 Texture 导出、通用 Buffer readback、Pixel History 和 artifact 管理。
详细边界见 架构说明。
License
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
Neon Database
MCP server for interacting with Neon Management API and databases
E2B
Using MCP to run code via e2b.
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.