{"id":"taxuspt-garmin-mcp","name":"garmin_mcp","homepage":null,"repo_url":"https://github.com/Taxuspt/garmin_mcp","category":"ai-ml","subcategories":[],"tags":["mcp","fitness","health","garmin","python","data-integration"],"what_it_does":"An MCP server that connects to Garmin Connect (via the python-garminconnect library) and exposes fitness/health data and related operations as a large set of MCP tools for MCP-compatible clients (e.g., Claude Desktop). Includes an auth CLI to pre-authenticate and persist OAuth tokens for MFA and subsequent use.","use_cases":["Answer questions about recent activities and workout details","Retrieve health metrics such as steps, heart rate, sleep, stress, and respiration","Summarize training readiness, training status, and weekly health aggregates","Access gear/equipment, workouts, and training plans","Get user/profile, body composition, and related wellness data"],"not_for":["Uploading large GPS-tracked activity details (GPS/chart data is intentionally skipped for performance)","Destructive operations without explicit care (e.g., delete endpoints are mentioned as destructive/skipped)","Environments where interactive MFA auth is impossible (without a pre-auth step)"],"best_when":"You want a local MCP toolset to query your Garmin Connect data through an MCP client, and you can run a one-time/occasional pre-auth flow to handle Garmin login + possible MFA.","avoid_when":"You need a hosted SaaS API with no local credentials/token handling, or you require strict rate-limit SLAs and clearly published API error codes for programmatic retries beyond MCP-level behavior.","alternatives":["Use the Garmin Connect web/mobile experience directly","Use python-garminconnect directly in your own script (without MCP)","Build your own MCP wrapper around python-garminconnect for only the tools you need"],"af_score":52.5,"security_score":64.0,"reliability_score":28.8,"package_type":"mcp_server","discovery_source":["github"],"priority":"high","status":"evaluated","version_evaluated":null,"last_evaluated":"2026-03-30T13:33:40.325061+00:00","interface":{"has_rest_api":false,"has_graphql":false,"has_grpc":false,"has_mcp_server":true,"mcp_server_url":null,"has_sdk":false,"sdk_languages":[],"openapi_spec_url":null,"webhooks":false},"auth":{"methods":["Pre-auth via garmin-mcp-auth CLI (saves OAuth tokens to ~/.garminconnect or a configured token path)","Environment-variable credentials (GARMIN_EMAIL, GARMIN_PASSWORD) for initial auth / interactive mode","MFA handled during the pre-auth / interactive auth flow"],"oauth":true,"scopes":false,"notes":"Authentication is handled for Garmin Connect by the garminconnect library and persisted OAuth tokens. The README advises configuring the MCP server without credentials after pre-auth."},"pricing":{"model":null,"free_tier_exists":false,"free_tier_limits":null,"paid_tiers":[],"requires_credit_card":false,"estimated_workload_costs":null,"notes":"Open-source tooling; costs are primarily infrastructure/runtime and any local compute used by the MCP server."},"requirements":{"requires_signup":false,"requires_credit_card":false,"domain_verification":false,"data_residency":[],"compliance":[],"min_contract":null},"agent_readiness":{"af_score":52.5,"security_score":64.0,"reliability_score":28.8,"mcp_server_quality":85.0,"documentation_accuracy":70.0,"error_message_quality":0.0,"error_message_notes":null,"auth_complexity":55.0,"rate_limit_clarity":10.0,"tls_enforcement":80.0,"auth_strength":75.0,"scope_granularity":20.0,"dependency_hygiene":55.0,"secret_handling":85.0,"security_notes":"Supports file-based secrets and advises avoiding credentials in MCP config after pre-auth; tokens persisted locally (e.g., ~/.garminconnect or a token path). No explicit discussion of TLS enforcement, data minimization, or fine-grained authorization scopes in the README. Rate-limit and error-handling guidance for safer automated retries is not documented.","uptime_documented":0.0,"version_stability":45.0,"breaking_changes_history":35.0,"error_recovery":35.0,"idempotency_support":"false","idempotency_notes":"The README mentions destructive operations are intentionally skipped; for non-destructive GET-like tools, behavior is likely safe, but explicit idempotency guarantees are not documented.","pagination_style":"pagination supported (for recent activities) per README feature list","retry_guidance_documented":false,"known_agent_gotchas":["MFA may require a one-time pre-auth step because MCP servers run without an interactive terminal","Token expiry is periodic (README suggests ~6 months), requiring re-auth with --force-reauth","Some high-data-volume endpoints (e.g., activity details with large GPS/chart data) are skipped; agents must use the lighter get_activity() tools instead","Claude Desktop may fail to spawn the process if uvx is not in PATH; use full path to uvx"]}}