Strava · Capability

Strava Fitness Tracking

Unified capability for fitness tracking and athletic performance analysis using the Strava API. Designed for fitness app developers, coaches, and training platforms to access athlete data, workout history, performance metrics, segment leaderboards, and time-series physiological data. Combines athlete profile, activity, segment, and streaming APIs into a single workout intelligence workflow.

Run with Naftiko CyclingFitnessFitness TrackingRunningSports

What You Can Do

GET
Get athlete — Get the authenticated athlete's profile
/v1/athlete
GET
Get stats — Get year-to-date and all-time activity totals
/v1/athlete/stats
GET
Get zones — Get the athlete's training zones
/v1/athlete/zones
GET
List activities — List athlete's recent activities with date filtering
/v1/activities
GET
Get activity — Get detailed activity data
/v1/activities/{id}
GET
Get activity streams — Get time-series data streams for performance analysis
/v1/activities/{id}/streams
GET
Get laps — Get lap split data for an activity
/v1/activities/{id}/laps
GET
Get segment — Get details about a specific segment
/v1/segments/{id}
GET
Get leaderboard — Get leaderboard for a segment
/v1/segments/{id}/leaderboard
GET
List starred segments — List segments starred by the athlete
/v1/segments/starred
GET
List routes — List routes created by the athlete
/v1/routes
GET
List clubs — List athlete's club memberships
/v1/clubs
GET
Get gear — Get details about a bike or shoe
/v1/gear/{id}

MCP Tools

get-athlete-profile

Get the authenticated athlete's profile including name, location, and gear

read-only
get-athlete-stats

Get year-to-date and all-time totals for rides, runs, and swims

read-only
get-athlete-zones

Get the athlete's heart rate and power training zones

read-only
list-activities

List athlete's workout activities, optionally filtered by date range

read-only
get-activity-detail

Get full details of a specific workout including performance metrics

read-only
get-activity-streams

Get time-series data (GPS track, heart rate, power, cadence, speed) for deep performance analysis

read-only
get-activity-laps

Get lap split data to analyze pacing and consistency

read-only
get-segment-details

Get details about a specific Strava segment including grade and climb category

read-only
get-segment-leaderboard

Get the competitive leaderboard for a segment, optionally filtered by gender or following

read-only
list-starred-segments

List the athlete's starred segments for quick access

read-only
list-routes

List planned routes created by the athlete

read-only
list-clubs

List the athlete's club memberships for social training context

read-only
get-gear-details

Get usage and details for a specific bike or pair of shoes

read-only

Capability Spec

fitness-tracking.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: Strava Fitness Tracking
  description: Unified capability for fitness tracking and athletic performance analysis using the Strava API. Designed for
    fitness app developers, coaches, and training platforms to access athlete data, workout history, performance metrics,
    segment leaderboards, and time-series physiological data. Combines athlete profile, activity, segment, and streaming APIs
    into a single workout intelligence workflow.
  tags:
  - Cycling
  - Fitness
  - Fitness Tracking
  - Running
  - Sports
  created: '2026-05-02'
  modified: '2026-05-06'
binds:
- namespace: env
  keys:
    STRAVA_ACCESS_TOKEN: STRAVA_ACCESS_TOKEN
capability:
  consumes:
  - type: http
    namespace: strava
    baseUri: https://www.strava.com/api/v3
    description: Strava API v3
    authentication:
      type: bearer
      token: '{{STRAVA_ACCESS_TOKEN}}'
    resources:
    - name: athlete
      path: /athlete
      description: Authenticated athlete profile
      operations:
      - name: get-logged-in-athlete
        method: GET
        description: Get the authenticated athlete's profile
        inputParameters: []
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: athlete-stats
      path: /athletes/{id}/stats
      description: Athlete statistics
      operations:
      - name: get-athlete-stats
        method: GET
        description: Get year-to-date and all-time activity statistics
        inputParameters:
        - name: id
          in: path
          type: integer
          required: true
          description: The athlete's identifier
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: athlete-zones
      path: /athlete/zones
      description: Athlete heart rate and power zones
      operations:
      - name: get-logged-in-athlete-zones
        method: GET
        description: Get the athlete's heart rate and power zones
        inputParameters: []
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: athlete-activities
      path: /athlete/activities
      description: Athlete activity list
      operations:
      - name: get-logged-in-athlete-activities
        method: GET
        description: List the authenticated athlete's activities
        inputParameters:
        - name: before
          in: query
          type: integer
          required: false
          description: Unix timestamp to filter activities before
        - name: after
          in: query
          type: integer
          required: false
          description: Unix timestamp to filter activities after
        - name: page
          in: query
          type: integer
          required: false
          description: Page number
        - name: per_page
          in: query
          type: integer
          required: false
          description: Items per page (max 200)
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: activity
      path: /activities/{id}
      description: Individual activity operations
      operations:
      - name: get-activity-by-id
        method: GET
        description: Get a specific activity by ID
        inputParameters:
        - name: id
          in: path
          type: integer
          required: true
          description: The activity identifier
        - name: include_all_efforts
          in: query
          type: boolean
          required: false
          description: Include all segment efforts
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: activity-streams
      path: /activities/{id}/streams
      description: Activity time-series data streams
      operations:
      - name: get-activity-streams
        method: GET
        description: Get time-series data streams for an activity
        inputParameters:
        - name: id
          in: path
          type: integer
          required: true
          description: The activity identifier
        - name: keys
          in: query
          type: array
          required: true
          description: Stream types (time, latlng, distance, altitude, heartrate, cadence, watts, velocity_smooth, grade_smooth)
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: activity-laps
      path: /activities/{id}/laps
      description: Activity lap data
      operations:
      - name: get-laps-by-activity-id
        method: GET
        description: Get lap splits for an activity
        inputParameters:
        - name: id
          in: path
          type: integer
          required: true
          description: The activity identifier
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: segment
      path: /segments/{id}
      description: Individual segment data
      operations:
      - name: get-segment-by-id
        method: GET
        description: Get a specific segment by ID
        inputParameters:
        - name: id
          in: path
          type: integer
          required: true
          description: The segment identifier
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: segment-leaderboard
      path: /segments/{id}/leaderboard
      description: Segment leaderboard
      operations:
      - name: get-leaderboard-by-segment-id
        method: GET
        description: Get the leaderboard for a segment
        inputParameters:
        - name: id
          in: path
          type: integer
          required: true
          description: The segment identifier
        - name: gender
          in: query
          type: string
          required: false
          description: Filter by gender (M or F)
        - name: following
          in: query
          type: boolean
          required: false
          description: Limit to followed athletes
        - name: page
          in: query
          type: integer
          required: false
          description: Page number
        - name: per_page
          in: query
          type: integer
          required: false
          description: Items per page
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: starred-segments
      path: /segments/starred
      description: Athlete's starred segments
      operations:
      - name: get-logged-in-athlete-starred-segments
        method: GET
        description: List the authenticated athlete's starred segments
        inputParameters:
        - name: page
          in: query
          type: integer
          required: false
          description: Page number
        - name: per_page
          in: query
          type: integer
          required: false
          description: Items per page
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: athlete-routes
      path: /athlete/routes
      description: Athlete routes
      operations:
      - name: get-routes-by-athlete-id
        method: GET
        description: List the athlete's routes
        inputParameters:
        - name: page
          in: query
          type: integer
          required: false
          description: Page number
        - name: per_page
          in: query
          type: integer
          required: false
          description: Items per page
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: athlete-clubs
      path: /athlete/clubs
      description: Athlete club memberships
      operations:
      - name: get-logged-in-athlete-clubs
        method: GET
        description: List the athlete's club memberships
        inputParameters:
        - name: page
          in: query
          type: integer
          required: false
          description: Page number
        - name: per_page
          in: query
          type: integer
          required: false
          description: Items per page
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: gear
      path: /gear/{id}
      description: Athlete gear details
      operations:
      - name: get-gear-by-id
        method: GET
        description: Get an equipment item by ID
        inputParameters:
        - name: id
          in: path
          type: string
          required: true
          description: The gear identifier (e.g., b1234567)
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
  exposes:
  - type: rest
    port: 8080
    namespace: strava-fitness-tracking-api
    description: Unified REST API for Strava fitness tracking and performance analysis.
    resources:
    - path: /v1/athlete
      name: athlete-profile
      description: Authenticated athlete profile and statistics
      operations:
      - method: GET
        name: get-athlete
        description: Get the authenticated athlete's profile
        call: strava.get-logged-in-athlete
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/athlete/stats
      name: athlete-stats
      description: Athlete activity statistics
      operations:
      - method: GET
        name: get-stats
        description: Get year-to-date and all-time activity totals
        call: strava.get-athlete-stats
        with:
          id: rest.id
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/athlete/zones
      name: athlete-zones
      description: Heart rate and power training zones
      operations:
      - method: GET
        name: get-zones
        description: Get the athlete's training zones
        call: strava.get-logged-in-athlete-zones
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/activities
      name: activities
      description: Workout activity list and creation
      operations:
      - method: GET
        name: list-activities
        description: List athlete's recent activities with date filtering
        call: strava.get-logged-in-athlete-activities
        with:
          before: rest.before
          after: rest.after
          page: rest.page
          per_page: rest.per_page
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/activities/{id}
      name: activity-detail
      description: Individual activity detail
      operations:
      - method: GET
        name: get-activity
        description: Get detailed activity data
        call: strava.get-activity-by-id
        with:
          id: rest.id
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/activities/{id}/streams
      name: activity-streams
      description: Activity data streams
      operations:
      - method: GET
        name: get-activity-streams
        description: Get time-series data streams for performance analysis
        call: strava.get-activity-streams
        with:
          id: rest.id
          keys: rest.keys
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/activities/{id}/laps
      name: activity-laps
      description: Activity lap splits
      operations:
      - method: GET
        name: get-laps
        description: Get lap split data for an activity
        call: strava.get-laps-by-activity-id
        with:
          id: rest.id
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/segments/{id}
      name: segment
      description: Strava segment details
      operations:
      - method: GET
        name: get-segment
        description: Get details about a specific segment
        call: strava.get-segment-by-id
        with:
          id: rest.id
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/segments/{id}/leaderboard
      name: segment-leaderboard
      description: Segment competitive leaderboard
      operations:
      - method: GET
        name: get-leaderboard
        description: Get leaderboard for a segment
        call: strava.get-leaderboard-by-segment-id
        with:
          id: rest.id
          gender: rest.gender
          following: rest.following
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/segments/starred
      name: starred-segments
      description: Athlete's starred segments
      operations:
      - method: GET
        name: list-starred-segments
        description: List segments starred by the athlete
        call: strava.get-logged-in-athlete-starred-segments
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/routes
      name: routes
      description: Athlete routes
      operations:
      - method: GET
        name: list-routes
        description: List routes created by the athlete
        call: strava.get-routes-by-athlete-id
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/clubs
      name: clubs
      description: Athlete club memberships
      operations:
      - method: GET
        name: list-clubs
        description: List athlete's club memberships
        call: strava.get-logged-in-athlete-clubs
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/gear/{id}
      name: gear
      description: Athlete gear details
      operations:
      - method: GET
        name: get-gear
        description: Get details about a bike or shoe
        call: strava.get-gear-by-id
        with:
          id: rest.id
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    port: 9090
    namespace: strava-fitness-tracking-mcp
    transport: http
    description: MCP server for AI-assisted fitness coaching and training analysis.
    tools:
    - name: get-athlete-profile
      description: Get the authenticated athlete's profile including name, location, and gear
      hints:
        readOnly: true
      call: strava.get-logged-in-athlete
      outputParameters:
      - type: object
        mapping: $.
    - name: get-athlete-stats
      description: Get year-to-date and all-time totals for rides, runs, and swims
      hints:
        readOnly: true
      call: strava.get-athlete-stats
      with:
        id: tools.id
      outputParameters:
      - type: object
        mapping: $.
    - name: get-athlete-zones
      description: Get the athlete's heart rate and power training zones
      hints:
        readOnly: true
      call: strava.get-logged-in-athlete-zones
      outputParameters:
      - type: object
        mapping: $.
    - name: list-activities
      description: List athlete's workout activities, optionally filtered by date range
      hints:
        readOnly: true
        openWorld: true
      call: strava.get-logged-in-athlete-activities
      with:
        before: tools.before
        after: tools.after
        page: tools.page
        per_page: tools.per_page
      outputParameters:
      - type: object
        mapping: $.
    - name: get-activity-detail
      description: Get full details of a specific workout including performance metrics
      hints:
        readOnly: true
      call: strava.get-activity-by-id
      with:
        id: tools.id
        include_all_efforts: tools.include_all_efforts
      outputParameters:
      - type: object
        mapping: $.
    - name: get-activity-streams
      description: Get time-series data (GPS track, heart rate, power, cadence, speed) for deep performance analysis
      hints:
        readOnly: true
      call: strava.get-activity-streams
      with:
        id: tools.id
        keys: tools.keys
      outputParameters:
      - type: object
        mapping: $.
    - name: get-activity-laps
      description: Get lap split data to analyze pacing and consistency
      hints:
        readOnly: true
      call: strava.get-laps-by-activity-id
      with:
        id: tools.id
      outputParameters:
      - type: object
        mapping: $.
    - name: get-segment-details
      description: Get details about a specific Strava segment including grade and climb category
      hints:
        readOnly: true
      call: strava.get-segment-by-id
      with:
        id: tools.id
      outputParameters:
      - type: object
        mapping: $.
    - name: get-segment-leaderboard
      description: Get the competitive leaderboard for a segment, optionally filtered by gender or following
      hints:
        readOnly: true
        openWorld: true
      call: strava.get-leaderboard-by-segment-id
      with:
        id: tools.id
        gender: tools.gender
        following: tools.following
        date_range: tools.date_range
        per_page: tools.per_page
      outputParameters:
      - type: object
        mapping: $.
    - name: list-starred-segments
      description: List the athlete's starred segments for quick access
      hints:
        readOnly: true
      call: strava.get-logged-in-athlete-starred-segments
      outputParameters:
      - type: object
        mapping: $.
    - name: list-routes
      description: List planned routes created by the athlete
      hints:
        readOnly: true
      call: strava.get-routes-by-athlete-id
      outputParameters:
      - type: object
        mapping: $.
    - name: list-clubs
      description: List the athlete's club memberships for social training context
      hints:
        readOnly: true
      call: strava.get-logged-in-athlete-clubs
      outputParameters:
      - type: object
        mapping: $.
    - name: get-gear-details
      description: Get usage and details for a specific bike or pair of shoes
      hints:
        readOnly: true
      call: strava.get-gear-by-id
      with:
        id: tools.id
      outputParameters:
      - type: object
        mapping: $.