Skip to main content
Glama
talvaknin744

garmin-coach-mcp

by talvaknin744

Local Garmin Coach MCP

Приватные инструменты персонального коучинга Garmin для Codex/ChatGPT desktop и Claude. Сервер работает только через локальный stdio: ни Cloudflare, ни Render, ни публичного URL, ни сервиса учётных записей, ни затрат на хостинг.

В основе среды выполнения лежит etweisberg/garmin-connect-mcp в коммите 87d0ea059fb67f1ce65ac05100df74c3c3777c84. Она сохраняет исходную лицензию AGPL-3.0 и указание авторства Taxuspt в NOTICE.

Предварительные требования

  • Node.js 20 или новее

  • pnpm 10.14.0

  • Учётная запись Garmin Connect и синхронизированные часы

Related MCP server: io.github.matisdsp/fartlek

Установка

cd /home/talvak/Desktop/repos/garmin-coach-mcp
pnpm install --frozen-lockfile
pnpm exec playwright install chromium
pnpm build
pnpm auth

pnpm auth открывает отдельный видимый профиль Chrome. Войдите вручную, выполните MFA, затем нажмите Enter в терминале. Браузерная сессия сохраняется в ~/.local/share/garmin-coach/browser-profile. Значения CSRF во время выполнения считываются с текущей аутентифицированной страницы и никогда не сохраняются и не выводятся на экран. Каталоги имеют права 0700, файлы — 0600, сохранение паролей отключено, а файл с именем пользователя/паролем не создаётся.

Получение контракта записи профиля Garmin

Garmin не публикует стабильный API для записи профиля ЧСС. Сервер отказывается угадывать его.

pnpm capture:profile-contract

Команда загружает текущую модель приложения Garmin, просит её сохранить без изменений текущие зоны по умолчанию и блокирует результирующий PUT до доставки. Она проверяет маршрут и точное неизменённое тело, затем сохраняет только обезличенную форму метода/пути/полей и поддерживаемые области в ~/.local/state/garmin-coach/profile-write-contract.json с правами 0600.

Если форму Garmin невозможно подтвердить, контракт не сохраняется, и запись профиля остаётся отключённой.

Подключение Codex и ChatGPT desktop

Сначала соберите проект, затем скопируйте config/codex.toml.example в ~/.codex/config.toml или добавьте эквивалентный сервер через ChatGPT desktop Settings > MCP servers. Codex CLI, расширение IDE и ChatGPT desktop используют общую локальную конфигурацию MCP на одном хосте.

В примере используются:

default_tools_approval_mode = "writes"

Оба инструмента применения также имеют явный approval_mode = "prompt". После настройки перезапустите клиент и используйте /mcp, чтобы проверить подключение.

ChatGPT web не может запустить этот локальный процесс stdio. Для записи в Garmin используйте ChatGPT desktop/Codex.

Подключение Claude

Объедините config/claude.json.example с конфигурацией MCP в Claude или выполните:

claude mcp add garmin-coach -- /home/talvak/snap/code/current/.local/share/pnpm/node /home/talvak/Desktop/repos/garmin-coach-mcp/dist/index.js

Блокировка файловой системы разрешает только одному локальному клиенту одновременно владеть профилем Chromium для Garmin. Остановите сервер в одном клиенте, прежде чем использовать другой.

Инструменты

Инструмент

Запись в Garmin

get_coaching_snapshot

Нет

get_training_program

Нет

preview_training_week

Нет

apply_training_week

Да, требуется подтверждение

verify_training_week

Нет

preview_hr_profile_update

Нет

apply_hr_profile_update

Да, требуется отдельное подтверждение

Безопасный рабочий процесс

  1. Вызовите get_coaching_snapshot и сравните результат с Garmin Connect.

  2. Вызовите preview_hr_profile_update.

  3. Проверьте каждое поле и подтвердите точное каноническое предложение/хэш.

  4. Вызовите apply_hr_profile_update; затем синхронизируйте Garmin и визуально проверьте зоны на часах.

  5. Вызовите preview_training_week для одной недели, начинающейся с воскресенья.

  6. Проверьте его данные о восстановлении, полную полезную нагрузку, предупреждения и хэш.

  7. Вызовите apply_training_week с неизменным каноническим предложением/хэшем.

  8. Вызовите verify_training_week и подтвердите, что понедельник/пятница — 135-149 bpm; в пятницу должны отображаться фиксированные инструкции 12%.

  9. Повторите оба вызова apply, чтобы доказать идемпотентность.

Боль/травма или болезнь блокируют запись тренировок. Восстановление может сохранить, уменьшить или пропустить нагрузку; оно никогда не увеличивает её. Тренировки никогда не удаляются автоматически.

Garmin показывает Treadmill как активность часов в категории Running, а не как вид спорта для структурированных тренировок. Поэтому пятница — это совместимая с бегом тренировка под названием Incline Walk 12%; запускайте её из активности Treadmill на часах. Её указание уклона 12% и целевая зона 135-149 bpm остаются явными.

Утверждённый профиль ЧСС

Поле

Значение

Максимальная ЧСС

189 bpm

ЧСС в покое

55 bpm

ЧСС лактатного порога

181 bpm

Основа

Резерв ЧСС / настраиваемые BPM

Зона 1

122-134 bpm

Зона 2

135-149 bpm

Зона 3

150-162 bpm

Зона 4

163-176 bpm

Зона 5

177-189 bpm

Эти значения предварительные: возраст 27, ЧСС в покое 55, расчётная максимальная ЧСС 189 и вручную заданный LTHR 181. Флаги автоматического определения сохраняются. Будущие изменения потребуют нового предпросмотра и подтверждения.

Проверка

Обычные тесты выполняются офлайн и никогда не обращаются к Garmin:

pnpm test
pnpm lint
pnpm format:check
pnpm typecheck
pnpm build
git diff --check

См. spec.md с описанием поведения и docs/architecture.md с границами доверия.

Лицензия

AGPL-3.0. См. LICENSE и NOTICE.

Available Tools

7 tools
apply_hr_profile_updateB
Idempotent

Apply one unchanged approved HR proposal through the captured Garmin browser contract, verify, and roll back on failure.

ParametersJSON Schema
NameRequiredDescriptionDefault
hashYes
confirmedYes
canonicalProposalYes

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds the transactional behavior of 'verify, and roll back on failure' beyond the annotations (idempotentHint=true, destructiveHint=false). However, it does not explain what 'verify' entails or what specific failure conditions trigger rollback. The annotations already indicate it is non-destructive and idempotent, so the description provides moderate additional context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence of 16 words, highly concise and front-loaded with the action. However, it could include more parameter or usage context without sacrificing conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has no output schema and three required parameters with no descriptions. The description omits critical context such as prerequisites (e.g., must have captured the Garmin browser contract or previewed the proposal), what successful application returns, and what failure modes look like. This leaves significant gaps for an agent to use the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With schema_description_coverage at 0%, the description must compensate for missing parameter meanings, but it does not describe any of the three required parameters (canonicalProposal, hash, confirmed). The tool name and description imply the 'proposal' but do not map to the schema fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Apply' and the resource 'one unchanged approved HR proposal', and specifies the mechanism ('through the captured Garmin browser contract') and the post-apply steps ('verify, and roll back on failure'). This differentiates it from siblings like 'apply_training_week' and 'preview_hr_profile_update'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives such as 'preview_hr_profile_update' or 'apply_training_week'. It does not mention prerequisites or when to avoid using it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

apply_training_weekC
Idempotent

Create, schedule, and read back one unchanged approved week. Never deletes workouts.

ParametersJSON Schema
NameRequiredDescriptionDefault
hashYes
confirmedYes
canonicalProposalYes

TDQS

C2.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds key behavioral traits: it creates, schedules, and reads back, and explicitly states it never deletes workouts. This complements the annotations (idempotentHint, destructiveHint=false). However, it does not mention idempotency (already in annotations) or what happens on re-application, missing some depth.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise—two short sentences—with no fluff. It front-loads the core action. However, it sacrifices necessary detail for brevity, which slightly reduces effectiveness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has three required parameters, no output schema, and sibling tools with similar purposes, the description is insufficient. It does not explain parameters, return value, or how this tool fits with siblings. The annotations provide some context, but the description fails to round out the picture.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description provides zero explanation of the three parameters (hash, confirmed, canonicalProposal). The schema has constraints but no semantic meaning. With 0% schema description coverage, the description must compensate, but it completely fails to do so, leaving the agent to guess the role of each parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the tool creates, schedules, and reads back an approved week, which is a specific verb+resource. However, it does not differentiate from sibling tools like preview_training_week or verify_training_week, leaving ambiguity about when to use this tool versus those.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance is given on when to use this tool versus alternatives. The description does not mention prerequisites, when to choose apply_training_week over preview_training_week or verify_training_week, so the agent lacks context for correct selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_coaching_snapshotA
Read-onlyIdempotent

Read a privacy-filtered coaching snapshot: recovery, sleep, HRV, Body Battery, resting HR, load, recent activities, HR profile, and freshness.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoYYYY-MM-DD; defaults to today

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, establishing a safe read operation. The description adds value beyond annotations by noting 'privacy-filtered' – indicating that some data may be redacted based on user permissions – and by listing the specific data categories included. This provides additional behavioral nuance that the annotations alone do not convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, well-structured sentence that packs all essential information: action (Read), modifiers (privacy-filtered), object (coaching snapshot), and a comma-separated list of included data points. No filler, no repetition of schema or annotations. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one optional parameter, no output schema, full annotation coverage) the description is largely complete: it explains what the tool returns via the field list and implies it's a single snapshot object. A slight gap is the lack of explicit mention of the date scope (though the parameter implies it) and absence of any return structure hints (e.g., 'returns a JSON object'), but these are minor omissions for such a straightforward read operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% (the single 'date' parameter has a clear description with format and default). The tool description does not repeat or extend this information, but it also does not need to. At baseline 3 for high coverage, the description adequately complements the schema without adding extra meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Read') and resource ('privacy-filtered coaching snapshot') and enumerates the key data fields (recovery, sleep, HRV, Body Battery, etc.), making the tool's output immediately clear. It naturally distinguishes from sibling tools like 'get_training_program' or 'verify_training_week' which focus on training weeks or program details rather than a broad health snapshot.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not provide any explicit guidance on when to use this tool versus its siblings (e.g., 'Use this to get an overview of the athlete's readiness'; 'Not for specific training program details'). It relies solely on the tool name and the listed fields to imply context, leaving the agent to infer usage without clear disambiguating instructions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_training_programA
Read-onlyIdempotent

Return the exact five build weeks and week-six deload program.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, establishing safety and idempotency. The description adds that it returns a specific fixed program, which is useful context but does not disclose potential behaviors like whether the program is personalized or if it depends on user state. Given annotation coverage, the description adds moderate value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, direct sentence with no fluff. It efficiently conveys the tool's output without unnecessary words or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no parameters and a straightforward purpose, the description adequately specifies what it returns. However, it could be more complete by noting the program's format or any assumptions (e.g., static vs. dynamic). The absence of an output schema shifts some burden to the description, but the current text is sufficient for basic understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters to describe (schema coverage 100% by default). The baseline of 4 applies as the description need not explain parameters. No additional param info is required.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Return' and the resource 'the exact five build weeks and week-six deload program', making the tool's function evident. It is specific about the structure of the program, but does not explicitly differentiate from sibling tools like 'get_coaching_snapshot' which might also return program data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No usage guidance is provided. The description does not indicate when to use this tool versus alternatives (e.g., 'verify_training_week' for individual weeks), nor does it mention prerequisites or context. The agent must infer usage solely from the tool name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_hr_profile_updateA
Read-onlyIdempotent

Read current HR settings and return every approved before/after field, canonical proposal, and hash. Performs no Garmin writes.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false. The description adds value by specifying exactly what is returned (approved fields, proposal, hash) and confirming no writes, giving agents confidence in safe execution.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with no wasted words. The first sentence covers action and output; the second reinforces safety. Front-loaded and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameter-less tool with no output schema, the description fully covers what the tool does and what it returns. It explains the nature of the output (before/after fields, canonical proposal, hash) and clarifies no side effects. Complete for the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters, and the schema coverage is 100% (empty schema). The description appropriately does not mention parameters, as none exist. Per the rubric, 0 parameters baseline is 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Read' and specifies the resource 'current HR settings'. It details the exact outputs: 'every approved before/after field, canonical proposal, and hash'. This distinguishes it from the sibling 'apply_hr_profile_update' by explicitly stating it performs no writes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for previewing HR changes before applying them, reinforced by the explicit 'Performs no Garmin writes'. It does not explicitly name alternatives or when-not-to-use, but the context and sibling tool names provide sufficient guidance for an AI agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_training_weekA
Read-onlyIdempotent

Read current recovery data and build a complete canonical week without writing Garmin.

ParametersJSON Schema
NameRequiredDescriptionDefault
illnessNo
weekStartYesSunday in YYYY-MM-DD format
weekNumberYes
painOrInjuryNo
recoveryActionNokeep

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description reinforces these by stating it is a read operation ('Read ... without writing') and adds valuable context: the tool builds a 'canonical week' from 'current recovery data'. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence with no wasted words. It front-loads the action (Read) and outcome (build complete canonical week). Every word adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (5 params, 2 required, enums, no output schema), the description is incomplete. It doesn't explain what parameters like illness or recoveryAction do, nor what the return format is. Completeness is adequate for a simple read tool but leaves gaps for an agent needing to set options.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 20%, so the description must compensate. The description does not detail the parameters (illness, painOrInjury, recoveryAction) despite them being essential for the preview. It only implies that recovery data is used. A baseline of 3 is fair given the low coverage but no explicit parameter guidance in the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: read recovery data and build a complete canonical week without writing to Garmin. The verb 'preview' combined with the description distinguishes it from siblings like 'apply_training_week' and 'verify_training_week', which involve writing or verification. The phrase 'without writing' explicitly contrasts with write operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions 'read current recovery data' which implies use for preview before applying, and 'without writing Garmin' clearly contrasts with apply_training_week. However, it does not explicitly state when not to use it or list alternative tools by name. The context is clear but lacks explicit exclusions or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_training_weekC
Read-onlyIdempotent

Read Garmin and compare scheduled dates, managed workout steps, targets, descriptions, and IDs.

ParametersJSON Schema
NameRequiredDescriptionDefault
canonicalProposalYes

TDQS

C2.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint true, idempotentHint true, and destructiveHint false. The description's 'Read Garmin' aligns with these, adding piece of behavioral context (the data source) but not disclosing anything beyond annotations like rate limits or data freshness. Does not contradict annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence that is front-loaded with the action ('Read Garmin') and lists specific items to compare. No redundancy or fluff. Could be slightly improved by clarifying the comparison target, but overall efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite rich annotations covering idempotency and safety, the description fails to explain the required parameter (canonicalProposal) and does not describe the return format. Given no output schema, the agent is left guessing what the tool produces. The 'compare' aspect lacks context on reference data or expected input format.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%: the description never mentions the parameter 'canonicalProposal' or explains its meaning or usage. With only one required parameter, this is a critical gap. The agent cannot infer what value to provide. No compensation from examples or other fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses specific verb 'Read' and resource 'Garmin' and lists fields to compare (scheduled dates, steps, targets, etc.). It hints at a verification function distinct from sibling tools like preview_training_week or apply_training_week. However, 'compare' lacks clarity on what is being compared against what, and the data source 'Garmin' is vague (device? service?).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus siblings like preview_training_week or apply_training_week. There is no mention of prerequisites, contexts, or when not to use it. The agent must infer usage solely from the name and bare description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 7 tool updatesv0.1.0
    • First observedapply_hr_profile_update
    • First observedapply_training_week
    • First observedget_coaching_snapshot
    • First observedget_training_program
    • First observedpreview_hr_profile_update
    • First observedpreview_training_week
    • First observedverify_training_week

TDQS

A3.7/5.0

Scored across 7 tools

Disambiguation5/5

Each tool targets a distinct operation: training week verification, coaching snapshot, training program retrieval, preview/apply for training week, and preview/apply for HR profile. No two tools overlap in purpose; boundaries are clear even from the descriptions.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern using snake_case (e.g., verify_training_week, get_coaching_snapshot, preview_hr_profile_update). The verbs are semantically appropriate (get/preview for reads, apply for writes) and the noun phrases are uniformly structured.

Tool Count5/5

Seven tools cover the core coaching workflow without unnecessary redundancy. The count is well-scoped for the domain—neither sparse nor overwhelming—and each tool serves a clear, non-trivial purpose.

Completeness5/5

The tool set covers the full lifecycle for training week management (verify, get program, preview, apply) and HR profile updates (preview, apply), plus a snapshot for overall context. No obvious gaps exist; the server's stated scope is met without dead ends.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Local MCP server that connects Claude Desktop with Garmin and Apple Health data to read training and recovery, estimate heart rate and pace zones, analyze performance, and create structured workouts.
    22
    MIT
  • A
    license
    B
    quality
    C
    maintenance
    A private, read-only MCP server that gives local Codex and Claude Desktop sessions access to athletics and wellness data from a Garmin Forerunner 55. It runs locally over stdio, exposes read-only tools for daily health, recovery, performance, and workouts, and caches data in SQLite.
    8
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    A local, single-user, read-only MCP server that gives Claude Code access to your Garmin health and training data, exposing tools for health snapshots, training status, run details, body metrics, and training analysis.
    1
    MIT