mcdk-mcp-tracy
Click on "Install 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., "@mcdk-mcp-tracyCapture 8 seconds of profiling data filtered by 'my_mod' with label 'before'"
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.
mcdk-mcp-tracy
一个 MCP 服务器:直接从运行中的网易我的世界基岩版 MOD 里,拿到每个函数的耗时, 用来做代码 review、定位性能热点、验证优化效果。
它驱动游戏客户端内嵌的原生 Tracy server(监听 TCP 8086,就是 tracy-profiler.exe GUI
连的那个端口),用自带的 tracy-capture + tracy-csvexport(见 bin/)抓取一小段 trace,
归约成精简的函数耗时排行返回给 AI。原始逐帧数据不会进 AI 上下文。
它能帮你回答这些问题:
这段玩法里,哪些函数最耗时?(self / total / 调用次数)
我改完代码后,那个热点函数真的变快了吗?(前后 diff,按毫秒量化)
掉帧时 FPS 分布怎么样?
为什么走原生 Tracy? 网易引擎的 Python 侧 CPU profiler(
_utility.getCpuFrameData) 在绝大多数正式发布版客户端里没有绑定(它是受灰度控制的内部能力)。但同一个客户端 通常内嵌了原生 Tracy server(8086)——所以本服务器走原生路径,无需该 Python 绑定、 无需白名单、也不依赖画质/cocos 等级。
工作原理(一张图)
# 函数耗时(主路径)—— 不经游戏 Python,直连原生 Tracy
AI (Claude) --MCP/stdio--> mcdk-mcp-tracy --TCP 8086--> 游戏内嵌的原生 Tracy server
└─ bin/tracy-capture.exe + tracy-csvexport.exe
# 帧率 / jank(辅助路径)—— 经 MCDK 注入 get_Fps()
AI --MCP/stdio--> mcdk-mcp-tracy --MCP/SSE--> MCDK(mcdk.exe) --execute_code--> 游戏(Python2)函数耗时走原生 Tracy(8086),不经过 MCDK:只要游戏在跑、8086 在听、
bin/里的 CLI 在,就能抓。采样窗口内你得让游戏真的在跑(动起来、触发你要测的逻辑):Tracy 记录的是窗口内实际 执行的 zone,静止画面 = 没什么数据。
只有
tracy_jank_fps走 MCDK,所以那一个工具才需要游戏由 MCDK 启动、且 MCP 已开。
bin/tracy-capture.exe/bin/tracy-csvexport.exe取自 Tracy v0.11.1 官方 Windows 包, 版本须与游戏内嵌的 Tracy client 一致(协议版本敏感);换游戏版本时同步替换。
Related MCP server: Observability MCP Server
前置条件
游戏在运行,且客户端内嵌的原生 Tracy server 在监听 8086(用
tracy-profiler.exeGUI 能连上、看到MAIN_THREAD/MC_SERVER即可确认)。bin/tracy-capture.exe和bin/tracy-csvexport.exe存在(随仓库附带;也可用TRACY_BIN_DIR指向别处)。(仅
tracy_jank_fps需要) 游戏由 MCDK(mcdk.exe)启动,且工程.mcdev.json里开了 MCP:{ "mcp_server_config": { "enabled": true, "server_ip": "localhost", "server_port": 19133 } }Python 3.10+(开发用 3.13)。推荐装
uv。
安装
# 1) 拿到代码后,在项目目录装依赖并建虚拟环境
uv --directory <path>/mcdk-mcp-tracy sync
# 2) 自检(不需要游戏,应输出 36 passed)
uv --directory <path>/mcdk-mcp-tracy run pytest -quv sync 会在 mcdk-mcp-tracy/.venv/ 下建好环境并把本包装成可用模块。
注册到 Claude Code
方式 A:全局(user scope,所有项目可用)—— 推荐
claude mcp add mcdk-mcp-tracy --scope user -- \
"<path>/mcdk-mcp-tracy/.venv/Scripts/python.exe" -m mcdk_mcp_tracy \
--stdio --mcdk-url http://127.0.0.1:19133直接用 venv 里的
python.exe,不依赖 PATH,最稳。--mcdk-url http://127.0.0.1:19133写死 MCDK 端口(仅tracy_jank_fps用得到;函数耗时 抓取不经 MCDK,与端口无关)。注册后新开一个会话才会出现
mcp__mcdk-mcp-tracy__*工具(当前会话不会热加载)。
方式 B:跟着 MOD 工程走(按 .mcdev.json 自动找端口)
// 放进全局 ~/.claude.json 的 mcpServers,或工程根目录的 .mcp.json
"mcdk-mcp-tracy": {
"type": "stdio",
"command": "<path>/mcdk-mcp-tracy/.venv/Scripts/python.exe",
"args": ["-m", "mcdk_mcp_tracy", "--stdio", "--project-dir", "C:/你的MOD工程目录"]
}端口解析优先级:
--mcdk-url>--mcdev-json <文件>>--project-dir <目录>/.mcdev.json> 环境变量MCDK_MCDEV_JSON> 从当前工作目录向上找.mcdev.json。
卸载:claude mcp remove mcdk-mcp-tracy --scope user
快速上手(标准流程)
下面用工具名 + 关键参数说明,AI 会按需调用。
第 0 步 · 探针(每次开测先跑)
tracy_status()确认原生路径是否就绪。期望返回:
{
"ok": true,
"native_tracy": { "reachable": true, "address": "127.0.0.1", "port": 8086 },
"bin_present": true,
"mcdk": { "url": "http://127.0.0.1:19133/sse", "note": "MCDK is only needed for tracy_jank_fps; native capture is independent" }
}(要点:ok=false 时看 reason/hint —— native_tracy.reachable=false 说明游戏没起 / 没内嵌
Tracy / 端口不对;bin_present=false 说明 bin/ 缺 CLI。)
第 1 步 · 制造负载 + 抓取排行
先在游戏里触发你要测的玩法(站到卡顿场景、开打、刷实体、跑你的机器……),然后:
tracy_native_capture(seconds=8, name_contains="YourMod", label="before")name_contains可选,按"函数名 @ 源文件"过滤(如你的 mod 脚本前缀),只看自己的函数; 全量数据仍会存进 capture,过滤只影响返回的 inline top-N。原生 Tracy 自动抓全部 zone,无需白名单。
返回(已按 self 耗时降序):
{
"ok": true,
"capture_id": "cap-1",
"label": "before",
"source": "native_tracy",
"frames": 2632,
"zones": 645899,
"unique_functions": 209,
"unit": "ms",
"total_self_ms": 327.0,
"top": [
{ "name": "onRenderTick @ YourMod.Client.Main", "self_ms": 134.2, "total_ms": 328.1, "calls": 2628 }
]
}(要点:窗口内必须有真实负载;返回为空看 warning。记下 capture_id,diff 要用。)
第 2 步 · 细看某些函数的成本
tracy_get_function_costs(capture_id="cap-1", name_contains="YourMod")返回匹配函数的 self/total/calls —— 给你做 review 的"成本清单"。
第 3 步 · 改代码 + 复测
改完热点后,用同样的负载再抓一次,打不同 label:
tracy_native_capture(seconds=8, name_contains="YourMod", label="after")第 4 步 · diff 验证优化效果
tracy_diff_captures(base_id="cap-1", new_id="cap-2", metric="self"){
"ok": true, "metric": "self",
"summary": { "base_total_ms": 86.4, "new_total_ms": 61.0, "delta_ms": -25.4, "pct": -29.4 },
"improved": [ { "name": "YourMod.combat.update", "delta_ms": -16.8, "base_ms": 21.3, "new_ms": 4.5 } ],
"regressed": [], "added": [], "removed": []
}(delta_ms 为负 = 变快;目标函数出现在 improved 且总量 pct 下降,就说明优化生效。)
工具速查表
工具 | 作用 | 关键参数 |
| 先跑。探测原生 Tracy(8086)可达性、bundled CLI、MCDK 端点(信息性) |
|
| 核心。从原生 Tracy(8086)抓函数耗时 top-N,存为 |
|
| 从某次 capture 查指定函数/子串 |
|
| 前后两次 capture 按函数对比 |
|
| 帧级健康(经 MCDK):FPS 百分位 / 抓 jank 日志 |
|
| 列出已存的 capture,方便挑 id 做 diff | 无 |
所有工具都返回结构化 JSON:成功 {"ok": true, ...},失败 {"ok": false, "reason": "...", "error": "..."}。
要点 / 注意事项(务必读)
函数耗时走原生 Tracy,不经 MCDK:只要游戏在跑、8086 在听、
bin/在,就能抓;和画质、 cocos 等级、getCpuFrameData绑定都无关。采样期间要有真实负载:Tracy 记录窗口内实际执行的 zone,游戏静止 = 没什么数据。
无需白名单:原生 Tracy 抓全部已插桩 zone(含客户端
MAIN_THREAD与MC_SERVER线程); 用name_contains过滤你的 mod 即可。Tracy 版本必须匹配:
bin/的 CLI 与游戏内嵌 Tracy client 协议版本敏感,换游戏版本时同步 替换(当前 v0.11.1)。数据不进 AI 上下文:大数据在服务端归约,AI 只看 top-N 和 diff,放心采。
seconds上限 60s。diff 要可比:两次 capture 用尽量一致的玩法 + 同样的
seconds,否则 delta 不可信。tracy_jank_fps才依赖 MCDK:它经execute_code读get_Fps(),所以那一个工具需要游戏由 MCDK 启动、MCP 已开。
排查表(按 reason / 字段)
现象 | 含义 | 怎么修 |
| 连不上 8086 的原生 Tracy server | 确认游戏在跑、内嵌了 Tracy;用 |
| 找不到 bundled Tracy CLI | 确认 |
| 窗口内没有负载,或 8086 没数据 | 采样时让游戏真的在跑你要测的逻辑;确认 8086 可达 |
| 连不上 MCDK(端口没开/游戏没起) | 确认游戏由 MCDK 启动、19133 在跑 |
| 参数非法(如 | 按文档改参数 |
|
| 重新抓样拿新 id |
设计说明:为什么没有"游戏内 Profiler"工具
早期版本还提供过一条走 _utility.getCpuFrameData 的"游戏内 Profiler"路径
(tracy_capture_and_rank / tracy_set_profiled_modules / tracy_start / tracy_stop)。
实测在正式发布版客户端上,_utility 没有 getCpuFrameData / enableCpuProfiler 绑定
(CpuProfiler 是 1% 灰度的受控功能),那条路径不可用——故已移除。tracy_jank_fps 里
依赖 setSimpleProfilerEnable 的开关 action 同理(实测返回 False)也已移除,只保留可用的
sample_fps 与 read_jank_logs。函数级耗时统一走原生 Tracy。
开发
uv --directory mcdk-mcp-tracy run pytest -q # 36 passed测试覆盖:.mcdev.json 发现、原生 Tracy CSV 归约/统计解析、diff、capture store、FPS 采样编排
(假客户端)、execute_code 结果解析、注入片段的 Py2 语法 sanity。
完整工作流策略见 skills/mcdk-tracy-profiling/SKILL.md。
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.
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/lovelyXiaoQi/mcdk-mcp-tracy'
If you have feedback or need assistance with the MCP directory API, please join our Discord server