get_activities
Retrieve recent Garmin Connect activity summaries with pagination and type filtering. Returns key metrics like duration, distance, calories, and heart rate.
Instructions
Get recent activities with pagination. Returns activity summaries: type, duration, distance, calories, heart rate
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| start | No | Pagination offset. Defaults to 0 | |
| limit | No | Number of activities to return (1-100). Defaults to 20 | |
| activityType | No | Filter by activity type (e.g. running, cycling, swimming) |
Implementation Reference
- src/client/garmin.client.ts:176-183 (handler)The actual Garmin API call that fetches activities via the activitylist-service endpoint with pagination (start, limit) and optional activityType filter.
async getActivities(start = 0, limit = DEFAULT_ACTIVITIES_LIMIT, activityType?: string): Promise<unknown> { const params = new URLSearchParams({ start: String(start), limit: String(limit), }); if (activityType) params.set('activityType', activityType); return this.request(`${ACTIVITIES_SEARCH_ENDPOINT}?${params}`); } - src/dtos/activities.dto.ts:10-28 (schema)Zod schema defining the input parameters for get_activities: start (offset), limit (1-100), and optional activityType filter.
export const getActivitiesSchema = z.object({ start: z .number() .min(0) .default(0) .optional() .describe('Pagination offset. Defaults to 0'), limit: z .number() .min(1) .max(100) .default(20) .optional() .describe('Number of activities to return (1-100). Defaults to 20'), activityType: z .string() .optional() .describe('Filter by activity type (e.g. running, cycling, swimming)'), }); - src/tools/activities.tools.ts:11-25 (registration)Registration of the 'get_activities' tool via server.registerTool, mapping the MCP tool name to its handler function and input schema.
export function registerActivityTools(server: McpServer, client: GarminClient): void { server.registerTool( 'get_activities', { description: 'Get recent activities with pagination. Returns activity summaries: type, duration, distance, calories, heart rate', inputSchema: getActivitiesSchema.shape, }, async ({ start, limit, activityType }) => { const data = await client.getActivities(start ?? 0, limit ?? DEFAULT_ACTIVITIES_LIMIT, activityType); return { content: [{ type: 'text' as const, text: JSON.stringify(data, null, 2) }], }; }, ); - src/index.ts:39-39 (registration)Top-level registration call that wires up all activity tools (including 'get_activities') to the MCP server.
registerActivityTools(server, client); - Default activity limit constant (DEFAULT_ACTIVITIES_LIMIT = 20) used by the get_activities handler, and the ACTIVITIES_SEARCH_ENDPOINT path.
export const DEFAULT_ACTIVITIES_LIMIT = 20;