garmin-mcp
Garmin MCP
プロジェクト状態 (2026-08-23): 個人用トンネル実装。ローカルスモークテストは合格。 友人アクセスや公開 MCP イングレスを有効にしないでください。実際の Garmin 認証情報は、 オペレーターが公開する HTTPS link-web トンネルを明示的に承認し、ライブテスト チェックリスト
PERSONAL_TUNNEL_RUNBOOK.mdを完了するまでブロックされたままです。
マルチユーザー対応の読み取り専用 MCP リソースサーバーで、
cyberjungky/python-garminconnect をラップします。
ツールの引数としてユーザー ID を受け取らずに、認証済み Garmin データを公開します。
セキュリティモデル
以下の箇条書きは、当初の設計意図を説明しています。これらは現在の実装ではまだすべてが証明されているわけでは
ありません。既知のギャップと受け入れテストは、
DESIGN_DRAFT.md に記録されています。
MCP ベアラートークンは Garmin 認証とは別に検証されます。本番 OIDC では、 署名、発行者、オーディエンス、有効期限、必要なスコープを検証し、検証済みの
subクレームを使用します。Garmin のメールアドレス、パスワード、MFA コードは、リクエスト中のみに存在します。それらは保存もログ記録も されません。Uvicorn のアクセスログは無効です。
保存されるのは
python-garminconnectのシリアル化されたセッション JSON のみで、AES-256-GCM で暗号化され、 所有者としての符号に対して認証されるため、暗号文をユーザー間で移動することはできません。MFA クライアントはプロセスローカルで、単回使用、所有者バインド、5分で失効します。
接続 URL は署名済みのワンタイム状態をフラグメントに配置します。外部 JavaScript がフラグメントをクリアし、 状態を POST ボディに移動して、HTTP とプロキシのアクセスログから除外します。
切断すると、ローカルの暗号化トークンが削除されます。これは Garmin が発行済みのトークンを取り消すものでは ありません。不正利用が疑われる場合は、Garmin アカウントのセキュリティ設定でアクセスを取り消してください。
Related MCP server: garmin-mcp
個人用 ChatGPT トンネルモード
個人設定では、意図的に2つのリスナーを使用します:
SERVER_ROLE=mcp— ループバックポート 3000 で動作します。OpenAI がこのポートに到達できるのは Secure MCP Tunnel のみです。SERVER_ROLE=link-web— ループバックポート 3001 で動作します。MCP エンドポイントを公開せずに、 別の HTTPS トンネルがこのリスナーのみを公開し、端末から Garmin 認証情報を入力できるようにします。
AUTH_MODE=tunnel は設定済みの TUNNEL_PRINCIPAL_ID を1つ持ちます。これはマルチユーザーモードではありません。トンネルは認証境界であり、コンテナ分離が明示的に有効でない場合、
サーバーは複合モードや非ループバックバインドを拒否します。構成のエンドツーエンドの手順は、
PERSONAL_TUNNEL_RUNBOOK.md を参照してください。
ローカルでの実行
Python 3.12+、PostgreSQL 17、uv が必要です。
cp .env.example .env
# Fill secrets, then for local-only bearer authentication set AUTH_MODE=development.
uv sync --all-extras
psql "$DATABASE_URL" -f migrations/001_initial.sql
uv run garmin-mcpまたは、.env を作成した後で docker compose up --build を実行します。Compose は両ポートを
127.0.0.1 にのみ公開し、PostgreSQL は公開しません。MCP ポートは /mcp、ヘルスチェックポートは
/healthz です。開発モードでは、ベアラー値そのものがローカルユーザー ID です。開発モードを
ループバック以外に公開しないでください。
MCP ツール
*get_connection_status*connect_garmin— 10分間の、一度限りのブラウザ URL を返します*get_profile*disconnect_garmin
現在の Garmin データツールは読み取り専用です。disconnect_garmin は、保存されたセッションを削除して、
ローカルの接続状態のみを変更します。アカウント認証はブラウザのリンクページでのみ入力され、
MCP ツールの引数として提供されることはありません。ヘルス/アクティビティツールはまだ実装されていません。
検証
uv run ruff check .
uv run mypy src
uv run pytest
uv build
uv run pip-audit実際の Garmin 認証情報を CI に入れないでください。将来のライブテストでは、専用アカウントと 明示的な統合テストマーカーを使用する必要があります。
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceConnects Garmin Connect data to MCP-compatible clients, providing access to fitness activities, health metrics, and training plans. It supports advanced features like headless 2FA and automated MFA retrieval to enable seamless health data interaction through natural language.1MIT
- AlicenseNot gradedqualityBmaintenanceConnects MCP clients to Garmin Connect data, enabling queries about activities, sleep, heart rate, body battery, and training status.MIT
- FlicenseNot gradedqualityBmaintenanceExposes Garmin Connect health and activity data (steps, sleep, heart rate, etc.) via MCP tools, with built-in login and MFA support.
- AlicenseBqualityBmaintenanceEnables retrieval of Garmin Connect data such as activities, sleep, heart rate, and body battery levels using unofficial API through MCP tools.4MIT
Related MCP Connectors
Garmin data in Claude & ChatGPT via the Garmin Health API. OAuth sign-in, no password sharing.
Mastodon MCP — public Mastodon data via mastodon.social (no auth required)
Wise (https://wise.com) MCP, multi-currency account access via Personal Token + SCA key. Reads profi
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/balabeir/garmin-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server