Skip to main content
Glama
stefanstranger

mcp-server-vanmoof

🚲VanMoof MCP Server

The VanMoof MCP Server implements the MCP specification to create a seamless connection between AI agents and key VanMoof services like VanMoof customer data, including bike details, VanMoof rider cities, rider preferences and weekly rides.

🎯 Overview

✨ What can you do with the VanMoof MCP Server?

The VanMoof MCP Server supercharges your agents with VanMoof rider context. Here are some cool prompts you can try:

πŸ” Explore your customer data

  • "Give me my VanMoof bike details, please."

  • "What is the name of my VanMoof's bike?"

  • "What is the frame number of my VanMoof's bike?"

  • "What is the color of my VanMoof's bike?"

πŸ™οΈ Cities Rides

  • "In which cities in the world are VanMoof rides tracked?"

  • "Create a table of the cities in the Netherlands where VanMoof rides are tracked with longitude and latitude columns"
    "Retrieves a list of cities in the Netherlands where VanMoof rides are tracked and formats them into a table with columns for longitude and latitude."

βš™οΈ Your rider preferences

  • "Get my VanMoof's rider preferences"

  • "Which city is configured in my VanMoof's rider preference?"

🚲 Explore your VanMoof's rides

  • "Give me my weekly ride stats for 2025-03-25 on my VanMoof"

  • "What was my top speed on my VanMoof's bike?"

  • "What was my longest ride on my VanMoof's bike?"

  • "What are the city statistics of today's week?"

  • "What are the world's bike statistics of today's week?"

  • "Compare the world statistics with the city statistics. What can you conclude?"

  • "Compare my weekly VanMoof ride statistics with the city and world bike statistics. Store the results in markdown table for the comparison."

Related MCP server: commercetools MCP Essentials

πŸ› οΈ Currently Supported Tools

  • get_customer_data: Retrieves customer data from the VanMoof autenticated user

  • get_vanmoof_cities: Retrieves a list of city data from the VanMoof API.

  • get_rider_preferences: Retrieves rider preferences from the VanMoof autenticated user.

  • get_rides_summary: Retrieves total rides summary from the VanMoof autenticated user.

  • get_rides_for_week(date_in_week: str = ""): Retrieves rides for a specific week from the VanMoof autenticated user.

  • get_city_rides_thisweek: Retrieves total city rides summary from VanMoof riders in this week.

  • get_world_rides_thisweek: Retrieves total world rides summary from VanMoof riders in this week.

πŸ”Œ Getting Started

Install Python

The VanMoof MCP Server requires Python. If you have not it installed, follow the instructions here.

Install uv

Also install uv. This an extremely fast Python package and project manager, written in Rust. Follow the instruction here to install uv.

Clone MCP-SERVER-VANMOOF Github Repository.

run below command in your terminal:

git clone https://github.com/stefanstranger/mcp-server-vanmoof

Test and debug VanMoof MCP Server

The MCP inspector is a developer tool for testing and debugging MCP servers.

Before local debugging and testing configure the .env file with your VanMoof credentials.

Rename the .env-example file to .env and configure your VanMoof credentials.

Run the following to test and debug the VanMoof MCP Server:

mcp dev c:\github\mcp-server-vanmoof\server.py

Configure the following arguments:

run --with mcp[cli] --with requests --with tzlocal mcp run c://github//mcp-server-vanmoof//server.py

And the Environment Arguments for VANMOOF_USERNAME and VANMOOF_PASSWORD in the Webbrowser after you have started the MCP inspector.

Inspector settings.

Launching MCP Inspector

There are two ways to launch MCP Inspector:

  • Launch with MCP CLI

  • Launch with npx @modelcontextprotocol/inspector

If you install the SDK with the cli option like uv add "mcp[cli]", you can use the MCP CLI. To start MCP Inspector, run mcp dev.

If you want to use the npx to launch the MCP Inspector run, after you have started your Python environment in your host.:

 npx @modelcontextprotocol/inspector uv run --with mcp[cli] --with requests --with tzlocal mcp run c://github//mcp-server-vanmoof//server.py -e VANMOOF_USERNAME=john.doe@outlook.com -e VANMOOF_PASSWORD=[very secret password]

πŸ”§ Setup

Usage with Claude Desktop

Add the following to your claude_desktop_config.json file:

{
  "mcpServers": {
    "mcp-server-vanmoof": {
            "type": "stdio",
            "command": "uv",
            "args": [
              "run",
              "--with",
              "mcp[cli]",
              "--with",
              "requests",
              "--with",
              "tzlocal",
              "mcp",
              "run",
              "C:\\Github\\mcp-server-vanmoof\\server.py"
            ],
            "env": {
              "VANMOOF_USERNAME": "john.doe@outlook.com",
              "VANMOOF_PASSWORD": "[VanMoof user account password]"
            }
        }
  }
}

πŸ›‘οΈ Security Note

Your VanMoof credentials are stored as plain text in the MCP Client configurations. Don't share these with others!!

References

Available Tools

7 tools
get_city_rides_thisweekB
    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
    
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses authentication requirements and the return format (including specific data fields), which is valuable. However, it doesn't mention rate limits, error conditions beyond authentication failure, or whether this is a read-only operation (though 'retrieves' implies it).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is reasonably structured with clear sections but has some redundancy ('The a summary') and could be more front-loaded. The authentication information is buried after the return format rather than being prioritized. Most sentences earn their place, but the flow could be improved.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no parameters, no annotations, and no output schema, the description does a decent job explaining what it returns and authentication requirements. However, it doesn't clarify the scope ('thisweek' in the name vs 'total' in description) or how it differs from sibling tools, leaving some contextual gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters with 100% schema description coverage, so the baseline is 4. The description appropriately doesn't discuss parameters since none exist, focusing instead on return values and authentication requirements.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves a total city rides summary from VanMoof riders, which is a specific verb+resource combination. However, it doesn't explicitly differentiate from sibling tools like 'get_rides_summary' or 'get_world_rides_thisweek' - the 'city' scope is implied but not contrasted with alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions authentication requirements but provides no guidance on when to use this tool versus similar siblings like 'get_rides_summary' or 'get_world_rides_thisweek'. There's no explicit when/when-not guidance or alternative tool recommendations for different use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_customer_dataB
    Retrieves customer data from the vanMoof API.

    Returns:
        The rider vanMoof's customer data if authentication is successful, otherwise None.
    
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It adds some context by mentioning authentication requirements and the return value (customer data or None), but lacks details on rate limits, error handling, data format, or other operational traits. This is a minimal but adequate disclosure for a simple retrieval tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately concise with two sentences: one stating the purpose and one detailing the return behavior. It's front-loaded with the core function and avoids redundancy, though the formatting includes extra whitespace that slightly detracts from structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (0 parameters, no output schema, no annotations), the description is complete enough for basic use. It covers the purpose and return conditions, but could benefit from more context on data scope or sibling differentiation to fully guide the agent in a server with multiple retrieval tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters, and the schema description coverage is 100%, so no parameter documentation is needed. The description appropriately doesn't discuss parameters, earning a high baseline score for not adding unnecessary information.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with a specific verb ('Retrieves') and resource ('customer data from the vanMoof API'), making it easy to understand what it does. However, it doesn't explicitly differentiate this tool from its siblings (like get_rider_preferences or get_rides_summary), which would require a more specific scope or comparison.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It mentions authentication success/failure, but doesn't specify contexts, prerequisites, or exclusions compared to sibling tools, leaving the agent to infer usage based on tool names alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_rider_preferencesB
    Retrieves rider preferences from the vanMoof API.

    Returns:
        The rider preferences if authentication is successful, otherwise None.
    
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses that authentication is required and describes the return behavior (preferences if successful, None otherwise). However, it lacks details on error handling, rate limits, or side effects, which are important for a tool interacting with an external API.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is brief and front-loaded, with the main purpose stated first and additional behavioral context in a second sentence. There's no wasted text, but the structure could be slightly improved by integrating the return information more seamlessly rather than as a separate 'Returns:' section.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations, no output schema, and 0 parameters, the description covers the basic purpose and authentication behavior adequately. However, for an API tool, it lacks details on response format, error types, or integration context, which would help an agent use it more effectively in complex scenarios.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters with 100% schema description coverage, so the schema fully documents the inputs. The description doesn't need to add parameter details, and it correctly avoids redundancy. A baseline of 4 is appropriate as it focuses on the tool's purpose without unnecessary parameter explanations.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Retrieves') and resource ('rider preferences'), and specifies the source ('from the vanMoof API'). It distinguishes from sibling tools that focus on rides, cities, or customer data. However, it doesn't explicitly contrast with specific alternatives, keeping it at 4 rather than 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'get_customer_data' or other ride-related tools. It mentions authentication but doesn't specify prerequisites or contextual triggers for selecting this tool over siblings, leaving usage unclear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_rides_for_weekA
    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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
date_in_weekNo

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses authentication requirements and return behavior (returns rides if successful, otherwise None), which is valuable. However, it lacks details on rate limits, error handling, pagination, or data format, leaving behavioral gaps for a read operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized with three sentences: purpose, parameter details, and return behavior. It's front-loaded with the core purpose and uses clear sections (Args, Returns). There's minimal waste, though the formatting with extra whitespace slightly reduces efficiency.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations, no output schema, and a simple parameter (1 param with 0% schema coverage), the description is moderately complete. It covers purpose, parameter semantics, and authentication/return behavior, but lacks details on output format (e.g., structure of rides data), error cases beyond authentication, or performance constraints, which could be important for an API tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 0%, so the description must compensate. It adds significant meaning: it explains the parameter 'date_in_week' as 'Any date within the week in format "YYYY-MM-DD"' with a default behavior ('If None, uses the current date'), which clarifies usage beyond the bare schema. This adequately covers the single parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Retrieves' and resource 'rides for a specific week from the vanMoof API', making the purpose explicit. It distinguishes from siblings like 'get_rides_summary' by focusing on weekly data rather than summaries, but doesn't explicitly contrast with 'get_city_rides_thisweek' or 'get_world_rides_thisweek' which might have overlapping scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for retrieving weekly rides and mentions authentication requirements, but provides no explicit guidance on when to use this tool versus alternatives like 'get_city_rides_thisweek' or 'get_world_rides_thisweek'. The context is clear but lacks sibling differentiation or exclusion criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_rides_summaryA
    Retrieves total rides summary for the VanMoof rider being authenticated.


    Returns:
        The a summary of the total rides of the VanMoof rider if authentication is successful, otherwise None.
        The following information is returned:
        - Average distance in km
        - Total Rides
        - Average duration in minutes
        - Total distance in km
    
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions authentication dependency ('if authentication is successful, otherwise None'), which is useful context. However, it lacks details on rate limits, error handling, or data freshness, leaving gaps in behavioral understanding for a tool that likely involves user-specific data retrieval.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and concise, with a clear purpose statement followed by return details. It uses two paragraphs efficiently, though the 'Returns:' section could be slightly more streamlined. Overall, it avoids fluff and stays focused on essential information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description provides basic purpose and output details but lacks comprehensive context. It explains the return format (summary with specific metrics) and authentication dependency, which is helpful. However, for a tool that likely involves user data, more details on permissions, data sources, or limitations would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description appropriately does not discuss parameters, focusing instead on the tool's purpose and output. This meets the baseline expectation for tools with no parameters, as it avoids unnecessary repetition.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool 'retrieves total rides summary for the VanMoof rider being authenticated,' specifying the verb (retrieves), resource (rides summary), and scope (for the authenticated rider). It distinguishes from siblings like 'get_rides_for_week' by focusing on summary totals rather than detailed or filtered ride data, though it could be more explicit about this differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context through 'for the VanMoof rider being authenticated,' suggesting it's for authenticated users, but it does not explicitly state when to use this tool versus alternatives like 'get_rides_for_week' or 'get_city_rides_thisweek.' No guidance on prerequisites, exclusions, or specific scenarios is provided, leaving usage somewhat ambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_vanmoof_citiesB
    Retrieves a list of city data from the vanMoof API.

    Returns:
        The rider vanMoof's city data if authentication is successful, otherwise None.        
    
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses that authentication is required for successful data retrieval and that the return may be 'None' if authentication fails, adding useful behavioral context. However, it lacks details on rate limits, error handling, or data format, leaving gaps in transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with two sentences that directly state the purpose and return behavior, with no wasted words. It is appropriately sized for a simple tool, though the structure could be slightly improved by front-loading key details more explicitly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no parameters, no annotations, and no output schema, the description provides basic purpose and authentication context, which is minimal but viable. However, it lacks details on output format, error cases beyond authentication, or how it fits with siblings, making it incomplete for full agent understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description does not add parameter information, which is acceptable here, but it could have mentioned any implicit parameters or context. Baseline is 4 for zero parameters, as it adequately handles the lack of inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Retrieves') and resource ('list of city data from the vanMoof API'), making the purpose specific and understandable. However, it does not explicitly differentiate this tool from sibling tools like 'get_city_rides_thisweek' or 'get_world_rides_thisweek', which might also involve city or ride data, so it misses full sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It mentions authentication success affects the return value, but does not specify contexts, prerequisites, or comparisons to sibling tools like 'get_city_rides_thisweek' for ride-specific data or 'get_customer_data' for user information.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_world_rides_thisweekB
    Retrieves total world 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:
        - Average distance in km
        - Total Rides
        - Average duration in minutes
    
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions that authentication is required for successful retrieval and specifies the return format (summary with average distance, total rides, average duration), which adds useful context. However, it doesn't cover other behavioral aspects like rate limits, error handling, or data freshness, leaving gaps in transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded, starting with the core purpose. The 'Returns' section is structured but includes a minor grammatical error ('The a summary'), which slightly affects clarity. Overall, it's efficient with minimal waste, though it could be more polished.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no parameters, no annotations, and no output schema, the description provides basic information on purpose, authentication requirement, and return format. However, it lacks details on error cases (e.g., what 'otherwise None' entails), data scope limitations, or how it differs from sibling tools, making it adequate but with clear gaps for a retrieval tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0 parameters with 100% coverage, so the schema fully documents the lack of inputs. The description adds no parameter information, which is appropriate here. Since there are no parameters, the baseline score is 4, as the description doesn't need to compensate for any gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the tool 'Retrieves total world rides summary from VanMoof riders,' which provides a clear verb ('retrieves') and resource ('world rides summary'), but it doesn't distinguish this from sibling tools like 'get_rides_summary' or 'get_rides_for_week,' making the purpose somewhat vague in context. It specifies 'world' scope, which helps differentiate from city-level tools, but lacks explicit comparison to similar global tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'get_rides_summary' or 'get_rides_for_week,' nor does it mention prerequisites or exclusions. It implies usage for authentication-based retrieval but doesn't clarify context or alternatives, leaving the agent with minimal direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 7 tool updatesv1.0.0
    • Changedget_city_rides_thisweek1 field changed
      • addedInput schema / title
        Added value: +"get_city_rides_thisweekArguments"
    • Changedget_customer_data1 field changed
      • addedInput schema / title
        Added value: +"get_customer_dataArguments"
    • Changedget_rider_preferences1 field changed
      • addedInput schema / title
        Added value: +"get_rider_preferencesArguments"
    • Changedget_rides_for_week1 field changed
      • addedInput schema / title
        Added value: +"get_rides_for_weekArguments"
    • Changedget_rides_summary1 field changed
      • addedInput schema / title
        Added value: +"get_rides_summaryArguments"
    • Changedget_vanmoof_cities1 field changed
      • addedInput schema / title
        Added value: +"get_vanmoof_citiesArguments"
    • Changedget_world_rides_thisweek1 field changed
      • addedInput schema / title
        Added value: +"get_world_rides_thisweekArguments"
  2. 7 tool updates
    • First observedget_city_rides_thisweek
    • First observedget_customer_data
    • First observedget_rider_preferences
    • First observedget_rides_for_week
    • First observedget_rides_summary
    • First observedget_vanmoof_cities
    • First observedget_world_rides_thisweek

TDQS

B3.3/5.0
Disambiguation2/5

Multiple tools have overlapping purposes that could cause confusion. get_city_rides_thisweek, get_rides_summary, and get_world_rides_thisweek all return similar ride summary data with only subtle differences in scope (city vs. world vs. general). get_rides_for_week also overlaps with these but adds a date parameter, creating ambiguity about when to use which summary tool.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern with 'get_' prefix and snake_case naming. The naming is perfectly predictable across all seven tools, making it easy to understand the pattern and anticipate tool names.

Tool Count4/5

Seven tools is a reasonable number for a bike sharing/ride tracking API. While the count is appropriate, the tools feel slightly redundant rather than each earning its distinct place due to the overlapping summary tools.

Completeness3/5

The server provides good read operations for customer data, preferences, cities, and rides, but lacks any write/update capabilities. For a rider data API, there are notable gaps - no tools to update preferences, log new rides, or modify customer information, which limits agent workflows to read-only operations.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

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