Set up garmlink in Gemini
Gemini reaches garmlink over the Model Context Protocol (MCP) — through Gemini CLI for individuals, or Gemini Enterprise for organisations. The consumer Gemini app cannot add custom connectors yet, so this guide covers the two routes that work today.
The Gemini app can't add MCP connectors
gemini.google.com cannot add custom MCP connectors today — the setting simply does not exist there. This guide covers the two paths that do work: the Gemini CLI for individuals, and Gemini Enterprise for organisations.Before you start
Connect your Garmin account
Path A — Gemini CLI (individual)
Install the Gemini CLI
npm install -g @google/gemini-cligemini
Sign in with your Google account when it asks.
Declare garmlink in the CLI settings
~/.gemini/settings.json (create it if it doesn't exist) and declare garmlink as an MCP server:{
"mcpServers": {
"garmlink": {
"httpUrl": "https://api.garmlink.ai/mcp",
"oauth": { "enabled": true }
}
}
}Nothing else goes in that file — no headers, no API key, no client secret. With OAuth enabled, the Gemini CLI runs the whole OAuth 2.0 flow itself.
Run the CLI and approve access
gemini in a terminal. The first time it reaches garmlink it opens a browser window: sign in, approve read-only access, and the CLI stores the tokens locally for next time.Then just ask, in plain language:
- “How did I sleep this week?”
- “Summarize my last five runs.”
- “Is my training load trending up or down this month?”
Path B — Gemini Enterprise (organisation)
Add the MCP server in Gemini Enterprise
https://api.garmlink.ai/mcpOnly the StreamableHTTP transport is supported — legacy SSE MCP servers are rejected. garmlink is StreamableHTTP, so it qualifies.
Authenticate and set the scope
Troubleshooting
- There is no MCP option in the Gemini app. Expected — the consumer app doesn't support custom connectors at all. Use the Gemini CLI, or Gemini Enterprise if your organisation has it.
- The CLI can't authenticate. Make sure
~/.gemini/settings.jsoncarries no header and no token next to the OAuth block — a stale Authorization header wins over the OAuth flow and the server answers 401. - The server is unreachable. The MCP URL must be reachable over HTTPS from the machine running the CLI (or from Gemini Enterprise) — check that no proxy or firewall is blocking it.
- Data looks empty or stale. Check where the sync stands on the Connection screen.
Using another assistant? See all four setup guides. Curious what garmlink can read? Browse the tools reference.