From zymtrace
Use when connecting Claude Code (or another MCP client) to the zymtrace MCP server so the user can analyze CPU and GPU flamegraphs through natural-language queries. Walks through finding the gateway URL, generating an auth token (if service-token auth is on), running `claude mcp add`, and verifying the connection via `/mcp`. This skill is plumbing only — the analytical workflow lives in `analyze-zymtrace-workload`. Trigger phrases: "connect zymtrace MCP", "set up zymtrace MCP", "configure zymtrace MCP", "add zymtrace to /mcp", "connect Claude to zymtrace", "/mcp doesn't show zymtrace", "zymtrace MCP token", "Cursor zymtrace integration", "set up the zymtrace AI assistant".
How this skill is triggered — by the user, by Claude, or both
Slash command
/zymtrace:configure-zymtrace-mcpThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Helps the user connect Claude Code (or Cursor / Claude Desktop / any MCP client) to their zymtrace backend's MCP server. Once connected, the user can analyze their CPU and GPU flamegraphs with natural-language queries — see [`analyze-zymtrace-workload`](../analyze-zymtrace-workload/SKILL.md) for the analytical workflow.
Helps the user connect Claude Code (or Cursor / Claude Desktop / any MCP client) to their zymtrace backend's MCP server. Once connected, the user can analyze their CPU and GPU flamegraphs with natural-language queries — see analyze-zymtrace-workload for the analytical workflow.
The MCP server is part of the zymtrace backend itself — it lives at
<gateway-host>/mcp. If the backend isn't installed and reachable yet, route toinstall-zymtrace-backendandexpose-zymtrace-backendfirst.
👋 Let's connect Claude to your zymtrace MCP so you can analyze flamegraphs in natural language from this terminal. I'll need your zymtrace gateway URL and — if your install has service-token auth on — a token. Five minutes max.
Doc reference: https://docs.zymtrace.com/mcp/configure-mcp
Skip the greeting if the user has already volunteered the URL and token.
claude --version
claude mcp list 2>&1 | head -20
If claude --version is older than v2.x → MCP support varies by version; recommend updating Claude Code. If zymtrace already appears in claude mcp list, the connection exists — jump straight to verification (Step 4).
| Variable | Resolve by |
|---|---|
| Backend gateway URL | Ask the user. Typically https://zymtrace.<their-domain> or the ALB / Ingress hostname. If installed in-cluster only, see "Port-forward fallback" below. |
| MCP endpoint | <gateway-url>/mcp — append /mcp to whatever they give you. |
| Auth required? | If the backend has auth.serviceToken.enabled: true (check with kubectl get cm -n <NS> -o yaml | grep -i serviceToken), the user needs a token. Otherwise skip. |
| Existing MCP servers | claude mcp list — to avoid name collision. |
Things you must ask:
| Backend setting | What's needed |
|---|---|
auth.serviceToken.enabled: false (default) | No token. Connection is open within the network that can reach the gateway. |
auth.serviceToken.enabled: true | Token required. Generate one in the zymtrace UI: Settings → Service Tokens → New Token. Full doc: https://docs.zymtrace.com/mcp/mcp-token. |
For production exposures behind ALB / NGINX / mTLS, service-token auth is recommended.
curl -fsI <gateway-url>/health 2>&1 | head -3
Should return HTTP 200/204. If unreachable → the gateway isn't exposed externally; route to expose-zymtrace-backend or use the port-forward fallback below.
The token is generated through the zymtrace UI, not by this skill:
<gateway-url> (e.g. https://zymtrace.acme.com).mcp (or whatever scope the org uses).$ZYMTRACE_MCP_TOKEN env var.If your install doesn't have service-token auth on, skip this step.
Print the exact command:
claude mcp add zymtrace --transport http <gateway-url>/mcp \
--header "Authorization: Bearer $ZYMTRACE_MCP_TOKEN" # only if auth is on
Wait for explicit confirmation. The $ZYMTRACE_MCP_TOKEN placeholder means the user exports the token in their shell first — never inline the literal token in the conversation or in files.
The user runs this (not the skill — the token is in their env):
# Auth-on case
export ZYMTRACE_MCP_TOKEN="<paste-token>"
claude mcp add zymtrace --transport http <gateway-url>/mcp \
--header "Authorization: Bearer $ZYMTRACE_MCP_TOKEN"
# Auth-off case
claude mcp add zymtrace --transport http <gateway-url>/mcp
For project scope instead of user scope, add --scope project and the MCP config lands in .claude/settings.json for the current repo.
claude mcp list | grep -i zymtrace
Should show the zymtrace server with Connected status. In a fresh Claude Code session, run /mcp and confirm zymtrace is listed.
Quick functional test:
Ask Claude (in a new session): "Using zymtrace MCP, list the top 5 hottest CPU functions from the last 1 hour."
If Claude returns data, the connection works. If it errors with unauthorized → token wrong, regenerate. If it errors with connection refused → gateway URL wrong or unreachable.
Direct the user to analyze-zymtrace-workload for the analytical workflow — workload classification (inference vs training), GPU↔CPU cross-view, pattern catalogues. That's where the connected MCP actually gets used.
If the user also connects the GitHub MCP, Claude can pair the flamegraph analysis with the actual codebase — locating the hot function in their repo and proposing a specific edit (PR-ready), not just a generic recommendation.
# Anthropic's first-party GitHub MCP, scoped to the relevant repo(s)
claude mcp add github --transport http https://api.githubcopilot.com/mcp/ \
--header "Authorization: Bearer $GITHUB_TOKEN"
Then in a session: "Analyze my GPU workload over the last hour, use the github MCP to find the code path in myorg/myrepo, and suggest a fix." Claude pulls the flamegraph from zymtrace, locates the hot frame in the repo via GitHub MCP, and proposes the edit. The two MCPs compose without any extra configuration on the skill side.
If the gateway has no external exposure (still ClusterIP), the user can MCP through a port-forward.
kubectl port-forward -n <backend-NS> svc/<PREFIX>-gateway 8080:80
# Leave this running, then in another shell:
claude mcp add zymtrace --transport http http://localhost:8080/mcp
This is fine for dev / one-off investigations. For team-wide use, run expose-zymtrace-backend to give the gateway a real hostname.
claude mcp list shows zymtrace with Connected status./mcp in a fresh Claude Code session lists zymtrace.If all three check, hand off to analyze-zymtrace-workload.
/mcp doesn't show zymtrace after claude mcp add → wrong shell scope. If you used --scope project, the server only appears when Claude Code runs in that repo. Add with no --scope flag (or --scope user) for global access.unauthorized on every query → token wrong, scoped wrong, or expired. Regenerate in Settings → Service Tokens.connection refused → gateway URL typo, missing /mcp suffix, or backend not exposed externally. Test with curl -I <gateway-url>/health first.Mixed Content in browser when testing UI on HTTP gateway → use HTTPS via expose-zymtrace-backend. MCP can stay on the same URL.claude mcp add arguments. Always reference an env var ($ZYMTRACE_MCP_TOKEN) the user exports.claude mcp add for them without explicit confirmation of the exact command + gateway URL./mcp or claude mcp list to verify.Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub zystem-io/zymtrace-skills --plugin zymtrace