Skip to main content
Glama
eversonl

Garmin Health MCP Server

by eversonl

Garmin Health MCP Server

Access your Garmin Connect health data directly in Claude Desktop and Claude Code CLI

An MCP (Model Context Protocol) server that provides Claude with access to your Garmin wearable health data including sleep, recovery, HRV, workouts, and more.

Features

  • πŸ›Œ Sleep Analysis: Hours, stages (light/deep/REM), quality scores

  • πŸ”‹ Body Battery: Garmin's proprietary recovery metric (0-100)

  • ❀️ HRV Tracking: Heart rate variability trends for recovery monitoring

  • πŸƒ Activity Data: Workouts by type, calories, duration, pace

  • πŸ“Š Health Metrics: Resting heart rate, stress levels, VO2 max

  • πŸ“ˆ Interactive Charts: Generate beautiful HTML dashboards

  • πŸ” Secure: Credentials stored locally, connects only to Garmin's API

Related MCP server: garmin-mcp

Quick Start

Prerequisites

  • Claude Desktop or Claude Code CLI installed

  • Node.js 18+ and npm

  • Python 3.8+

  • Active Garmin Connect account with a connected device

Installation

# 1. Clone this repository
git clone https://github.com/eversonl/garmin-health-mcp-server.git
cd garmin-health-mcp-server

# 2. Install Node.js dependencies
npm install

# 3. Install Python dependencies
pip3 install garminconnect fitparse gpxpy
# Or on managed systems:
pip3 install --user garminconnect fitparse gpxpy

# 4. Create .env file with your Garmin credentials
cp .env.example .env
# Edit .env and add your GARMIN_EMAIL and GARMIN_PASSWORD

# 5. Authenticate with Garmin Connect
npm run auth

Configure Claude Desktop

Edit your Claude Desktop configuration file:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • Linux: ~/.config/Claude/claude_desktop_config.json

Add this MCP server configuration:

{
  "mcpServers": {
    "garmin-health": {
      "command": "node",
      "args": ["/absolute/path/to/garmin-health-mcp-server/index.js"],
      "env": {
        "GARMIN_EMAIL": "your-email@example.com",
        "GARMIN_PASSWORD": "your-password"
      }
    }
  }
}

Important: Replace /absolute/path/to/garmin-health-mcp-server/ with the actual full path where you cloned this repo.

Restart Claude Desktop

Completely quit and restart Claude Desktop for the MCP server to load.

Using with Claude Code CLI

For Claude Code CLI users, this repository includes a .mcp.json configuration file that enables automatic MCP server loading.

Quick Setup for Claude Code

  1. Set environment variables with your Garmin credentials:

    # Windows PowerShell
    setx GARMIN_EMAIL "your-email@example.com"
    setx GARMIN_PASSWORD "your-password"
    # Linux/macOS
    export GARMIN_EMAIL="your-email@example.com"
    export GARMIN_PASSWORD="your-password"
  2. Authenticate with Garmin:

    npm run auth
  3. Start Claude Code from any directory:

    claude
  4. Verify the MCP server is loaded:

    /mcp

    You should see garmin-health listed as connected.

  5. Start querying your health data:

    "How did I sleep last night?"

    "What's my body battery level today?"

πŸ“˜ For detailed Claude Code setup instructions, see CLAUDE_CODE_SETUP.md.

Note: The .mcp.json file uses environment variable expansion for security. Update the args path if you installed the server in a different location.

Usage

Once configured, ask Claude questions like:

"How did I sleep last night?"

"What's my Body Battery looking like this week?"

"Show me my activities from the past month"

"Is my HRV improving?"

"Generate a health dashboard for the last 30 days"

Claude will use the MCP tools to fetch your Garmin data and provide insights.

Available Tools

The server exposes these tools to Claude:

Tool

Description

get_sleep_data

Sleep hours, stages, quality scores

get_body_battery

Recovery metric (0-100)

get_hrv_data

Heart rate variability trends

get_heart_rate

Resting, max, min heart rate

get_activities

Workout/exercise data

get_stress_levels

All-day stress tracking

get_summary

Combined health overview

get_user_profile

Account and device info

generate_chart

Create interactive HTML visualizations

Troubleshooting

"MCP server not found"

  • Verify the path in claude_desktop_config.json is absolute (starts with / or C:\)

  • Check that index.js exists at that path

  • Ensure you ran npm install in the repo directory

"Authentication failed"

  • Run npm run auth to refresh tokens

  • Check your credentials in the .env file or environment variables

  • Try logging into Garmin Connect website to verify your account

"Tools not appearing in Claude"

  • Completely quit Claude Desktop (don't just close the window)

  • Check Console.app (macOS) or Event Viewer (Windows) for MCP errors

  • Verify Node.js is accessible: node --version

  • Check Python dependencies are installed: python3 -c "import garminconnect"

"Missing data"

  • Some metrics require specific Garmin devices (e.g., Body Battery needs HRV-capable watches)

  • Historical data may have gaps if the device wasn't worn

  • New accounts may have limited history

"Too many requests" / Rate limiting

  • Garmin limits API requests - wait a few minutes before retrying

  • Use the get_summary tool instead of calling multiple individual tools

Privacy & Security

  • βœ… Credentials stored locally in .env and claude_desktop_config.json

  • βœ… Session tokens cached locally and auto-refresh

  • βœ… Connects only to Garmin's official API servers

  • βœ… No cloud storage or third-party data sharing

  • βœ… Open source - audit the code yourself

Development

# Run the server directly (for testing)
npm start

# Test authentication
npm run auth

# Run tests
npm test

License

MIT Β© EversonL

Credits

Built with:


πŸ’– Support This Project

If you find this MCP server useful, consider supporting its development:


Questions or issues? Open an issue on GitHub!

Available Tools

9 tools
generate_chartC

Generate an interactive HTML chart (sleep, body_battery, hrv, activities, or dashboard)

ParametersJSON Schema
NameRequiredDescriptionDefault
chart_typeYesType of chart to generate
daysNoNumber of days to include (default: 30)
output_pathNoPath to save HTML file (optional, defaults to temp file)

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It mentions the tool generates interactive HTML charts but doesn't disclose behavioral traits like whether it requires authentication, how it handles data sources (e.g., from sibling tools), file system interactions for output_path, performance characteristics, or error handling. The description is minimal and lacks critical operational context.

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, efficient sentence that front-loads the core action and resource. It lists the chart types concisely without unnecessary details. Every word earns its place, making it highly readable and to the point.

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 3 parameters, no annotations, and no output schema, the description is incomplete. It doesn't explain what the tool returns (e.g., file path, HTML content), how it interacts with data sources, or any dependencies on sibling tools. For a visualization tool with potential complexity, more context is needed to guide effective use.

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 100%, so the schema already documents all parameters thoroughly. The description lists the chart_type enum values, which adds minimal value beyond the schema. No additional semantic context (e.g., what each chart type visualizes, implications of days parameter) is provided, meeting the baseline for high schema coverage.

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 'generate' and the resource 'interactive HTML chart', specifying the chart types. It distinguishes from sibling tools (which are data retrieval tools like get_activities) by focusing on visualization generation rather than raw data fetching. However, it doesn't explicitly contrast with siblings beyond the different action.

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. It doesn't mention prerequisites, when to choose specific chart types, or how this relates to the sibling data retrieval tools (e.g., whether it uses data from those tools). Usage is implied but not explicitly stated.

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

get_activitiesC

Get workout/activity data including type, duration, calories, and distance

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoNumber of days to retrieve (default: 30)

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states it 'gets' data, implying a read-only operation, but doesn't mention permissions, rate limits, pagination, or error handling. For a data retrieval tool with zero annotation coverage, this is a significant gap in transparency.

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, efficient sentence that front-loads the purpose and lists key data fields. There is no wasted verbiage or redundancy, making it highly concise and well-structured for quick comprehension.

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 no annotations, no output schema, and multiple sibling tools, the description is incomplete. It doesn't explain what the return data looks like (e.g., format, structure), how to handle the single parameter in practice, or how this tool differs from others, leaving the agent under-informed for effective use.

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 100%, so the schema already documents the single parameter 'days' with its type, description, and default. The description adds no additional parameter information beyond what the schema provides, meeting the baseline for high schema coverage.

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 'Get' and the resource 'workout/activity data', specifying what data fields are included (type, duration, calories, distance). However, it doesn't differentiate from sibling tools like 'get_summary' or 'get_body_battery' that might also retrieve activity-related data, preventing a perfect score.

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 is provided on when to use this tool versus alternatives like 'get_summary' or 'get_body_battery'. The description implies it retrieves activity data but doesn't specify use cases, prerequisites, or exclusions, leaving the agent to guess based on tool names alone.

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

get_body_batteryB

Get Body Battery data (Garmin's recovery metric, 0-100)

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoNumber of days to retrieve (default: 7)

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It states this is a 'Get' operation (implying read-only) and mentions the data range (0-100), but doesn't cover important aspects like authentication requirements, rate limits, data freshness/latency, error conditions, or what format the data returns. For a data retrieval tool with zero annotation coverage, this leaves significant behavioral gaps.

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?

Extremely concise single sentence with zero wasted words. The parenthetical explanation efficiently adds context about what Body Battery represents without bloating the description. Every element serves a purpose.

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 tool's moderate complexity (single parameter retrieval), 100% schema coverage, but no annotations and no output schema, the description provides basic purpose but lacks important context about behavior, usage scenarios, and return format. It's minimally adequate but has clear gaps in guiding effective tool selection and invocation.

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 100%, with the single parameter 'days' fully documented in the schema. The description doesn't add any parameter-specific information beyond what the schema already provides about the days parameter. According to scoring rules, when schema coverage is high (>80%), the baseline is 3 even with no param info in the description.

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 action ('Get') and resource ('Body Battery data'), with a brief parenthetical explanation of what Body Battery represents. It distinguishes from siblings by specifying this particular Garmin metric rather than other data types like activities or heart rate. However, it doesn't explicitly contrast with similar tools beyond the metric name.

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 is provided about when to use this tool versus alternatives. The description doesn't mention prerequisites, timing considerations, or relationships to sibling tools like get_summary or get_hrv_data that might provide overlapping or complementary recovery metrics.

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

get_heart_rateC

Get resting, max, and min heart rate data

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoNumber of days to retrieve (default: 7)

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. While 'Get' implies a read operation, the description doesn't address important behavioral aspects like authentication requirements, rate limits, data freshness, or what happens when no data is available for the requested period.

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 extremely concise at just 6 words, front-loading the essential information with zero wasted words. Every element of the description ('Get', 'resting, max, and min heart rate data') contributes directly to understanding the tool's purpose.

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?

For a data retrieval tool with no annotations and no output schema, the description is insufficient. It doesn't explain what format the data returns in, whether it's aggregated or raw data, what time periods are supported, or any limitations of the retrieval. The context signals indicate this is a simple tool, but more behavioral context would be helpful.

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?

The input schema has 100% description coverage, with the single parameter 'days' clearly documented in the schema. The description doesn't add any parameter-specific information beyond what's already in the schema, so it meets the baseline of 3 for high schema coverage.

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 'Get' and specifies the resource as 'resting, max, and min heart rate data', which is specific and actionable. However, it doesn't distinguish this tool from potential sibling tools like 'get_activities' or 'get_hrv_data' that might also provide heart rate information in different contexts.

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. With sibling tools like 'get_activities' and 'get_hrv_data' that might overlap with heart rate data, there's no indication of when this specific heart rate data tool is appropriate versus those other options.

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

get_hrv_dataC

Get Heart Rate Variability (HRV) data in milliseconds

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoNumber of days to retrieve (default: 30)

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only states what data is retrieved ('HRV data in milliseconds') without mentioning any behavioral traits such as permissions required, rate limits, data freshness, or whether this is a read-only operation. This leaves significant gaps in understanding how the tool behaves in practice.

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, efficient sentence that directly states the tool's purpose without any fluff or redundancy. It is appropriately sized and front-loaded, making it easy to parse quickly while conveying the essential information.

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 lack of annotations and output schema, the description is incomplete for a data retrieval tool. It doesn't explain what format the HRV data is returned in (e.g., time series, aggregated values), how it's structured, or any limitations (e.g., historical data availability). This leaves the agent with insufficient context to use the tool effectively beyond basic invocation.

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?

The schema description coverage is 100%, with the single parameter 'days' fully documented in the schema (including type, description, and default). The description adds no additional parameter semantics beyond what the schema provides, so it meets the baseline for adequate but not additive value.

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 action ('Get') and resource ('Heart Rate Variability (HRV) data in milliseconds'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'get_heart_rate' or 'get_stress_levels' which might provide related physiological data, leaving room for ambiguity about when to choose this specific tool.

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 is provided on when to use this tool versus alternatives like 'get_heart_rate' or 'get_stress_levels'. The description lacks context about typical use cases, prerequisites, or exclusions, leaving the agent to infer usage based solely on the tool name and basic purpose.

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

get_sleep_dataC

Get sleep data including hours, stages (light/deep/REM), and quality scores

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoNumber of days to retrieve (default: 7)
start_dateNoStart date in YYYY-MM-DD format (optional)
end_dateNoEnd date in YYYY-MM-DD format (optional)

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It states what data is retrieved but lacks behavioral details such as authentication requirements, rate limits, data freshness, or whether this is a read-only operation (implied by 'Get' but not explicit). For a tool with no annotations, this is a significant gap in transparency.

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, efficient sentence that front-loads the purpose with specific data elements. There is no wasted text, and it directly communicates the tool's function without unnecessary elaboration.

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 no annotations, no output schema, and moderate complexity (3 parameters for data retrieval), the description is incomplete. It lacks details on return format (e.g., structure of sleep stages), error handling, or any behavioral context needed for effective use. The description does not compensate for these gaps.

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 100%, so the schema fully documents parameters (days, start_date, end_date). The description adds no parameter-specific information beyond what the schema provides, such as how parameters interact or affect the returned data. Baseline 3 is appropriate when schema handles parameter documentation.

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 'Get' and the resource 'sleep data' with specific data elements (hours, stages, quality scores). It distinguishes from some siblings like 'get_heart_rate' or 'get_stress_levels' by focusing on sleep metrics, though it doesn't explicitly differentiate from all possible overlapping tools.

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 is provided on when to use this tool versus alternatives like 'get_summary' or 'get_body_battery', which might include sleep data. The description implies usage for retrieving sleep metrics but offers no context on prerequisites, exclusions, or comparative scenarios with sibling tools.

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

get_stress_levelsB

Get all-day stress level data

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoNumber of days to retrieve (default: 7)

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states 'Get' which implies a read operation, but doesn't specify whether this requires authentication, rate limits, data freshness, or what the return format looks like. For a tool with no annotations, this leaves significant behavioral gaps.

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, efficient sentence with no wasted words. It's appropriately sized and front-loaded, clearly stating the core purpose without unnecessary elaboration.

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 simple parameter schema (1 optional parameter with full coverage) and no output schema, the description is minimally adequate. However, as a data retrieval tool with no annotations, it should ideally provide more context about return values or behavioral traits to be fully complete.

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?

The input schema has 100% description coverage, with the 'days' parameter fully documented in the schema. The description doesn't add any parameter details beyond what the schema provides, so it meets the baseline of 3 where the schema does the heavy lifting.

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 ('Get') and resource ('all-day stress level data'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'get_hrv_data' or 'get_body_battery' which might also provide related wellness metrics, so it doesn't fully distinguish its specific scope.

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 is provided on when to use this tool versus alternatives. The description doesn't mention any context, prerequisites, or exclusions, leaving the agent to infer usage based on the tool name alone without explicit direction.

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

get_summaryC

Get combined health summary with averages across all metrics

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoNumber of days to retrieve (default: 7)

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It states the tool retrieves a 'combined health summary' but doesn't explain what metrics are included, how averages are calculated, whether data is real-time or historical, or what format the output takes. This leaves significant gaps for an AI agent to understand the tool's behavior.

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, efficient sentence that communicates the core purpose without unnecessary words. It's appropriately sized for a tool with one optional parameter and gets straight to the point with zero wasted text.

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 complexity of health data aggregation and the absence of both annotations and an output schema, the description is insufficient. It doesn't explain what 'combined health summary' means, what metrics are averaged, or what the return format looks like. For a tool that presumably aggregates multiple health metrics, this leaves too many unanswered questions.

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?

The input schema has 100% description coverage with clear documentation of the 'days' parameter. The description adds no additional parameter information beyond what's in the schema. According to scoring rules, when schema_description_coverage is high (>80%), the baseline is 3 even with no param info in the description.

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 tool's purpose with a specific verb ('Get') and resource ('combined health summary'), and specifies it includes 'averages across all metrics'. However, it doesn't explicitly differentiate from sibling tools like get_activities or get_body_battery, which might provide more granular 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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when this aggregated summary is preferable over individual metric tools (like get_heart_rate or get_sleep_data) or when other tools like generate_chart might be more appropriate for visualization needs.

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

get_user_profileB

Get user profile information and connected devices

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It states the tool retrieves data, implying a read-only operation, but doesn't disclose behavioral traits like authentication needs, rate limits, or what specific profile/device details are returned. This leaves significant gaps for a tool with zero annotation coverage.

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, efficient sentence that directly states the tool's purpose without unnecessary words. It's appropriately sized and front-loaded, with no wasted information.

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 lack of annotations and output schema, the description is incomplete. It doesn't specify what profile information or connected devices are returned, nor does it cover behavioral aspects like response format or error handling. For a tool with no structured data support, this leaves too many gaps.

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?

The tool has 0 parameters with 100% schema description coverage, so the schema fully documents the lack of inputs. The description doesn't need to add parameter semantics, and it appropriately avoids discussing parameters, earning a baseline score of 4 for this context.

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 ('Get') and resource ('user profile information and connected devices'), making the purpose unambiguous. However, it doesn't differentiate from sibling tools like 'get_activities' or 'get_summary' that also retrieve user data, so it doesn't fully distinguish its specific scope.

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 is provided on when to use this tool versus alternatives like 'get_activities' or 'get_summary'. The description implies it's for retrieving profile and device data, but doesn't specify contexts, prerequisites, or exclusions for usage.

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

TDQS

A3.5/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose targeting specific health metrics or functions, with no overlap in scope. The tools cover different data types like activities, body battery, heart rate, HRV, sleep, stress, summaries, and profiles, making them easily distinguishable.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern with 'get_' or 'generate_' prefixes, using snake_case uniformly. This predictable naming scheme enhances readability and reduces confusion for agents.

Tool Count5/5

With 9 tools, the server is well-scoped for a health data domain, covering key metrics without being overwhelming. Each tool serves a specific, necessary function, making the count appropriate for comprehensive health monitoring.

Completeness4/5

The toolset provides broad coverage for retrieving health metrics, including core data like activities, sleep, and stress, with a summary tool for aggregation. A minor gap exists in update or management tools for user data, but retrieval operations are largely complete for the domain.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Enables Claude to access and query your Garmin Connect data, including sleep, activities, training load, and health metrics, through a set of read-only MCP tools.
    28
    1
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Connects Garmin watch data to Claude Desktop, allowing users to ask natural language questions about their health and activity data from Garmin Connect.
  • A
    license
    A
    quality
    C
    maintenance
    Enables users to analyze their own Garmin Connect dataβ€”activities, sleep, HRV, Body Battery, training readinessβ€”directly inside Claude Desktop.
    13
    2
    MIT

Latest Blog Posts

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/eversonl/garmin-health-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server