Garmin MCP Server for Poke MCP Server

Local setup required. This server has to be cloned and prepared on your machine before you register it in Claude Code.
1

Set the server up locally

Run this once to clone and prepare the server before adding it to Claude Code.

Run in terminal
pip install -r requirements.txt
python src/server.py
2

Register it in Claude Code

After the local setup is done, run this command to point Claude Code at the built server.

Run in terminal
claude mcp add -e "GARMINTOKENS_BASE64=${GARMINTOKENS_BASE64}" garmin-mcp-poke -- python "<FULL_PATH_TO_GARMIN_MCP_POKE>/dist/index.js"

Replace <FULL_PATH_TO_GARMIN_MCP_POKE>/dist/index.js with the actual folder you prepared in step 1.

Required:GARMINTOKENS_BASE64
README.md

Exposes 90+ Garmin Connect tools over HTTP via FastMCP

Garmin MCP Server for Poke

A Poke-compatible MCP server exposing 90+ Garmin Connect tools over HTTP via FastMCP. Deployable to Render.

Built on top of Taxuspt/garmin_mcp and InteractionCo/mcp-server-template.

Setup

1. Generate OAuth Tokens

Garmin accounts with MFA require local token generation:

pip install garminconnect garth
python scripts/generate_tokens.py

This will prompt for your Garmin email, password, and MFA code, then output a base64 token string.

2. Deploy to Render

Option 1: One-Click Deploy

Click the "Deploy to Render" button above, then set GARMINTOKENS_BASE64 to the token string from step 1.

Option 2: Manual Deployment
  1. Fork this repository
  2. Connect your GitHub account to Render
  3. Create a new Web Service on Render
  4. Connect your forked repository
  5. Render will automatically detect the render.yaml configuration
  6. Set GARMINTOKENS_BASE64 in environment variables

Your server will be available at https://your-service-name.onrender.com/mcp

3. Connect Poke

Add your Render URL to Poke at poke.com/settings/connections:

https://your-service-name.onrender.com/mcp

Local Development

pip install -r requirements.txt
cp .env.example .env
# Edit .env and set GARMINTOKENS_BASE64
python src/server.py

Test with MCP Inspector:

npx @modelcontextprotocol/inspector

Open http://localhost:3000 and connect to http://localhost:8000/mcp using "Streamable HTTP" transport.

Token Refresh

Tokens last approximately 6 months. When they expire, re-run generate_tokens.py and update the Render env var.

Tool Categories

Category Tools Examples
Activity Management 14 Activities by date, splits, weather, HR zones, gear
Health & Wellness 28 Stats, sleep, stress, body battery, HRV, SpO2, steps
Training 10 Training status, endurance score, hill score, lactate threshold
User Profile 4 Profile info, settings, unit system
Devices 7 Device list, settings, alarms, solar data
Gear Management 3 Gear inventory, add/remove gear from activities
Weight Management 5 Weigh-ins, add/delete measurements
Challenges 10 Goals, badges, challenges, race predictions, PRs
Workouts 7 Workout library, scheduling, training plans, upload
Data Management 3 Body composition, blood pressure, hydration
Women's Health 3 Pregnancy, menstrual cycle tracking
Workout Templates 5 Resources with workout JSON templates

Attribution

Built on top of:

Tools (4)

get_activitiesRetrieve a list of Garmin Connect activities by date range.
get_health_statsFetch daily health metrics including steps, sleep, and stress.
get_training_statusRetrieve current training status and load metrics.
get_device_listList all registered Garmin devices and their settings.

Environment Variables

GARMINTOKENS_BASE64requiredBase64 encoded string of Garmin authentication tokens generated via scripts/generate_tokens.py

Configuration

claude_desktop_config.json
{ "mcpServers": { "garmin": { "command": "python", "args": ["src/server.py"], "env": { "GARMINTOKENS_BASE64": "YOUR_TOKEN_STRING" } } } }

Try it

What was my average heart rate during my last run?
How many steps did I take yesterday and what was my sleep score?
Show me my current training status and load.
List all my registered Garmin devices and their battery status.
What is my current body battery level?

Frequently Asked Questions

What are the key features of Garmin MCP Server for Poke?

Access to over 90 Garmin Connect tools. Supports tracking of activities, health metrics, and training data. Optimized for Poke compatibility. Deployable to Render via HTTP. Includes authentication flow for Garmin Connect.

What can I use Garmin MCP Server for Poke for?

Integrating Garmin health data into AI-powered fitness dashboards. Automating the retrieval of training status for personalized workout adjustments. Monitoring daily activity and sleep trends through natural language queries. Managing Garmin device settings and gear inventory via chat interface.

How do I install Garmin MCP Server for Poke?

Install Garmin MCP Server for Poke by running: pip install -r requirements.txt && python src/server.py

What MCP clients work with Garmin MCP Server for Poke?

Garmin MCP Server for Poke works with any MCP-compatible client including Claude Desktop, Claude Code, Cursor, and other editors with MCP support.

Turn this server into reusable context

Keep Garmin MCP Server for Poke docs, env vars, and workflow notes in Conare so your agent carries them across sessions.

Need the old visual installer? Open Conare IDE.
Open Conare