Skip to main content
Glama
stefanstranger

mcp-server-vanmoof

get_city_rides_thisweek

Retrieve weekly city ride summaries from VanMoof riders, including total rides, average distance, duration, and location data for analysis.

Instructions

    Retrieves total city rides summary from VanMoof riders.


    Returns:
        The a summary of the total rides of the VanMoof rider city if authentication is successful, otherwise None.
        The following information is returned:
        - City name
        - Average distance in km
        - Total Rides
        - Average duration in minutes
        - Location in latitude and longitude
    

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • The handler function decorated with @mcp.tool(), which registers and implements the 'get_city_rides_thisweek' tool. It authenticates with VanMoof API, retrieves necessary IDs and preferences, fetches this week's rides data, extracts city summary, processes average duration, adds location info, and returns the result.
    @mcp.tool()
    def get_city_rides_thisweek()-> Dict[str, Any]:
        """
        Retrieves total city rides summary from VanMoof riders.
    
    
        Returns:
            The a summary of the total rides of the VanMoof rider city if authentication is successful, otherwise None.
            The following information is returned:
            - City name
            - Average distance in km
            - Total Rides
            - Average duration in minutes
            - Location in latitude and longitude
        """
        # 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 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"}
        
        # Get the riders preferences and city
        riderPreferences = VanMoofAPI.get_rider_preferences()
        riderCity = riderPreferences.get('city')
        # Get city name from the city code
        cities = VanMoofAPI.get_vanmoof_cities()
        location= next((city['location'] for city in cities if city['code'] == riderCity), None)
    
        last_seen_week = datetime.now().strftime("%Y-%m-%d")
    
        # Ensure last_seen_week is the Monday of the week
        date_obj = datetime.strptime(last_seen_week, "%Y-%m-%d")
        monday = date_obj - timedelta(days=date_obj.weekday())
        last_seen_week = monday.strftime("%Y-%m-%d")
    
        url = f"https://tenjin.vanmoof.com/api/v1/rides/{riderId}/{bikeId}/weekly"
        querystring = {"lastSeenWeek": last_seen_week, "limit": str(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('carousel', {}).get('city', {})
        # Convert the average duration from milliseconds to minutes.
        result['averageDuration'] = round(result['averageDuration'] / 1000 / 60, 2)
        # Add the city name to the result
        result['location'] = location
            
        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