Skip to main content
Glama
lovelyXiaoQi

mcdk-mcp-tracy

by lovelyXiaoQi

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
TRACY_BIN_DIRNoPath to directory containing tracy-capture.exe and tracy-csvexport.exe
MCDK_MCDEV_JSONNoPath to .mcdev.json file for MCDK project configuration

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
tracy_statusA

Probe whether native-Tracy profiling is usable on the running game.

RUN THIS FIRST. The capture path used by this server is the game's embedded native Tracy server (TCP 8086), driven by the bundled tracy-capture / tracy-csvexport CLIs. It does NOT use the Python _utility.getCpuFrameData binding (absent on most release builds) and does NOT go through MCDK. Reports:

  • native_tracy.reachable — can we open a TCP connection to 8086? (the tracy-profiler GUI connects to the same port)

  • bin_present — are the bundled Tracy CLIs available?

  • mcdk — MCDK MCP endpoint, informational only (just tracy_jank_fps needs it; native capture is independent). Best-effort.

ok is true when the native path is ready (reachable + bin present); otherwise reason/hint pinpoint the broken leg.

Args: address/port: native Tracy endpoint (default 127.0.0.1:8086). project_dir: optional path whose .mcdev.json gives MCDK's MCP port.

tracy_list_capturesA

List stored captures (id, label, side, totals, timestamp) for diffing.

tracy_get_function_costsA

Query per-function self/total/calls from a stored capture.

Pure server-side slice (no game call). Filter by exact names and/or a substring; without a filter, returns the top limit by self-time.

Args: capture_id: id from tracy_native_capture (required). names: exact function names to include. name_contains: case-insensitive substring filter (e.g. your mod prefix). limit: max rows to return (default 50).

tracy_diff_capturesA

Diff two captures by function to validate an optimization.

Negative delta = faster. Returns improved / regressed / added / removed plus overall movement (base vs new total, delta, pct).

Args: base_id: the "before" capture id (required). new_id: the "after" capture id (required). metric: 'self' (default) or 'total'. top_n: max rows per list (default 25).

tracy_jank_fpsA

Frame-level health, complementing the per-function view.

Actions:

  • sample_fps: poll get_Fps()/get_frame_time() over the window; returns avg/min/max and p1/p5/p50 percentiles.

  • read_jank_logs: scrape recent jank/profile lines from MCDK logs.

Args: action: one of sample_fps | read_jank_logs (required). side: 'client' or 'server'. duration_seconds: window for sample_fps (default 5). log_lines: lines to scan for read_jank_logs (default 200).

tracy_native_captureA

Capture function timings from the game's NATIVE Tracy server (TCP 8086).

Use this once tracy_status reports native_tracy.reachable=true and bin_present=true. The client embeds a native Tracy server (the one the tracy-profiler GUI connects to) even on builds where the Python profiler binding is missing. This drives the bundled tracy-capture / tracy-csvexport CLIs; no module whitelist is needed (native Tracy traces every zone, across the client's MAIN_THREAD and MC_SERVER threads).

Drive the gameplay you want to measure DURING the window. The returned capture_id plugs into tracy_get_function_costs / tracy_diff_captures exactly like an in-game capture.

Args: seconds: capture window, 0 < s <= 60 (default 5). name_contains: case-insensitive filter, e.g. 'arrisCreate' to keep only your mod's functions (matched against "name @ src_file"). top_n: rows returned inline (default 25; the full set is stored for later get_function_costs / diff queries). address/port: native Tracy endpoint (default 127.0.0.1:8086). label: tag for diffing, e.g. 'before' / 'after'.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

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