Skip to main content
Glama

getDistance

Retrieve distance data from Fitbit activity tracking for specified date ranges. Use to access daily, weekly, or monthly distance metrics for fitness analysis and progress monitoring.

Input Schema

NameRequiredDescriptionDefault
dateNoDate in YYYY-MM-DD format. If not specified, will use today.
periodNoPeriod for data: 1d, 7d, 30d, 1w, 1m

Input Schema (JSON Schema)

{ "properties": { "date": { "description": "Date in YYYY-MM-DD format. If not specified, will use today.", "type": "string" }, "period": { "description": "Period for data: 1d, 7d, 30d, 1w, 1m", "type": "string" } }, "type": "object" }

Implementation Reference

  • src/server.ts:600-654 (registration)
    Registration of the 'getDistance' MCP tool, including input schema (date and period parameters) and the handler function that queries the Fitbit API for distance data and returns formatted results.
    server.tool( "getDistance", { date: z .string() .optional() .describe("Date in YYYY-MM-DD format. If not specified, will use today."), period: z .string() .optional() .describe("Period for data: 1d, 7d, 30d, 1w, 1m"), }, async ({ date, period }) => { try { const formattedDate = formatDate(date); let endpoint = ""; if (period) { endpoint = `/user/-/activities/distance/date/${formattedDate}/${period}.json`; } else { endpoint = `/user/-/activities/distance/date/${formattedDate}/1d.json`; } const data = await makeApiRequest(endpoint); return { content: [ { type: "text", text: JSON.stringify( { date: formattedDate, distance: data["activities-distance"] || [], intraday: data["activities-distance-intraday"] || {}, }, null, 2 ), }, ], }; } catch (error) { return { content: [ { type: "text", text: `Error: ${ error instanceof Error ? error.message : String(error) }`, }, ], isError: true, }; } } );
  • Helper function used by getDistance (and other tools) to format the date parameter into YYYY-MM-DD format, defaulting to today.
    function formatDate(date?: string): string { if (date) return date; const today = new Date(); return today.toISOString().split("T")[0]; // YYYY-MM-DD }
  • Shared helper function used by the getDistance handler to make authenticated HTTP requests to the Fitbit API.
    async function makeApiRequest(endpoint: string): Promise<any> { try { const url = `${baseUrl}${endpoint}`; const response = await fetch(url, { headers: { Authorization: `Bearer ${accessToken}`, Accept: "application/json", }, }); if (!response.ok) { throw new Error( `Fitbit API error: ${response.status} ${response.statusText}` ); } return await response.json(); } catch (error) { console.error(`Error making request to ${endpoint}:`, error); throw error; } }

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/NitayRabi/fitbit-mcp'

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