RenderDoc MCP Fusion
Exports draw call packages in a Unity-ready format, including OBJ meshes, textures, material mapping suggestions, and an Editor import script, so captured rendering data can be imported into a Unity project's Assets folder.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@RenderDoc MCP Fusionopen C:/Captures/scene.rdc and list the first 20 draw calls"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
RenderDoc MCP Fusion
RenderDoc MCP Fusion 为 MCP 客户端提供 RDC 抓帧分析工具。多个客户端可以共用一个本地后台服务。
0.1.0 提供 44 个 MCP 工具。它可以查询绘制、着色器、资源和像素,读取 GPU 性能计数器,并导出绘制包及 Unity 导入包。可用能力取决于回放后端、抓帧内容和本机环境。
运行要求
项目 | 要求或版本 |
Fusion | 0.1.0 |
操作系统 | Windows x64 |
Python | 3.11 或更高版本 |
GUI 模式 | 本机安装 RenderDoc;已适配 1.46 |
headless 模式 | 附带引擎 v0.3.0,本机构建,使用 RenderDoc 1.46 |
回放硬件 | 与抓帧兼容的 GPU 和驱动 |
本文使用以下术语:
客户端:发起 MCP 请求的应用,例如 Codex 或 DeepSeek Harness。
连接器:由客户端启动的 stdio 进程。它向共享服务转发请求。
共享服务(Hub):执行 MCP 请求和管理回放资源的后台进程。
GUI 模式:使用 RenderDoc 窗口回放抓帧。
headless 模式:使用无窗口引擎回放抓帧。
捕获句柄:
open_capture返回的capture_id。后续请求用它指定抓帧。
Related MCP server: RenderDoc MCP
安装
安装 Python。
在完整项目目录中执行:
python -m pip install .如需使用 GUI 模式,安装 RenderDoc。
安装包包含连接器、GUI 桥接和 headless 运行文件。普通安装不需要手动创建 .venv,也不需要设置 RENDERDOC_FUSION_ROOT 或 PYTHONPATH。安装后可以从任意目录启动,原源码目录可以移走。
配置客户端
客户端必须支持本地 stdio MCP。安装程序不会自动修改客户端配置。
在安装时使用的 Python 环境中,生成服务配置:
python -m renderdoc_mcp_fusion --print-config如果 Python 的 Scripts 目录已加入 PATH,也可以执行:
rdc-mcp-fusion --print-config追加 --output mcp-config.local.json 可保存配置。命令只创建新文件,不覆盖已有文件。
生成的配置使用当前安装的绝对路径。下面的路径仅作示例。请使用命令实际生成的路径。
{
"mcpServers": {
"rdc-fusion": {
"command": "C:\\Python313\\Scripts\\rdc-mcp-fusion.exe",
"args": []
}
}
}如需通过 CC Switch 管理配置:
在 MCP 面板新增自定义服务。
将服务器 ID 设为
rdc-fusion。将传输类型设为
stdio。将
mcpServers.rdc-fusion内的对象填入单个服务配置。该对象包含command和args。如需指定 RenderDoc 路径等选项,添加env。保存配置,并启用目标客户端的同步开关。
在目标客户端重新连接 MCP,或重启客户端。
外层 mcpServers 用于完整配置文件。不要将外层对象填入单个服务配置。客户端使用 stdio 连接;不要在配置中填写共享服务内部的 HTTP 地址。
CC Switch 负责转换客户端配置格式。可用的同步目标取决于所安装的 CC Switch 版本。具体操作见 CC Switch MCP 管理文档。
在源码目录运行 python scripts/check_install.py,可检查两个独立 MCP 客户端是否共用一个服务。此检查不打开 RDC,也不验证所有客户端应用。
启动与共享
连接器收到 MCP 初始化请求后,自动启动或连接本机的共享服务。多个连接器同时启动时,进程锁可防止重复创建服务。
每个连接都有自己的连接器。MCP 请求和 RDC 路由由同一个共享服务处理。连接器通过带随机令牌的 Streamable HTTP 访问服务。服务只监听 127.0.0.1。请勿将此端口暴露到网络。
Windows 通过同一用户、同一会话中的 Explorer 启动共享服务。此方式用于将服务与连接器的进程回收范围分开。启动需要可用的交互桌面。桌面不可用或用户身份不一致时,启动会报错。
服务不接收聊天历史。请求结果只返回给发起请求的连接。每个连接必须取得自己的捕获句柄。
不同 RDC 使用不同回放后端。同一 RDC 在相同模式下可以共用回放资源。共用资源上的操作按顺序执行。多个连接使用同一个 GUI 时,事件选择状态也会共享。连接之间的消息隔离不提供操作系统级沙箱。
打开与分析抓帧
如果不知道文件路径,先调用 list_captures。它只列出指定目录中的 RDC 文件,不打开回放:
{"directory":"C:/Captures","offset":0,"limit":20}确定文件后,按以下步骤打开和分析:
调用
open_capture,并指定 RDC 的绝对路径:{"capture_path":"C:/Captures/scene.rdc","backend":"auto"}保存返回的
capture_id。在后续请求中传入这个句柄。例如,调用
list_draws:{"capture_id":"从 open_capture 返回值复制","limit":20}查询管线、着色器、绑定或导出数据时,按工具要求传入实际返回的
event_id。请求不依赖 GUI 当前选中的事件。
| 行为 |
| 指定窗口或可以自动启动 RenderDoc 时,使用 GUI;否则使用 headless |
| 使用 GUI;默认自动启动 RenderDoc 并加载桥接 |
| 使用附带的无窗口回放引擎 |
自动启动 GUI 需要启用 RENDERDOC_FUSION_GUI_AUTOSTART,且配置的 qrenderdoc.exe 路径必须存在。默认路径为 %ProgramFiles%\RenderDoc\qrenderdoc.exe。其他安装路径需用 RENDERDOC_FUSION_RENDERDOC 指定。
GUI 启动或查询失败时会返回错误,不会自动切换到 headless。指定 window_id 时,目标窗口必须已经加载桥接和目标 RDC。连接器不会替换其他窗口正在查看的文件。
每个连接都必须调用 open_capture。不要复制其他连接的句柄。出现以下情况后,请重新打开抓帧并取得新句柄:
客户端建立了新连接。
共享服务已重启。
RDC 文件内容已变化。
GUI 已切换抓帧,或对应窗口已关闭。
回放资源已被回收。
原生回放发生致命错误,工具返回
SESSION_LOST。
生命周期
共享服务
共享服务根据连接器的登记和心跳决定何时退出。
连接器首次请求服务时登记独立身份。之后每 5 秒发送一次心跳,为登记续期。连接空闲时也发送心跳。
情况 | 服务行为 |
连接器正常退出 | 注销自己的登记 |
连续 30 秒没有收到心跳 | 使该连接器的登记过期 |
仍有活动登记 | 继续运行 |
最后一个登记被注销或过期 | 开始 60 秒退出倒计时 |
倒计时结束前有连接器接入 | 取消退出倒计时 |
退出倒计时结束 | 开始关闭服务并清理资源 |
启动后一直没有连接器登记 | 60 秒后开始关闭服务 |
客户端关闭 stdio 输入时,连接器注销并退出。连接器被强制结束时,服务等待心跳超时,再开始退出倒计时。
因此,最后一个连接器正常注销后,服务约 60 秒后开始关闭。若连接器被强制结束,服务在最后一次心跳后约 90 秒开始关闭。关闭时,HTTP 请求最多还可等待 30 秒;资源清理也需要时间。上述时间不是进程消失的硬性期限。
关闭聊天是否结束连接器,由客户端决定。桌面窗口是否仍打开不参与判定。心跳只由存活的连接器发送;连接器退出后,心跳会停止。
手动停止共享服务后,心跳不会重新启动它。下一次 MCP 请求才会启动新服务。
调用 get_backend_status 可查看生命周期状态:
字段 | 含义 |
| 当前为 |
| 活动连接器数量 |
| 心跳超时,默认 30 秒 |
| 退出宽限期,默认 60 秒 |
| 剩余宽限时间;有活动登记时为 |
回放资源
headless 回放的空闲回收与共享服务的退出倒计时分别工作。
默认模式为
headless_mode="persistent"。连续 300 秒没有实际操作后,服务释放回放引擎及对应句柄。headless_mode="on_demand"在每次实际调用后释放回放引擎。下一次查询会重新加载。捕获句柄仍受 300 秒空闲期限限制。状态查询和目录查询不延长回放资源的空闲期限。
正在执行或排队的操作不受空闲回收影响。
release_capture只释放本连接的句柄。最后一个 headless 句柄释放后,服务可停止对应回放。关闭 RenderDoc 窗口会使对应 GUI 句柄失效,不影响其他 RDC。
关闭连接器或共享服务不会关闭已有的 RenderDoc 窗口。请在不再需要窗口时手动关闭它。
查看进程与更新程序
查看进程
共享服务在 Windows 任务管理器中使用以下名称:
页面 | 名称 |
进程 |
|
详细信息 |
|
使用新配置启动时,连接器启动文件名为 rdc-mcp-fusion.exe,其子进程可能显示为 Python。旧的 renderdoc-mcp-fusion 命令保留兼容;要使用新名称,请重新生成并更新客户端配置。RenderDoc 窗口对应 qrenderdoc.exe。请用 get_backend_status 返回的 service_pid 核对共享服务,避免把连接器退出当成共享服务退出。
共享服务使用基础 Python 的 pythonw.exe 和运行库生成专用启动文件。缓存默认位于 %LOCALAPPDATA%\RenderDocMCPFusion\shared-service\named-runtime。此过程不修改原 Python 安装。
专用启动文件的描述为 RDC MCP。Python 版本和版权信息保留。基础运行库变化后,程序会生成新缓存。RENDERDOC_FUSION_SERVICE_DIR 可更改服务状态和缓存目录。安装依赖中的 pywin32 提供 Windows 桌面启动和文件描述更新支持。
更新程序
修改源码不会更新已运行的连接器或共享服务。 普通安装还需要重新安装软件包。请在安装时使用的 Python 环境中执行以下步骤:
在各客户端断开此 MCP 服务。
查看旧服务状态,再停止旧服务:
python -m renderdoc_mcp_fusion.shared_service status python -m renderdoc_mcp_fusion.shared_service stop在项目目录安装新版本:
python -m pip install .关闭不再使用的旧 RenderDoc 回放窗口。
在各客户端重新连接 MCP,以启动新连接器和新服务。如果工具列表仍是旧版,刷新客户端的 MCP 工具列表或重启客户端。
重新调用
open_capture,取得新句柄。GUI 模式下使用新回放窗口加载新桥接。
升级 GUI 桥接后,也需要新建 RenderDoc 回放窗口。旧窗口仍运行加载时的桥接代码。请关闭不再使用的旧窗口;新服务自动启动的窗口会加载新桥接。手动指定旧 window_id 不会更新其中的代码。
停止共享服务会影响所有连接到它的客户端。重启前的捕获句柄全部失效。新旧版本不能共用同一个运行中的服务;版本不一致时会报错。
开发时可以执行 python -m pip install -e .。可编辑安装需要保留源码目录。修改代码后,仍须重启连接器和共享服务。
Fusion Bridge
GUI 模式需要 Fusion Bridge 读取 RenderDoc 数据。自动启动流程通过 qrenderdoc --python 加载桥接,无需在扩展菜单中手动开启它。
请保留安装包自带的 bridge_extension。普通安装将它放在 Python 包的 _resources 目录中。可编辑安装直接使用源码目录中的文件。
旧版手动安装可能位于 %APPDATA%\qrenderdoc\extensions\renderdoc_fusion_bridge。如果只使用自动启动流程,可以停用或移除这份旧安装。如果仍需通过扩展菜单为手动打开的窗口提供桥接,请保留它。
工具与限制
工具列表如下。
用途 | 工具 |
服务和捕获状态 |
|
查找、打开和释放抓帧 |
|
查询帧和绘制 |
|
查询着色器和绑定 |
|
查询资源 |
|
查询像素和调试 |
|
分析绘制 |
|
查询 GPU 性能 |
|
导出数据 |
|
导出绘制包 |
|
访问允许的后端接口 |
|
所有抓帧分析调用都需要本连接的 capture_id。顶层工具使用 event_id、resource_id、shader_id 和 output_path。原生 GUI 接口使用 eid、rid、sid 和 dest。请按工具目录中的参数说明调用,不要混用两套名称。
资源 ID 必须使用字符串,例如 "ResourceId::30588"。部分 ID 超过常见客户端的整数精度范围,不能改成 JSON 数字。
后端选择
场景 | 入口和限制 |
查询服务或查找 RDC |
|
基本回放查询 | 两个后端均支持 |
资源查询、像素调试、绘制反查、光照分析、计数器和绘制包导出 | 对应的顶层工具使用 GUI |
headless 原生能力 | 先调用 |
原始缓冲和纹理文件 |
|
绘制后网格 |
|
headless 渲染目标 |
|
GUI 专用调用在 headless 捕获句柄上会返回 UNSUPPORTED_OPERATION。需要这些能力时,请重新调用 open_capture 并指定 backend="gui"。工具不会自动切换后端。
调用示例
以下示例中的 capture_id 和事件编号需要替换为当前抓帧的实际值。先通过 list_draws 获取事件编号。
调用 get_shader_info,读取顶点着色器的前 100 行反汇编:
{"capture_id":"当前连接的捕获句柄","event_id":120,"stage":"vs","mode":"disasm","offset":0,"max_lines":100}调用 identify_drawcalls,比较一个绘制前后的颜色数据。此示例将像素数上限设为 4,194,304,可容纳 1920 × 1080 的目标:
{"capture_id":"当前连接的捕获句柄","eid_min":120,"eid_max":120,"include_diff":true,"max_pixels":4194304}调用 export_to_unity,将一个绘制导出到新目录:
{"capture_id":"当前连接的捕获句柄","event_id":120,"output_path":"C:/Exports/draw-120"}输出目录必须尚不存在。省略 output_path 时,程序在默认输出目录下分配新路径。导出后先检查结果中的 complete、errors 和 warnings,再查看 manifest.json。
list_captures 列出指定目录中的 RDC 文件,使用 offset 和 limit 分页,不递归扫描。它不需要捕获句柄。list_instances 列出已打开的回放后端。open_capture 打开已有 RDC,不启动游戏或创建新抓帧。mode="code" 不会从机器码还原原始高级着色器源码。
数据范围和错误处理
get_shader_info在 GUI 中支持reflect、disasm、source和code。文本用offset和max_lines分页,结果报告是否截断。缺少调试源码时,source不会生成虚构源码。资源列表和像素历史用
offset、limit分页。原始字节以 Base64 返回。纹理字节默认最多返回 4 KiB,最高 1 MiB;原生回放仍会先读取所选子资源。3D 纹理读取整个 mip 层,不能只读取一个深度切片。debug_pixel和debug_vertex用max_steps限制返回的调试步数。结果报告调试是否完成以及数据是否截断。指定像素没有着色器调用,或回放 API 不支持调试时,调用会报错。analyze_lighting读取着色器、绑定和常量证据。光照模型和纹理用途是启发式判断,不是已验证的场景语义。identify_drawcalls可比较每个绘制前后的颜色数据,并返回变化像素数和包围框。颜色没有变化不代表没有几何体。压缩格式、数组纹理和多重采样等不支持的情况会逐项报告。默认每次分析 16 个绘制,并限制纹理像素数。着色器和资源反查返回实际绘制事件。着色器扫描达到上限时返回
next_after_eid;下一次调用将它传入after_eid。性能计数器来自回放设备。
get_action_timings使用 GPU Duration 计数器。设备不支持时返回错误,不用零值代替真实测量。Windows 上的 D3D12 计数器要求启用系统开发者模式。检测到该设置未启用时,调用会说明原因,不执行计数器回放。Fusion 不修改这个系统设置。原生回放发生致命错误时,捕获句柄失效;请重新打开抓帧。
绘制包包含完整着色器文本、纹理、管线状态、可用网格和
manifest.json。先检查complete、errors和warnings。部分文件导出成功不代表整个包完整。Unity 包包含 OBJ、纹理、材质映射建议和 Editor 导入脚本。将包复制到 Unity 的
Assets下,检查material.json,再执行包内说明指定的菜单。它不恢复原始材质、骨骼、动画或场景。GUI 可读取实际资源绑定和常量缓冲值。
附带 headless 引擎的部分绑定结果只表示声明,不能当作实际纹理绑定。它不支持常量值读取。
export_mesh导出 GPU 变换后的数据。绘制包优先导出捕获的顶点输入;没有位置输入时可回退到绘制后的位置预览。请检查网格的坐标说明和 UV 限制。这些数据都不等于原始骨骼模型。原生接口只开放工具目录中允许的操作。会绕过本服务捕获生命周期管理的操作被阻止。
普通安装默认将输出写入
%LOCALAPPDATA%\RenderDocMCPFusion\artifacts。源码运行默认写入项目的artifacts目录。程序不覆盖已有文件。超出内联大小限制的响应会完整写入 JSON 文件,并返回文件大小及 SHA256。
计数器前置检查失败时,返回错误详情中的 developer_mode_required,现有回放仍可继续查询。若系统设置无法读取,程序不会假定它已启用;后续原生致命错误仍会使句柄失效。
项目文件与输出
运行时输出按需创建。artifacts/ 用于源码运行时的导出文件和大型响应;它不需要预先存在。artifacts/、/tests/、构建目录和本地运行状态均由 Git 忽略。清理生成文件后,后续调用可以重新创建所需的输出目录。
常用环境变量
变量 | 用途 |
| 指定 |
| 控制 GUI 自动启动 |
| 控制 GUI 窗口可见性 |
| 设置 GUI 启动等待时间,单位为秒 |
| 指定输出目录 |
| 指定共享服务的状态和缓存目录 |
许可证
本项目采用 MIT 许可证。第三方组件保留各自的版权声明和许可证。
鸣谢
感谢以下开源项目及其贡献者:
RenderDoc:提供图形捕获、回放和调试能力。
JiaboLi-GitHub/renderdoc-mcp:为 headless 引擎提供参考。
Hengle/RenderDocMCP2:为查询和导出功能提供参考。
stb:提供 headless 引擎使用的
stb_image和stb_image_write图像读写库。
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP registry & directory: search, find & install 31k+ MCP servers & tools. Catalog and marketplace.
MCP server for lightfield documentation, generated by doc2mcp.
Official MCP server for Softhills 3D/2D Visualization SDKs, API documentation, and code examples.
121MCP server for developers documentation, generated by doc2mcp.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to analyze RenderDoc GPU frame captures for graphics debugging and performance analysis through a headless Python API. It provides a comprehensive suite of tools for inspecting pipeline states, shader bindings, and exporting frame resources like textures and meshes.169-
- AlicenseNot gradedqualityDmaintenanceExposes RenderDoc capture analysis to AI clients via MCP, enabling offline analysis of .rdc files (action tree, pipeline state, textures, shaders) and GUI state interaction on Windows.2MIT
- FlicenseBqualityCmaintenanceMCP server for RenderDoc that enables AI assistants to analyze GPU frame captures (.rdc files) for graphics debugging and performance analysis, with 42 tools covering the full RenderDoc workflow.6-
- AlicenseAqualityCmaintenanceMCP server for reading, filtering, and analyzing NVIDIA Nsight Graphics captures via ngfx-replay, exposing tools for capture inspection, GPU Trace profiling, and replay analysis.2262MIT