Skip to main content
Glama
stefanstranger

mcp-server-vanmoof

get_rides_for_week

Retrieve weekly bike ride data from VanMoof by specifying any date within the desired week to track cycling activity patterns.

Instructions

Retrieves rides for a specific week from the vanMoof API. Args: date_in_week: Any date within the week in format "YYYY-MM-DD". If None, uses the current date. Returns: The rides for the specified week if authentication is successful, otherwise None.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
date_in_weekNo

Implementation Reference

  • Handler function decorated with @mcp.tool(), which registers and implements the get_rides_for_week tool. Validates input date, authenticates with VanMoof API, fetches customer data, constructs weekly rides URL, and returns the rides data for the specified week.
    @mcp.tool() def get_rides_for_week(date_in_week: str = "") -> Dict[str, Any]: """ Retrieves rides for a specific week from the vanMoof API. Args: date_in_week: Any date within the week in format "YYYY-MM-DD". If None, uses the current date. Returns: The rides for the specified week if authentication is successful, otherwise None. """ # If date_in_week is not provided, return error if date_in_week == "": return {"error": "Missing Argument. Please use YYYY-MM-DD format."} # Validate date format (YYYY-MM-DD) try: # Check basic format with regex if not re.match(r'^\d{4}-\d{2}-\d{2}$', date_in_week): return {"error": "Invalid date format. Please use YYYY-MM-DD format."} # Try to parse the date to validate it's a real date date_obj = datetime.strptime(date_in_week, "%Y-%m-%d") except ValueError: return {"error": "Invalid date. Please provide a valid date in YYYY-MM-DD format."} # Get the Bearer token from the authenticate method token = VanMoofAPI.get_vanmoof_token(VANMOOF_USERNAME, VANMOOF_PASSWORD) application_token = VanMoofAPI.get_application_token(token) if not application_token: return {"error": "Authentication failed"} # Get the riderId and bikeId from the customer data customerData = VanMoofAPI.get_customer_data() riderId = customerData.get('data', {}).get('uuid') if not riderId: return {"error": "RiderId not found"} bikeId = customerData.get('data', {}).get('bikes', [{}])[0].get('id') if not bikeId: return {"error": "BikeId not found"} country = customerData.get('data', {}).get('country') if not country: return {"error": "CountryCode not found"} # Calculate the Monday (start) and Sunday (end) of the week monday = date_obj - timedelta(days=date_obj.weekday()) sunday = monday + timedelta(days=7) # The API needs the end date of the week as lastSeenWeek last_seen_week = sunday.strftime("%Y-%m-%d") url = f"https://tenjin.vanmoof.com/api/v1/rides/{riderId}/{bikeId}/weekly" querystring = {"lastSeenWeek": last_seen_week, "limit": "1"} headers = { "authorization": f"Bearer {application_token}", "api-key": "fcb38d47-f14b-30cf-843b-26283f6a5819", "cache-control": "no-cache, private", "accept-language": f"{country.lower()}_{country.upper()}", "accept-encoding": "gzip", "timezone": timezone_name, "accept": "*/*", } response = requests.get(url, headers=headers, params=querystring) result = response.json().get('section', {})[0] # add section querystring to the result json result['querystring'] = querystring if not result: return {"error": "No rides found for the specified week"} else: return result

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/stefanstranger/mcp-server-vanmoof'

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