Garmin MCP — Auth & Tool-Call Flow

Garmin MCP — Auth & Tool-Call Flow A sequence diagram generated by Archify. POST /authorize (email + password + MFA) SSO web-widget login ticket -> OAuth1 token store grant (encrypted) owner allowlist checked; credentials discarded 302 -> access token POST /mcp + Bearer token validate token -> decrypt grant invoke tool (session DO) exchange OAuth1 -> OAuth2, GET connectapi OAuth2 bearer cached ~1h Garmin data tool result JSON-RPC result One-time authorize Every tool call MCP Client · ChatGPT / Claude · Sequence participant MCP Client ChatGPT / Claude Worker · OAuth 2.1 provider · Sequence participant Worker OAuth 2.1 provider Workers KV · encrypted grants · Sequence participant Workers KV encrypted grants GarminMCP · Durable Object · Sequence participant GarminMCP Durable Object Garmin Connect · sso + connectapi · Sequence participant Garmin Connect sso + connectapi Legend request return security async trace default message

One-time authorize

  • • SSO web-widget login runs server-side with MFA; password discarded after use
  • • Grant props are AES-GCM encrypted in KV; owner allowlist gates who may connect

Every tool call

  • • No raw-header path: each request needs a provider-validated access token
  • • OAuth1 is exchanged for a short-lived OAuth2 bearer, cached per session

Isolation

  • • Anonymous requests get 401 before any Garmin call is made
  • • Token cache is principal-bound, so a reused DO never crosses accounts