Skip to main content
Glama
tomekkorbak

Strava MCP Server

by tomekkorbak

get_activities_by_date_range

Retrieve Strava athlete activities within a specified date range using ISO formatted start and end dates. Customize results by setting a limit for the number of activities returned.

Instructions

Get activities within a specific date range. Args: start_date: Start date in ISO format (YYYY-MM-DD) end_date: End date in ISO format (YYYY-MM-DD) limit: Maximum number of activities to return (default: 30) Returns: Dictionary containing activities data

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
end_dateYes
limitNo
start_dateYes

Implementation Reference

  • The handler function decorated with @mcp.tool(), implementing the core logic for fetching Strava activities by date range. Includes input validation via type hints and docstring, date parsing, timestamp conversion, API call, and error handling.
    @mcp.tool() def get_activities_by_date_range(start_date: str, end_date: str, limit: int = 30) -> dict[str, Any]: """ Get activities within a specific date range. Args: start_date: Start date in ISO format (YYYY-MM-DD) end_date: End date in ISO format (YYYY-MM-DD) limit: Maximum number of activities to return (default: 30) Returns: Dictionary containing activities data """ if strava_client is None: return { "error": "Strava client not initialized. Please provide refresh token, client ID, and client secret." # noqa: E501 } try: start = parse_date(start_date) end = parse_date(end_date) # Convert dates to timestamps after = int(datetime.combine(start, datetime.min.time()).timestamp()) before = int(datetime.combine(end, datetime.max.time()).timestamp()) activities = strava_client.get_activities(limit=limit, before=before, after=after) return {"data": activities} except Exception as e: return {"error": str(e)}
  • Helper function to parse start_date and end_date strings from ISO format into date objects, used directly in the tool handler.
    def parse_date(date_str: str) -> date: """ Parse a date string in ISO format (YYYY-MM-DD). Args: date_str: Date string in ISO format Returns: Date object """ try: return date.fromisoformat(date_str) except ValueError as err: raise ValueError(f"Invalid date format: {date_str}. Expected format: YYYY-MM-DD") from err
  • StravaClient method called by the tool to fetch activities using timestamps for date range filtering, including API request and response filtering.
    def get_activities( self, limit: int = 10, before: Optional[int] = None, after: Optional[int] = None ) -> list: """ Get the authenticated athlete's activities. Args: limit: Maximum number of activities to return before: Unix timestamp to filter activities before this time after: Unix timestamp to filter activities after this time Returns: List of activities """ params = {"per_page": limit} if before: params["before"] = before if after: params["after"] = after activities = self._make_request("athlete/activities", params) return self._filter_activities(activities)

Other Tools

Related Tools

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/tomekkorbak/strava-mcp-server'

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