Skip to main content
Glama
nico-b

Nolio MCP Server

by nico-b

Nolio MCP Server

An MCP server that gives Claude read-only access to your Nolio training data — planned workouts, completed sessions, metrics, records, and notes.

Prerequisites

Related MCP server: Intervals.icu MCP Server

Quick Start

1. Clone and install

git clone <repo-url> nolio-mcp
cd nolio-mcp
uv sync

2. Configure client credentials

Create a .env file with your Nolio client credentials:

cp .env.example .env
# Edit .env and fill in NOLIO_CLIENT_ID and NOLIO_CLIENT_SECRET

3. Authenticate with Nolio

Run the built-in OAuth helper to obtain your access and refresh tokens:

uv run nolio-auth

This opens your browser, you log into Nolio, and all credentials (client ID, client secret, access token, refresh token) are saved to ~/nolio-credentials.json.

Important: In your Nolio app settings, set the redirect URI to http://localhost:9876/callback.

4. Add to Claude Code

Since credentials are stored in ~/nolio-credentials.json, you don't need to pass environment variables:

claude mcp add nolio -- uv run --directory /path/to/nolio-mcp mcp run src/nolio_mcp/server.py

You can also re-authenticate at any time from within Claude Code by running /mcp and selecting the authenticate command on the nolio server, or directly via /mcp__nolio__authenticate.

4b. Or add to Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "nolio": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/nolio-mcp", "mcp", "run", "src/nolio_mcp/server.py"]
    }
  }
}

No env block needed — the server reads credentials from ~/nolio-credentials.json.

Available Tools

Tool

Description

get_profile

Get your Nolio user profile (id, name)

get_planned_workouts

Retrieve planned workouts from your coach's program

get_workouts

Retrieve completed/logged workouts

get_workout_streams

Get time-series data for a workout (HR, pace, power, etc.)

get_notes

Retrieve notes (injury, availability, illness, rest, goals)

get_metrics

Get a specific metric (sleep, weight, VO2max, HR, etc.)

get_user_metadata

Get user metadata (goals, weight history, HR, FTP)

get_records

Get personal records (power, HR, pace, cadence)

Most tools support optional from_date, to_date (YYYY-MM-DD), and limit parameters.

Available Prompts (Commands)

Prompt

Description

authenticate

Guides you through the OAuth setup to obtain/refresh Nolio API tokens

In Claude Code, run /mcp → select nolioauthenticate, or use /mcp__nolio__authenticate directly.

Development

Testing with the MCP Inspector

uv run mcp dev src/nolio_mcp/server.py

Running unit tests

uv run pytest tests/test_client.py

Running integration tests

Integration tests hit the real Nolio API. Set up credentials first:

cp .test-env.example .test-env
# Fill in .test-env with your Nolio dev credentials
uv run pytest tests/test_integration.py -m integration

API Reference

Full Nolio API documentation: https://github.com/NolioApp/NolioAPI-Documentation/wiki

Available Tools

8 tools
get_metricsA

Get a specific metric entry by its ID. Requires special API authorization.

Args: id: Metric entry ID

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description fully carries the burden of behavioral disclosure. It explicitly notes an authorization requirement, which is a useful trait. However, it does not describe the response format, error behavior, or whether the operation is read-only (implied but not stated).

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 very concise: two lines of functional text plus one line for the parameter. Every sentence adds value, and the key action is front-loaded. No unnecessary words.

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 simplicity (one parameter, output schema present), the description adequately covers the core purpose and authorization. However, it does not contextualize what a 'metric entry' is relative to sibling tools like get_records or get_user_metadata, which could cause confusion.

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 schema coverage is 0%, but the description's Args section explains that the 'id' parameter is a metric entry ID. This adds meaning beyond the schema's bare integer type and title. For a single parameter, this is sufficient compensation.

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 retrieves a specific metric entry by ID, which is a specific verb and resource. It helps distinguish from sibling tools that retrieve other resources (like notes, workouts, records), but does not elaborate on what a metric entry is.

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

Usage Guidelines3/5

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

The description mentions 'Requires special API authorization,' which provides context for when to use (only with appropriate permissions). However, it does not specify when to avoid this tool or compare it to alternatives like get_records or get_workouts.

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

get_notesA

Retrieve notes (injury, availability, illness, rest, etc.).

Args: from_date: Start date filter (YYYY-MM-DD) to_date: End date filter (YYYY-MM-DD) limit: Max results to return (default 30) note_type: Filter by type: blessure, dispo, inconfort, goal, indispo, malade, menstruel, repos id: Specific note ID to retrieve

ParametersJSON Schema
NameRequiredDescriptionDefault
idNo
limitNo
to_dateNo
from_dateNo
note_typeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It only implies read-only behavior through 'Retrieve', but does not explicitly state that it doesn't modify data, nor does it mention authentication needs, rate limits, or any side effects.

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 concise with a brief purpose line followed by a parameter list. It's front-loaded and each sentence is useful. Minor improvement could be more structured formatting, but overall efficient.

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 existence of an output schema (not shown), the description doesn't need to detail return values. However, it lacks information on ordering, date range inclusivity, and behavior when 'id' is combined with other filters. Adequate but with clear 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?

With 0% schema description coverage, the description adds significant value: it lists enum values for 'note_type', specifies date format YYYY-MM-DD, and gives a default for 'limit'. This meaningfully augments the bare schema.

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 'Retrieve notes' with a parenthetical listing of note types, identifying the specific verb and resource. The sibling tools (e.g., get_metrics, get_workouts) are distinct, so this tool is well-differentiated.

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 sets clear context: it's for retrieving notes with optional filters. It doesn't explicitly state when not to use it or mention alternatives, but the sibling tools cover different resources, so usage is implied correctly.

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

get_planned_workoutsB

Retrieve planned workouts from your coach's training program.

Args: from_date: Start date filter (YYYY-MM-DD) to_date: End date filter (YYYY-MM-DD) limit: Max results to return (default 30) id: Specific planned workout ID to retrieve

ParametersJSON Schema
NameRequiredDescriptionDefault
idNo
limitNo
to_dateNo
from_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description must cover behavioral traits. It only indicates a read operation and lists parameters, but omits details like authentication, rate limits, default ordering, error handling, or pagination behavior beyond a limit. Minimal transparency.

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 concise, with a front-loaded purpose sentence and a structured parameter list. No unnecessary information. Slight inefficiency in repeating 'Args' header but overall efficient.

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?

The tool has 4 optional parameters and an output schema. The description adequately covers parameter semantics but lacks context on default behavior when no filters are provided, ordering of results, and empty result handling. Adequate but not comprehensive.

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 0%, so the description adds value by explaining each parameter's role and format (e.g., 'YYYY-MM-DD' for dates, 'Max results to return'). However, explanations are terse and could be more precise (e.g., date ranges inclusive/exclusive, interaction between parameters).

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 retrieves planned workouts from the coach's training program, using a specific verb and resource. It distinguishes from sibling tools like get_workouts (likely for completed workouts) by specifying 'planned' and 'coach's program'.

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 vs alternatives. It does not mention scenarios where get_workouts or other tools would be more appropriate, nor does it specify prerequisites or exclusions.

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

get_profileA

Get the authenticated user's Nolio profile (id, name).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior2/5

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

No annotations are provided, so the description must cover behavioral traits. It only mentions what is returned, omitting details like authentication requirements, caching, or side effects. For a read operation, this is minimally adequate.

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 concise sentence that front-loads the action and result. No redundant words.

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 (no params, output schema present), the description is nearly complete. It identifies the resource, scope (authenticated user), and return fields. Minor omission: it could state that no input is required.

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?

With zero parameters and 100% schema coverage, the description need not add parameter details. It does not, but the baseline of 4 is appropriate as the schema already fully specifies the input.

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 retrieves the authenticated user's Nolio profile, specifying the exact returned fields (id, name). It effectively distinguishes from sibling tools like get_metrics or get_notes, which target different data.

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

Usage Guidelines3/5

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

The description implies usage for fetching the current user's profile but provides no explicit guidance on when to use or avoid this tool, nor alternatives. It relies on context from the sibling tool list.

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

get_recordsA

Get personal records (power, HR, pace, etc.).

Args: cat: Record category — ppr (power), phrr (HR), par (pace), ptr (time), pvar (speed), pcadr (cadence) record_type: Either 'time' or 'distance' from_date: Start date filter (YYYY-MM-DD) to_date: End date filter (YYYY-MM-DD) sports: Comma-separated sport IDs (e.g. '9,23') items: Comma-separated durations in seconds or distances in meters

ParametersJSON Schema
NameRequiredDescriptionDefault
catYes
itemsNo
sportsNo
to_dateNo
from_dateNo
record_typeYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description bears full burden for disclosing behavior. It implies a read-only operation but doesn't explicitly state it. No mention of side effects, authorization needs, or rate limits.

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 concise summary followed by a well-organized bulleted list of parameters. Every sentence adds value without redundancy.

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 that an output schema exists, return value explanation is unnecessary. The description adequately covers the main parameters and purpose. Minor gap: not stating that records are for the authenticated user.

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?

Schema coverage is 0%, so the description compensates well by detailing each parameter, especially 'cat' with its abbreviations and 'items' with units. However, date format is not specified and sports IDs meaning could be expanded.

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 'Get personal records' and lists specific categories (power, HR, pace, etc.), differentiating it from sibling tools that deal with other data like metrics, notes, or workouts.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool vs alternatives, but the context of 'personal records' and sibling tool names implies distinct usage. Some insight on parameter selection is provided but no when-to-use or when-not-to-use statements.

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

get_user_metadataC

Get user metadata including goals, weight history, HR, sleep, aerobic speed, FTP. Requires special API authorization.

Args: from_date: Start date filter (YYYY-MM-DD) to_date: End date filter (YYYY-MM-DD) limit: Max results to return (default 15)

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
to_dateNo
from_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 must carry the behavioral disclosure burden. It mentions special authorization, but lacks detail on how to obtain it, error responses, rate limits, or whether the operation is read-only (likely, but not stated). The return format is not described, though an output schema exists.

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 short, with two sentences for purpose and a bulleted Args section. It is front-loaded with key information. No irrelevant content, but the Args list could be integrated into the prose slightly more smoothly.

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?

With an output schema present, the description does not need to explain return values. However, for a tool with no required parameters and optional date filters, the description misses details like whether the user must have specific roles, how authorization is checked, and what the default behavior is (e.g., returns all data if no dates provided). It is minimally adequate.

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 0%, so the parameter descriptions in the tool text are essential. They provide basic semantics: from_date and to_date are filters with YYYY-MM-DD format, limit sets max results. However, they don't clarify if dates are inclusive/exclusive, or the behavior when omitted (the schema shows defaults of null, which suggests no filtering for dates). This adds some value but not complete clarity.

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 user metadata' and lists specific data types included (goals, weight history, HR, sleep, aerobic speed, FTP). This distinguishes it somewhat from sibling tools like get_metrics or get_workouts, but could be more precise about the scope of 'metadata'.

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 only usage guidance is 'Requires special API authorization', which hints at a prerequisite. It does not provide when to use this tool versus alternatives (e.g., get_metrics), nor does it specify conditions when it should not be used.

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

get_workoutsA

Retrieve completed/logged workouts.

Args: from_date: Start date filter (YYYY-MM-DD) to_date: End date filter (YYYY-MM-DD) limit: Max results to return (default 30) id: Specific workout ID to retrieve

ParametersJSON Schema
NameRequiredDescriptionDefault
idNo
limitNo
to_dateNo
from_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

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

No annotations exist, so the description carries full burden. It does not disclose read-only nature, authentication needs, or side effects. The term 'completed/logged' suggests historical data, but behavioral traits are minimally addressed.

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 concise with a clear 'Args' section. Every sentence is useful; no redundancy. The structure is front-loaded with purpose. Slightly formal but appropriate.

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?

Output schema exists, so return values need not be detailed. However, the description omits pagination, ordering, or result format context. With 4 parameters and simple filtering, it's adequate but not rich.

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?

Schema description coverage is 0%, but the description compensates by explaining each parameter (from_date, to_date, limit, id) with format and defaults. This adds significant value beyond the raw JSON schema.

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 'Retrieve completed/logged workouts', which is a specific verb-resource combination. Among siblings like get_metrics and get_notes, it unambiguously identifies the target.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool versus alternatives like get_planned_workouts. The name implies completed workouts, but usage context is only implied, not stated.

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

get_workout_streamsA

Get detailed time-series data for a specific workout (HR, pace, power, cadence, altitude).

Args: id: Workout ID

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

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

No annotations provided, and the description only states functional behavior (returns time-series data). Does not disclose if read-only, side effects, auth needs, or rate limits. Minimal 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?

Two-line description: a clear summary and an args list. No unnecessary words; front-loaded key info.

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?

Adequate for a single-parameter tool with output schema. Describes data types included, but lacks usage context, behavioral notes, and does not fully compensate for missing annotations.

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 schema has no description for the 'id' parameter (0% coverage). The description explicitly states 'id: Workout ID', adding essential meaning beyond the schema. Could be improved with format or example.

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?

Clearly states the verb 'Get' and resource 'detailed time-series data for a specific workout' with examples (HR, pace, power, cadence, altitude). Distinguishes from sibling 'get_workouts' which likely returns summary 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 guidance on when to use this tool vs alternatives like 'get_workouts' or other siblings. Doesn't mention prerequisites or constraints.

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. 8 tool updatesv0.1.0
    • First observedget_metrics
    • First observedget_notes
    • First observedget_planned_workouts
    • First observedget_profile
    • First observedget_records
    • First observedget_user_metadata
    • First observedget_workout_streams
    • First observedget_workouts

TDQS

A3.7/5.0

Scored across 8 tools

Disambiguation5/5

Each tool targets a distinct entity (metrics, notes, planned workouts, profile, records, user metadata, workouts, workout streams) with no overlap. Descriptions clearly differentiate their purposes.

Naming Consistency5/5

All tools follow a consistent 'get_<noun>' pattern using snake_case, making it easy to predict tool names and understand their actions.

Tool Count5/5

8 tools is a well-scoped set for a personal fitness data server, covering key data retrieval needs without being excessive or insufficient.

Completeness4/5

The tool set provides comprehensive read access to the platform's data (metrics, notes, workouts, profile, records, metadata, streams). However, it lacks any creation, update, or deletion tools, which may be a gap for agents needing to modify data.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    C
    maintenance
    Provides read-only access to your Nike Run Club running activities, including listing runs and retrieving detailed metrics like distance, pace, and heart rate.
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables triathlon coaches and athletes to interact with Garmin Connect, including retrieving health/activity data, building and uploading structured workouts (cycling, running, swimming, brick), and accessing coaching analytics like readiness, load, and performance trends.
    MIT