Skip to main content

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)

  1. Download trackman-golf.mcpb (from the latest release).
  2. Open Claude Desktop → Settings → Extensions, drag the file in (or double-click it), and click Install. Leave the token field blank.
  3. In a chat, say "log in to Trackman" → a browser window opens → sign in once with your Trackman email + password. That's it.
  4. 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              # opens a browser; sign in once
trackman-mcp login --headless   # silent refresh later (tokens last ~7 days)
scripts/install-refresh-schedule.sh   # optional: auto-refresh twice weekly

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.
Skill What it does
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]'   # [login] = Playwright, [dev] = test/lint tools

trackman-mcp                       # run the MCP server (stdio)
uv run python scripts/validate.py  # sanity-check stats coverage with your token

uv run pytest        # tests
uv run ruff check    # lint
uv run mypy          # type-check

Releasing (PyPI + MCP Registry + the Desktop .mcpb) is one command — scripts/release.sh patch — see PUBLISHING.md.

License

MIT

Release files for trackman-mcp 0.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for trackman-mcp 0.4.0
File Size Uploaded
trackman_mcp-0.4.0.tar.gz 270.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for trackman-mcp 0.4.0
File Interpreter ABI Platform
trackman_mcp-0.4.0-py3-none-any.whl Python 3 none any Details

Total release size: 350.0 kB

Release files / trackman_mcp-0.4.0.tar.gz

Download URL trackman_mcp-0.4.0.tar.gz
Size 270.9 kB
Tags Source
SHA-256 checksum
How to use checksums
bcab83ae9638be2af42df7e7e54099131db47394965498c6841174b48a04d717
BLAKE2b-256 checksum
How to use checksums
ac4e2c307b7d3eeb5ed78a16b3be61427bff23860a9407ad06f889cfe0876629
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 2, 2026.

Transparency log

Release files / trackman_mcp-0.4.0-py3-none-any.whl

Download URL trackman_mcp-0.4.0-py3-none-any.whl
Size 79.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
68f418ecd901534bb8e4a85ca4ede9f31f1ac107c66284f6eaa237656a4cde58
BLAKE2b-256 checksum
How to use checksums
4883075632ba56eea4eebaa393f7cea75ed5c028651d27499ca49250d69e41ed
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 2, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.4.0 This release

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page