trackman-mcp
An MCP server that logs into Trackman Golf with your own account and exposes
your stats — course rounds, practice sessions, shot-level launch-monitor data,
club gapping, and handicap — as MCP tools. On top of that, a set of Claude
skills act as your golf coach: they diagnose your weaknesses and hand you a
specific practice plan with drills and YouTube links for your next session.
[!IMPORTANT]
Unofficial. This project is not affiliated with or endorsed by Trackman.
It talks to Trackman's private web API using a token from your own
authenticated session, and automates a browser login on your behalf. This may
conflict with Trackman's Terms of Service — use it on your own account, at your
own risk. Never use it to access anyone else's data.
Design boundary
- MCP server = raw data fetch + auth only. No opinions.
- Skills = all the coaching (analysis, plans, drills).
See CLAUDE.md for the full architecture and auth/secret rules.
Install
Pick the path for how you use Claude. Each takes about two minutes, then do the
one-time Authentication step.
🖥️ Claude Desktop — one-click (recommended, no terminal)
- Download
trackman-golf.mcpb (from the latest release).
- Open Claude Desktop → Settings → Extensions, drag the file in (or
double-click it), and click Install. Leave the token field blank.
- In a chat, say "log in to Trackman" → a browser window opens → sign in
once with your Trackman email + password. That's it.
- Ask Claude: "What's my Trackman handicap?"
Nothing to install and no config to edit — Claude Desktop runs everything and
opens the sign-in browser for you. (First sign-in may take a moment if it needs
to fetch a browser. You may also see an "unsigned extension" note — expected for
one installed from a file.)
Platforms: macOS, Linux, and Windows — Claude Desktop runs the server via
uv on all three, and the browser sign-in uses Playwright (cross-platform). One
caveat on Windows: the local token/data files are protected by your Windows user
profile (ACLs) rather than POSIX 0600 modes. The optional cron/launchd
auto-refresh script is macOS/Linux only — on Windows use Task Scheduler, or just
re-run the in-app "log in to Trackman" when the ~7-day token lapses.
⌨️ Claude Code — plugin (server and coaching skills)
/plugin marketplace add bjornj12/trackman-mcp-client
/plugin install trackman-golf@trackman-golf
Installs the MCP server (run via uvx) and all six coaching skills.
🔌 Other MCP clients (or Claude Desktop without the extension)
Requires uv (curl -LsSf https://astral.sh/uv/install.sh | sh).
Add this to your client's MCP config:
{
"mcpServers": {
"trackman-golf": { "command": "uvx", "args": ["trackman-mcp"] }
}
}
For Claude Desktop's manual config (~/Library/Application Support/Claude/claude_desktop_config.json
on macOS), use the absolute path to uvx — e.g. /opt/homebrew/bin/uvx —
because the app doesn't inherit your shell PATH. The .mcpb install above
avoids this entirely.
Authentication (one-time)
The server needs to sign in to your Trackman account. Trackman has no public
login API, so it captures a token from a real signed-in browser session once;
it's then cached locally and refreshes itself. Your password is never seen or
stored by the tool, and nothing leaves your machine.
Easiest — just ask Claude to log in (Claude Desktop / Claude Code)
Say "log in to Trackman." A browser window opens (an isolated profile, not
your normal Chrome); sign in once. The token caches at ~/.trackman-mcp/token.json
(mode 0600) and the MCP uses it automatically from then on. No terminal, no
token to copy — the extension fetches a browser itself if you don't have one.
Terminal alternative (CLI users)
uv tool install "trackman-mcp[login]"
trackman-mcp login
trackman-mcp login --headless
scripts/install-refresh-schedule.sh
Advanced — paste a token
portal.trackmangolf.com → DevTools → Network → a graphql request → copy
the Authorization: Bearer … value → paste into the extension's Trackman
token field (or set TRACKMAN_TOKEN). Tokens expire after ~7 days, so the
sign-in flows above are easier.
Verify it worked
Ask Claude "Am I signed in to Trackman?" — it runs the authenticate tool and
replies with your name (never the token).
MCP tools
All tools return raw data only; the skills interpret it.
12 tools. The CRUD clusters take an action (so the agent isn't choosing
among many near-identical tools); the data reads stay discrete.
Setup: setup — one call returns an always-on coach system prompt (for a
Project), the skills as upload-ready files, and per-client steps. There's a
matching setup prompt in the picker.
Auth: auth(action: status | login)
Data (read-only): get_profile · get_handicap · list_sessions ·
get_session (full detail incl. shot-level metrics) · get_course_rounds ·
get_club_stats · get_activity_summary
Session analysis (local, deterministic): session_analysis(action: analyze | get | list)
Training-plan memory: training_plan(action: save | next | list | done | verify)
Visualization: build_visualization (self-contained animated HTML artifact)
See CLAUDE.md for the full table and backing GraphQL.
Skills (coaching brain)
The skills under skills/ are delivered two ways:
- Claude Code: installed automatically with the plugin.
- Any MCP client (incl. Claude Desktop): the server serves them as MCP
prompts, so they show up in your client's prompt picker — no separate install.
trackman-stats-analysis | Diagnose weaknesses from the data |
golf-coaching | Turn the diagnosis into an actionable practice plan (visual-first; auto-grades progress) |
drill-library | Curated drills + vetted links — incl. at-home / no-ball drills — plus live search |
golf-practice-at-home | Build a daily no-ball routine for a diagnosed fault, animated per drill |
trackman-session-analyzer | Ingest + normalize recent sessions |
trackman-visualizer | Animate a diagnosis (or a single drill's mechanics) as an HTML artifact |
(trackman-api-discovery is a project/dev skill and isn't served as a prompt.)
Development
uv venv && uv pip install -e '.[login,dev]'
trackman-mcp
uv run python scripts/validate.py
uv run pytest
uv run ruff check
uv run mypy
Releasing (PyPI + MCP Registry + the Desktop .mcpb) is one command —
scripts/release.sh patch — see PUBLISHING.md.
License
MIT