Skip to main content
Glama
bjornj12

golf-coach

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
TRACKMAN_TOKENNoYour Trackman API token. If not provided, the server will attempt to log in via a browser.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}
logging
{}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
extensions
{
  "io.modelcontextprotocol/ui": {}
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
authA

Check or (re)establish your Trackman sign-in.

Actions:

  • status (default): report whether the current token works and who you're signed in as. Use this first; it never opens anything.

  • login: (re)authenticate. If already signed in, confirms instantly. If the saved session expired and open_browser is true, it opens a sign-in window and returns immediately with pending: true — the window stays open for a few minutes and the user signs in at their own pace (the browser is driven by a background task, so it won't close on its own). After the user says they've finished, call auth(action='status') to confirm. Do NOT re-call login while one is pending — it won't open a second window.

source selects the data source to authenticate; only trackman needs auth (other sources, e.g. GameBook, are local). Never echoes the token.

trackmanA

Trackman data reads (controlled/flat-lie launch-monitor data). Raw only.

Actions:

  • profile: identity + current handicap (hcp.currentHcp, latest record).

  • handicap (paging skip/take default 20, only_in_avg): handicap history — per-round differentials and how the index moved.

  • sessions (skip/take default 25, kinds, time_from/time_to, include_hidden): list activities (practice sessions and course rounds) — totalCount + a page of item summaries. Use session with an item's id for full detail.

  • session (needs activity_id): one activity in full, with shot-level launch metrics (RANGE_PRACTICE strokes) or the scorecard (COURSE_PLAY).

  • rounds (skip/take default 20, completed): course rounds (scorecards) — per-hole scores and round stat aggregates. completed=None returns all rounds regardless of completion state.

  • clubs (include_retired): per-club gapping and dispersion ("My Bag" / Find My Distance) — the source for gapping analysis.

  • summary (time_from/time_to, skip/take default 50): activity counts grouped by kind over an optional time window.

take defaults to each action's own historical default (20 for handicap and rounds, 25 for sessions, 50 for summary) when omitted; pass it explicitly to override.

session_analysisA

Per-session analysis (deterministic classification + metrics, stored locally).

Actions:

  • analyze (needs activity_id): fetch a session, classify it (warm-up vs serious practice vs game), compute metrics, normalize vs prior stored sessions, store the record (last 30 kept), and return it.

  • get (needs activity_id): return one stored analysis record.

  • list: return the index of stored analyses (most recent first).

Drive this with the trackman-session-analyzer prompt.

training_planA

The coach's memory: save prescribed practice plans and recall/grade them.

Actions:

  • save (needs plan): persist a prescribed plan to the pending queue. The plan is a structured dict — title, focus, diagnosis, blocks [{name, club, reps, detail, link, goal}], and optional target_specs (machine-readable targets, e.g. {metric:'clubPath', club:'DRIVER', op:'between', low:-1, high:2}) used by verify. Returns the stored plan (with id). Capped at the most recent 50.

  • next: return the next pending plan — the answer to "what's today's training?".

  • list (optional status='pending'|'done'): list plans, oldest→newest.

  • done (needs plan_id, optional result_session_id): mark a plan complete.

  • verify (needs plan_id, optional activity_id): grade a recent session's real shot metrics against the plan's target_specs; returns per-target session-mean vs target, all_met, and a recommendation.

build_visualizationA

Render a coaching diagnosis into a self-contained animated HTML page.

Returns {html} — one standalone document (inline canvas/JS, no network, no external resources) ready to drop straight into a Claude HTML artifact.

data shape (all optional; the viz adapts): {title, subtitle, diagnosis, handedness "RH"|"LH", shots:[{launchDirection,launchAngle,carry,total, totalSide,curve,maxHeight,landingAngle,hangTime}], swing:{clubPath,faceAngle,faceToPath}, targets:[{label,value,target,low, high,met}], blocks:[{name,detail,goal,where "range"|"home", links:[{label,url}]}]}. Renders the measured flight (side view + top-down, animated) and drills grouped range/home. See the trackman-visualizer prompt.

setupA

One-call onboarding for the Trackman golf coach.

Returns everything needed to set the coach up in your client:

  • system_prompt: paste into a Claude/ChatGPT Project's custom instructions so every chat in it is the coach (with this MCP connected);

  • skills: upload-ready SKILL.md files (Settings → Capabilities → Skills) for always-on auto-activation;

  • instructions: per-client steps (Claude Projects, Desktop Skills, ChatGPT, Claude Code).

An MCP server can't create the Project or enable Skills itself — this hands you the content + steps. In Claude Code, the assistant can write the files for you directly from this kit. (Pairs with the setup prompt.)

synthesizeA

Cross-source, context-aware view: runs each source's expert analyzer and aligns their findings by skill area (no verdicts — the coach interprets).

Also returns two extra FACTUAL sections (measurement-only): delivery — the driver club-delivery facts (path / face-to-path / spin-axis / attack / spin); and leak_ranking — skill areas ordered by measured deviation-from-band severity. If the Trackman token has expired (and a silent refresh failed), this raises loudly rather than returning an empty view — re-auth with auth(action='login') and retry.

gamebookA

On-course rounds ingested from Golf GameBook screenshots (local, last 5).

The gamebook-screenshot-analysis skill extracts a round from screenshots and saves it here. Only score-per-hole is trusted; every other dimension carries a coverage flag (full|partial|none) and analysis respects it.

Actions:

  • save (needs round): a coverage-aware record — {date, course:{par,cr,slope}, result:{gross,net,to_par,position}, holes:[{hole,par,score,putts?,fairway?, gir?,bunkers?,chips?,penalties?}], coverage:{...}, dimensions:{...}}. Runs a self-check (hole sums vs gross/par); refuses inconsistent reads. Computes the scoring block, stores it (last 5), returns the stored record.

  • list: index of stored rounds (id, date, gross, net, to_par, coverage), newest first.

  • get (needs round_id): one full stored round.

  • compare (optional round_id, default latest): deterministic deltas vs the rounds before it — scoring always, other dimensions only where both tracked them. Returns measurement; the coach narrates progress from it.

Prompts

Interactive templates invoked by user choice

NameDescription
setupSet up the Trackman golf coach: get an always-on coach system prompt for a Project, plus the installable skills and per-client steps (Claude Desktop, claude.ai, ChatGPT, Claude Code).
at-home-practice-feedbackUse when the user wants a single at-home drill with built-in feedback and validation for a diagnosed fault — a quick, phone-readable drill card (fault, root cause, drill, feedback prop, budget tier, validation checkpoint, video). Triggers on "how do I know I'm doing it right", "drill with feedback", "quick drill for X", "what can I check at home before the range".
drill-libraryUse when the golf-coaching skill needs a drill or YouTube video for a specific weakness (dispersion, gapping, driver launch, wedge distance control, putting speed/start-line, chipping, course strategy, mental game, etc.). Provides a curated library of drills with metric targets and a seeded set of verified video links, plus a procedure for live web-searching fresh YouTube content when the library lacks a good match.
gamebook-screenshot-analysisUse to ingest Golf GameBook round screenshots (Round Summary + Statistics) into the coach. Extracts a coverage-aware round from the images, self-checks the read, stores it via the gamebook MCP tool (rolling last 5), and returns a normalized summary plus scoring-led progress vs prior rounds. Only score-per-hole is trusted; every other stat is flagged by how completely it was tracked.
golf-coachingUse when the user wants golf coaching — how they're doing, where they're losing strokes, what to practice to lower their score, OR asks "what's today's training / what should I work on today". Gathers data via the trackman-session-analyzer skill (forked), diagnoses gaps, prescribes a specific drill plan, and REMEMBERS it (saves to the MCP) so it can be recalled in a later session. The coach persona.
golf-practice-at-homeUse when the user wants to practice at home / in the yard / without a ball or range, or can't get to a range. Routes to golf-coaching's at-home mode + the drill-library at-home set to build a short daily no-ball routine, save it as a training plan, and grade it later. Triggers on "practice at home", "no range", "without a ball", "in the yard", "drills I can do at home".
grip-checkUse when the user shares a photo or clip of their golf grip, says "check my grip", "is my grip too weak / too strong", "here's how I'm holding it" — or when golf-coaching needs its pre-prescription grip check. Requires two face-forward views (club UP and club DOWN) and returns a too-weak / neutral / too-strong read graded against the current practice card. Qualitative visual read; never grades a view it wasn't given.
swing-video-checkUse when the user shares a filmed golf swing — an *.mp4/*.mov clip dropped into the project (named like 2026-07-17_driver_grip-reset.mp4) — or says "check my swing", "here's my grip rep", "analyze this driver clip", "did I square it". One camera angle per clip. Extracts key frames with ffmpeg and returns a short drill-scoped checklist plus one swing thought, grounded in the current practice card. Qualitative visual read — complements Trackman, measures nothing.
trackman-session-analyzerUse to ingest and analyze the user's recent Trackman sessions and report on the most recent one. Pulls activities via the MCP, classifies each as warm-up vs serious practice vs game, stores a per-session analysis locally (last 30, latest first), and returns a normalized performance summary of the LATEST session vs prior sessions. This is a data-collection skill — it MUST run in a forked subagent, never on the main thread.
trackman-stats-analysisUse when the user wants to understand their golf game, find weaknesses, or before building a practice plan. Pulls stats through the Trackman MCP tools and diagnoses weak areas — dispersion, club gapping, scoring trends, handicap movement. Analysis only; the golf-coaching skill turns the diagnosis into drills.
trackman-visualizerUse when the user wants to SEE a golf diagnosis — animate their real measured ball flight (side view + top-down), show why it curves, and link the drills that fix it. Turns golf-coaching output + real shot metrics into a self-contained animated HTML artifact. Triggers on "visualize", "show me the curve", "show my ball flight", "draw my slice", or after a coaching diagnosis.

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/bjornj12/golf-coach'

If you have feedback or need assistance with the MCP directory API, please join our Discord server