Skip to main content
Glama
tomekkorbak

Strava MCP Server

by tomekkorbak

get_activities_by_date_range

Retrieve Strava activities within a specified date range using start and end dates in ISO format. Filter and access workout data for analysis or reporting.

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
start_dateYes
end_dateYes
limitNo

Implementation Reference

  • The handler function for the 'get_activities_by_date_range' tool, decorated with @mcp.tool() for registration. Parses input dates, queries Strava API via client, and returns activities or error.
    @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 ISO date strings, used in the tool handler to convert start_date and end_date.
    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 handler to fetch activities from Strava API using the computed timestamps.
    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)

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