Garmin Tn Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Garmin Tn Mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
garmin-raw)English | Русский
Minimal raw access to Garmin Connect for training analysis. One backend (garminconnect 0.3.x) powers two frontends:
garmin-raw-mcp) — live data access inside Claude Desktop chat.garmin-raw-export) — dumps a date range to JSON forreuse with other athletes (the file is uploaded into a chat).
Principle: raw data only (per-lap HR / cadence / power / stride / elevation, per-second streams, the lactate comment). No VO2max / training-effect / device threshold estimates — those are deliberately excluded.
Requires Python 3.10+ and uv.
git clone https://github.com/asilenin/Garmin-TN-MCP.git
cd Garmin-TN-MCP
uv syncuv run garmin-raw-authEnter email, password and the MFA code. Tokens are saved to ~/.garminconnect (0.3.x format). After that no login is needed — the server and the export run on tokens (and avoid 429 rate-limiting from repeated logins).
uv run garmin-raw-installIt auto-resolves uv and this folder's path and safely merges the garmin-raw server into claude_desktop_config.json without overwriting the rest (your preferences, etc.), with a backup. Cross-platform (macOS/Windows/Linux). You can pass the path explicitly:
uv run garmin-raw-install /full/path/to/Garmin-TN-MCPThen fully restart Claude Desktop (Cmd+Q on macOS) — the 6 tools appear.
<details> <summary>Manual alternative (if you prefer not to use the script)</summary>
Add to claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"garmin-raw": {
"command": "/Users/<you>/.local/bin/uv",
"args": ["--directory", "/full/path/to/Garmin-TN-MCP", "run", "garmin-raw-mcp"]
}
}
}</details>
uv run garmin-raw-uninstall # removes garmin-raw from the config (with backup), leaves the restRestart Claude Desktop. Tokens are not removed — delete them manually if you want:
rm -rf ~/.garminconnect # saved Garmin tokensRemove the whole thing:
cd .. && rm -rf Garmin-TN-MCP # the repository itself# whole period
uv run garmin-raw-export --start 2026-06-01 --end 2026-06-21
# single activity + per-second streams
uv run garmin-raw-export --start 2026-06-20 --end 2026-06-21 \
--activity 23321211303 --streamsProduces garmin_export.json — upload it into a chat.
| Tool | Returns |
|---|---|
list_activities(start, end, sport) | raw activity summaries for a period (1 request) |
get_activity_laps(id) | HR / cadence / power / stride / elevation per lap (lapDTOs) |
get_activity_streams(id) | per-second streams (HR, cadence, elevation, grade, power, stride, respiration) |
get_activity_comment(id) | the activity comment + parsed lactate (LA:x.x) |
get_wellness(date) | sleep, HRV, RHR, stress, Body Battery |
get_personal_records() | personal records by distance |
Write it into the activity comment in Garmin Connect as LA:6.1 (context is fine: LA:6.6 @rep12). get_activity_comment reads the description field and parses every value into lactate_mmol. The comment is fetched lazily — only for activities actually under analysis — to avoid doubling the request count.
can be faster than official results. Use certified times as form markers and Garmin PRs only as a hint.
garminconnect version renames one, the tool returns _error instead of crashing the whole response.
for shared exports.
garmin-raw-auth. The one-shot export is the robust fallback.
This project accesses Garmin Connect through an unofficial method (the community python-garminconnect library, which logs in with your own credentials). It is not affiliated with, endorsed by, or supported by Garmin. Your use may be subject to Garmin's Terms of Service; you use it at your own risk. No warranty is provided (see LICENSE).
This project was designed and written by Claude (Anthropic's AI assistant) during an extended pair-programming session, under the direction, review and testing of Anton Silenin. The methodology, architecture, debugging and final verification against real Garmin data were done collaboratively in conversation: the human author initiated the work, made the design decisions, validated every step on live data, and is the copyright holder.
AI-generated output carries no separate human authorship under copyright law, so it is released under the human author's name (MIT, see LICENSE). This note is here for transparency, not as a license requirement. As with any AI-assisted code, review it before relying on it.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.