get_user_activities
Retrieve authenticated user activities from Strava, filtered by timestamps and paginated for efficient data access. Use this tool to streamline activity tracking and analysis.
Instructions
Get the authenticated user's activities.
Args: ctx: The MCP request context before: An epoch timestamp for filtering activities before a certain time after: An epoch timestamp for filtering activities after a certain time page: Page number per_page: Number of items per page
Returns: List of activities
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | ||
| before | No | ||
| page | No | ||
| per_page | No |
Implementation Reference
- strava_mcp/server.py:79-113 (handler)The handler function for the 'get_user_activities' tool, decorated with @mcp.tool() for automatic registration in the MCP server. It extracts parameters from the context, calls StravaService.get_activities, converts models to dicts, and handles errors.@mcp.tool() async def get_user_activities( ctx: Context, before: int | None = None, after: int | None = None, page: int = 1, per_page: int = 30, ) -> list[dict]: """Get the authenticated user's activities. Args: ctx: The MCP request context before: An epoch timestamp for filtering activities before a certain time after: An epoch timestamp for filtering activities after a certain time page: Page number per_page: Number of items per page Returns: List of activities """ try: # Safely access service from context if not ctx.request_context.lifespan_context: raise ValueError("Lifespan context not available") # Cast service to StravaService to satisfy type checker service = cast(StravaService, ctx.request_context.lifespan_context.get("service")) if not service: raise ValueError("Service not available in context") activities = await service.get_activities(before, after, page, per_page) return [activity.model_dump() for activity in activities] except Exception as e: logger.error(f"Error in get_user_activities tool: {str(e)}") raise
- strava_mcp/service.py:38-63 (helper)Helper method in StravaService that proxies the get_activities call to the underlying StravaAPI client.async def get_activities( self, before: int | None = None, after: int | None = None, page: int = 1, per_page: int = 30, ) -> list[Activity]: """Get a list of activities for the authenticated athlete. Args: before: An epoch timestamp for filtering activities before a certain time after: An epoch timestamp for filtering activities after a certain time page: Page number per_page: Number of items per page Returns: List of activities """ try: logger.info("Getting activities for authenticated athlete") activities = await self.api.get_activities(before, after, page, per_page) logger.info(f"Retrieved {len(activities)} activities") return activities except Exception as e: logger.error(f"Error getting activities: {str(e)}") raise