Skip to main content
Glama

technogym-mcp

An MCP server that gives AI assistants read access to your Technogym mywellness training history: workout sessions, per-exercise data with per-set reps / weight / rest, per-second exercise analytics (machine channels + heart rate) and whole-session heart-rate traces.

It runs as a persistent local HTTP server that starts with Windows, so every MCP client on the machine (Claude Desktop, Claude Code, Cursor, ...) can connect to the same endpoint.

How it works / caveat. Technogym's official API is partner-only (B2B). This server speaks the same JSON API the official end-user web app (endusernext.mywellness.com) uses, logging in with your normal email + password and identifying itself with that app's client headers. No HTML scraping is involved, but it will still break if Technogym changes the login flow or the client-trust rules. The old mywellness.com/cloud portal that earlier tools (e.g. lcanis/gymexport) scraped was retired in 2026 and now redirects to technogym.com.

Tools

Tool

What it returns

get_account_info

Logs in and returns user id, name, culture, facilities and current Movergy score. Use to verify credentials.

list_workout_sessions(from_date?, to_date?, only_workouts=true)

Sessions in a range (default: last 30 days), newest first: session_id, date, time, name, duration, MOVEs, calories, exercise counts.

get_workout_session(session_id, date?)

Every exercise with machine, status, duration, calories, MOVEs, muscles, performed and prescribed sets (reps, kg, rest), plus session efficacy and muscle scores.

get_recent_workouts(days=14)

Lists and fully loads all sessions from the last N days.

get_exercise_analytics(analytics_id, sample_every_seconds=1)

Per-second machine channels, HR samples, HR zones and summary metrics (total weight, est. 1RM, METs...) for one exercise.

get_session_heart_rate(session_id, date?, sample_every_seconds=10)

Timestamped HR trace, HR zones and avg/min/max HR for a whole session.

A session is addressed by session_id and its date (the API partitions by day). Pass the date whenever you have it; if omitted, the last year of history is scanned to find it.

GET /health on the same port reports liveness and whether a session is authenticated.

Related MCP server: Garmin Connect MCP server

Setup

Requires uv (it manages Python for you).

git clone https://github.com/ErikAnkerKilbergSkallevold/technogym_mcp
cd technogym_mcp
copy .env.example .env      # then fill in MYWELLNESS_EMAIL / MYWELLNESS_PASSWORD
uv sync

Run once (foreground)

uv run technogym-mcp                   # HTTP on http://127.0.0.1:8765/mcp
uv run technogym-mcp --transport stdio # for clients that spawn the server themselves

Start with Windows (always available)

powershell -ExecutionPolicy Bypass -File scripts\install-startup.ps1

This registers a Scheduled Task named Technogym MCP Server that starts silently at logon (via uvw.exe, no console window), restarts on failure, and never times out. Logs go to logs\technogym-mcp.log. Remove it with scripts\uninstall-startup.ps1. After editing .env, restart it: Restart-ScheduledTask "Technogym MCP Server".

Expose it publicly (Cloudflare Tunnel)

To reach the server from other machines or from a hosted Claude, tunnel it out through Cloudflare instead of opening a port. One-time prerequisites:

winget install Cloudflare.cloudflared
cloudflared tunnel login            # browser: pick your zone

Set TECHNOGYM_MCP_PUBLIC_HOST=technogym.example.com in .env, restart the server task, then:

powershell -ExecutionPolicy Bypass -File scripts\install-tunnel.ps1 -Hostname technogym.example.com

This creates a named tunnel, routes the DNS record, and installs cloudflared as a Windows service (it will ask for elevation once). The MCP endpoint is then https://technogym.example.com/mcp.

Alternatively, create the tunnel in the Zero Trust dashboard (Networks → Tunnels → Create, choose Windows, run the provided cloudflared service install <token> command) and add a public hostname there pointing at http://localhost:<port>. That also installs an auto-starting Windows service; skip the script in that case, since it would create a second tunnel.

The MCP endpoint has no authentication of its own. Pick one of two ways to protect it:

  • Cloudflare Access (best when your clients can complete a browser login, e.g. Claude Code with claude mcp add --transport http): add an Access application for the hostname (Zero Trust → Access → Applications → Self-hosted) with a policy that allows only your email.

  • Unguessable path (needed for clients that cannot send auth headers or do a Cloudflare login, e.g. claude.ai custom connectors): set TECHNOGYM_MCP_PATH=/<32 random hex>/mcp in .env, restart the server task, and treat the full URL as a secret. Requests to any other path get 404. Optionally still put Access on /health and /.

Adding to claude.ai

  1. Make sure the tunnel is up and https://<host>/health answers.

  2. In claude.ai go to Settings → Connectors → Add custom connector.

  3. Name it Technogym, paste the full endpoint URL (https://<host><TECHNOGYM_MCP_PATH>), leave OAuth fields empty, and click Add.

  4. In a chat, open the tools menu (the sliders icon) and enable the Technogym connector.

Connecting a client

Claude Code

claude mcp add -s user --transport http technogym http://127.0.0.1:8765/mcp

Claude Desktop (claude_desktop_config.json), either pointing at the running server:

{
  "mcpServers": {
    "technogym": { "type": "http", "url": "http://127.0.0.1:8765/mcp" }
  }
}

or spawning it over stdio:

{
  "mcpServers": {
    "technogym": {
      "command": "uv",
      "args": ["run", "--directory", "C:\\path\\to\\technogym_mcp", "technogym-mcp", "--transport", "stdio"]
    }
  }
}

Configuration (.env)

Variable

Default

Purpose

MYWELLNESS_EMAIL

Your mywellness login

MYWELLNESS_PASSWORD

Your mywellness password

TECHNOGYM_MCP_HOST

127.0.0.1

Bind address. Keep on loopback; there is no auth on the MCP endpoint.

TECHNOGYM_MCP_PORT

8765

Port

TECHNOGYM_MCP_PUBLIC_HOST

Public hostname(s) accepted in the Host header, e.g. technogym.example.com, when exposed through a tunnel. The SDK's DNS-rebinding protection rejects unknown hosts with HTTP 421.

TECHNOGYM_MCP_PATH

/mcp

URL path of the MCP endpoint. Use an unguessable path when the endpoint must be reachable without auth headers (see claude.ai below).

TECHNOGYM_MCP_LOG_LEVEL

INFO

Logging level

API notes (for maintainers)

  • Login: POST https://core.mywellness.com/v2/enduser/authentication/login with {username, password, keepMeLoggedIn} and headers X-MWAPPS-APPID: EC1D38D7-D359-48D0-A60C-D8C0B8FB9DF9, X-MWAPPS-CLIENT: enduserweb. Returns token, userContext.id, facilities[].url.

  • Data: POST https://services.mywellness.com/{facilityUrl}/Training/User/{userId}/<Action> with Authorization: Bearer <token> and the same X-MWAPPS headers. Actions used: ActivityHistory, GetPerformedWorkoutSessionByIdCr, GetHrSession, MyMovergy; plus Training/CardioLog/{analyticsId}/Details. Dates are yyyyMMdd partition keys.

  • Localised strings (exercise names, units) come back in the account's culture.

Development

uv run pytest
uv run ruff check .

License

MIT

Available Tools

6 tools
get_account_infoA

Log in (if needed) and return the mywellness user id, name, culture and facilities.

Use this to verify credentials are working.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the burden. It discloses the key behavioral trait: the tool may log in and is meant to validate credentials. It does not mention session side effects or errors, but the main auth behavior is exposed.

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 short sentences, with the action and return contents front-loaded and the usage intent in the second sentence. No redundant phrasing.

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?

For a zero-parameter, low-complexity tool with an output schema, the description is nearly complete: it covers purpose, auth behavior, and intended usage. It could mention when not to use it or any prerequisites, but nothing critical is missing.

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 takes zero parameters, so the schema fully covers this dimension. The description appropriately adds no parameter details; baseline 4 applies.

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 states a specific action ('Log in (if needed)') and the exact resource returned ('mywellness user id, name, culture and facilities'). This clearly distinguishes the tool from the workout/session-focused siblings.

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?

Explicitly gives a use case: 'Use this to verify credentials are working.' It does not name alternatives or exclusions, but the sibling names make the intended context clear.

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

get_exercise_analyticsA

Per-second analytics for one exercise: machine channels (power, RPM, speed, distance, level... whatever the equipment reports), heart-rate samples, HR zones and summary metrics (duration, calories, MOVEs, total lifted weight, estimated 1RM...).

Args: analytics_id: An exercise's analytics_id from get_workout_session. sample_every_seconds: Downsample factor; 1 keeps every sample, 10 keeps every 10th.

ParametersJSON Schema
NameRequiredDescriptionDefault
analytics_idYes
sample_every_secondsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations, the description takes on the burden of behavioral disclosure. It conveys per-second granularity, equipment-dependent channel availability ('whatever the equipment reports'), and the downsample mechanism that controls data volume. This is meaningful context beyond the schema, though it does not discuss auth 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 overview sentence is dense and front-loaded, with ellipses signaling non-exhaustive lists rather than adding noise. Each argument gets a single, purposeful line with no filler.

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?

The tool has an output schema, so return-value details are already covered. The description provides the required input source and behavior controls, and the parameter explanations leave no ambiguity about how to call the tool.

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

Parameters5/5

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

Schema description coverage is 0%, so the description fully carries parameter documentation. It explains both analytics_id's provenance and sample_every_seconds as a downsample factor with concrete examples, making correct invocation clear.

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 opens with 'Per-second analytics for one exercise,' which names the exact verb, resource, and scope. It further distinguishes itself from session-level siblings by enumerating machine channels, heart-rate samples, HR zones, and summary metrics specific to a single exercise.

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?

It clearly states the analytics_id comes from get_workout_session, giving the agent a concrete prerequisite and sourcing path. It does not explicitly name alternatives or when-not-to-use cases, but the intended context is unambiguous.

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

get_recent_workoutsA

Convenience: list and fully load every workout session from the last N days.

Args: days: Look-back window in days (1-365).

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo

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 carries the burden. It does disclose that the tool loads full workout sessions rather than just metadata, which implies a read-only operation. However, it does not mention pagination, auth, rate limits, or other potential behavior beyond the basic load.

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 short, front-loads the tool's purpose, and has exactly one parameter line. Every sentence contributes useful information with no 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?

For a one-parameter convenience loader with an output schema present, the description provides enough context to invoke it correctly. It could mention alternate tools more explicitly, but the simple scope and output schema reduce the need for further detail.

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 provides no description for 'days', but the tool description explains that it is a look-back window in days and gives an explicit valid range of 1-365. This adds real meaning beyond the bare integer 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 the action ('list and fully load') and the resource ('every workout session from the last N days'). The phrase 'fully load' and the sibling names make it distinguishable from list_workout_sessions and get_workout_session.

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 word 'Convenience' implies this is the bulk-recent-loading alternative to more granular siblings, but there is no explicit when-to-use or when-not-to-use guidance. The usage context is implied rather than stated.

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

get_session_heart_rateA

Whole-session heart-rate trace (timestamped samples), HR zones, and session summary (duration, avg/min/max HR, calories, MOVEs, METs).

Args: session_id: The session_id from list_workout_sessions. date: The session's ISO date (recommended; otherwise resolved from history). sample_every_seconds: Downsample factor for hr_samples (default 10; 1 = all).

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNo
session_idYes
sample_every_secondsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden and does add value: it explains date fallback resolution and the sample_every_seconds downsample meaning (1 = all). It doesn't mention auth, rate limits, or error behavior, but for a read-oriented 'get' tool these are minor 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 front-loaded with the output overview and then uses a compact Args list. Every sentence is purposeful and there is no fluff.

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 and the input parameters are fully explained, the definition is largely complete. The only notable absence is explicit routing among sibling tools, but the core usage and behavior are covered well.

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

Parameters5/5

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

Schema description coverage is 0%, and the description compensates fully. All three parameters get semantics beyond their schema types/defaults: session_id provenance, date format/recommendation/fallback, and downsample factor behavior including the meaning of 1.

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 returns a whole-session heart-rate trace, HR zones, and a session summary, naming the specific resource and output fields. It does not explicitly distinguish itself from sibling get_workout_session, so it stops short of a 5.

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?

It gives clear input guidance by telling the agent to source session_id from list_workout_sessions and to prefer the session's ISO date with fallback behavior. However, it never states when to use this tool versus alternatives like get_workout_session, so usage is only implied.

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

get_workout_sessionA

Full detail for one workout session: every exercise with machine, status, duration, calories, MOVEs, muscles, per-set reps / weight / rest (performed and prescribed), plus session efficacy and muscle scores. Each exercise carries an analytics_id for get_exercise_analytics.

Args: session_id: The session_id from list_workout_sessions. date: The session's ISO date. Strongly recommended; if omitted the last year of history is scanned to find it.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNo
session_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral disclosure burden. It discloses the potentially expensive behavior of scanning the last year when date is omitted, and clarifies that each exercise exposes an analytics_id for downstream use. It does not explicitly state read-only or error behavior, but the 'get' verb and detail-oriented wording make the read-only nature clear.

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 front-loaded with the tool's purpose, enumerates the returned data compactly, and clearly separates argument explanations. Every sentence adds useful information with no filler.

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?

Given that an output schema exists, the description does not need to fully detail return values. It provides enough context for reliable selection and invocation: where the required id comes from, how the optional date behaves, and how results link to a sibling tool.

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

Parameters5/5

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

The input schema has 0% description coverage, so the description must fully compensate. It explains session_id's provenance and defines date in ISO format with the consequence of omission, adding meaningful semantics beyond the bare 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 states a clear verb and resource: retrieving full detail for a single workout session. It enumerates exactly what is included and distinguishes itself from list/recent workouts by emphasizing 'one workout session' and the session_id, while also linking to get_exercise_analytics.

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?

It provides explicit invocation guidance: session_id comes from list_workout_sessions, and date is strongly recommended to avoid scanning a year of history. It does not explicitly describe when to prefer alternatives such as get_recent_workouts, so it misses the full 'when-not' guidance.

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

list_workout_sessionsA

List workout sessions in a date range, newest first. Each item has session_id and date, which together identify the session for the detail tools, plus name, duration, MOVEs, calories and exercise counts.

Args: from_date: ISO date (YYYY-MM-DD). Defaults to 30 days before to_date. to_date: ISO date (YYYY-MM-DD). Defaults to today. only_workouts: Only gym-floor workout sessions (default). False includes every activity type (classes, outdoor, ...).

ParametersJSON Schema
NameRequiredDescriptionDefault
to_dateNo
from_dateNo
only_workoutsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the transparency burden and does so well: it states ordering (newest first), default date window (from_date defaults to 30 days before to_date, to_date defaults to today), and the filtering effect of only_workouts. It also enumerates the fields returned per item. It doesn't mention pagination or auth, but those are not central to this read-only list call.

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 compact and front-loaded: purpose and ordering first, then item fields, then a tidy Args block. Every sentence adds useful information with no 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?

For a three-optional-parameter list tool with an output schema, the description covers the essentials: date semantics, sorting, filtering, and identification of sessions for detail calls. Minor omissions such as pagination and date-boundary inclusivity do not block correct invocation.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must define every parameter, and it does: from_date and to_date are ISO dates with documented defaults, and only_workouts controls activity-type filtering. This fully compensates for the empty schema descriptions.

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 opens with a precise verb-resource pair ('List workout sessions') and immediately adds scope: 'in a date range, newest first.' It also distinguishes itself from detail-oriented siblings by stating that session_id and date 'identify the session for the detail tools.'

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 Args block gives concrete defaults and explains that only_workouts defaults to gym-floor sessions while false includes all activity types. It clearly implies when to use this list tool and points toward detail tools for per-session lookup, though it doesn't explicitly name a sibling or state when not to use it.

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. Dates show when Glama detected each change.

  1. 6 tool updatesv0.1.0
    • First observedget_account_info
    • First observedget_exercise_analytics
    • First observedget_recent_workouts
    • First observedget_session_heart_rate
    • First observedget_workout_session
    • First observedlist_workout_sessions

TDQS

A4.4/5.0

Scored across 6 tools

Disambiguation4/5

Each tool targets a distinct data view: account, session list, session detail, recent workouts, per-exercise analytics, and heart-rate trace. get_recent_workouts overlaps with list_workout_sessions plus get_workout_session, but it is clearly framed as a convenience wrapper, so the ambiguity is minimal.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern using get_ or list_ prefixes: get_account_info, list_workout_sessions, get_workout_session, get_recent_workouts, get_exercise_analytics, get_session_heart_rate. There is no mixing of styles or vague verbs.

Tool Count5/5

Six tools is well-scoped for a read-only fitness/wellness data server. Each tool serves a clear purpose and the count is neither bloated nor too thin.

Completeness5/5

The tool surface covers the full read-only workflow: account verification, session listing, session detail, exercise-level analytics, heart-rate traces, and a convenience bulk loader. The data flow from list_workout_sessions to get_workout_session to get_exercise_analytics is complete with no obvious dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo issues

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
    B
    maintenance
    Provides AI assistants with read-only access to an athlete's Intervals.icu training data, including activities, wellness metrics, zones, and planned events, for use with MCP clients like ChatGPT and Claude.
    15
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables AI assistants to access and modify a user's real GymTimer workout and nutrition data stored in private iCloud, allowing natural-language queries about training history and the creation of workout templates and meal plans.
    21
    MIT