Skip to main content
Glama
st3v

Running Formulas MCP Server

by st3v

convert_pace

Convert running pace and speed between different units like minutes per kilometer, minutes per mile, kilometers per hour, and miles per hour for accurate training calculations.

Instructions

Convert between different pace and speed units.

Args: value: The numeric value to convert. from_unit: Source unit ("min_km", "min_mile", "kmh", "mph"). to_unit: Target unit ("min_km", "min_mile", "kmh", "mph").

Returns: dict: value (float): Converted numeric value. formatted (str): Human-readable formatted result. unit (str): Target unit descriptor.

Raises: ValueError: If from_unit or to_unit are not valid, or if conversion is not supported.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
valueYes
from_unitYes
to_unitYes

Implementation Reference

  • The @mcp.tool decorator registers the convert_pace function with the FastMCP server.
    @mcp.tool
  • Core handler function for the 'convert_pace' tool. Validates units, applies chained conversion functions based on from/to units, formats output pace/speed, and returns structured dict.
    def convert_pace(value: float, from_unit: str, to_unit: str) -> dict: """ Convert between different pace and speed units. Args: value: The numeric value to convert. from_unit: Source unit ("min_km", "min_mile", "kmh", "mph"). to_unit: Target unit ("min_km", "min_mile", "kmh", "mph"). Returns: dict: value (float): Converted numeric value. formatted (str): Human-readable formatted result. unit (str): Target unit descriptor. Raises: ValueError: If from_unit or to_unit are not valid, or if conversion is not supported. """ # Validate units valid_units = {"min_km", "min_mile", "kmh", "mph"} if from_unit not in valid_units: raise ValueError(f"Invalid from_unit '{from_unit}'. Must be one of: {valid_units}") if to_unit not in valid_units: raise ValueError(f"Invalid to_unit '{to_unit}'. Must be one of: {valid_units}") # Conversion function mapping - single functions, chains, or empty chains conversion_map = { # Same unit conversions (empty chains) ("min_km", "min_km"): [], ("min_mile", "min_mile"): [], ("kmh", "kmh"): [], ("mph", "mph"): [], # Direct conversions ("min_km", "min_mile"): [pace_min_km_to_min_mile], ("min_mile", "min_km"): [pace_min_mile_to_min_km], ("min_km", "kmh"): [pace_to_speed_kmh], ("kmh", "min_km"): [speed_kmh_to_pace], ("min_mile", "mph"): [pace_to_speed_mph], ("mph", "min_mile"): [speed_mph_to_pace], ("kmh", "mph"): [kmh_to_mph], ("mph", "kmh"): [mph_to_kmh], # Cross conversions via function chains ("min_km", "mph"): [pace_to_speed_kmh, kmh_to_mph], ("mph", "min_km"): [mph_to_kmh, speed_kmh_to_pace], ("min_mile", "kmh"): [pace_to_speed_mph, mph_to_kmh], ("kmh", "min_mile"): [kmh_to_mph, speed_mph_to_pace], } # Look up conversion functions conversion_key = (from_unit, to_unit) if conversion_key not in conversion_map: raise ValueError(f"Conversion from '{from_unit}' to '{to_unit}' not supported") # Apply function chain result_value = value for func in conversion_map[conversion_key]: result_value = func(result_value) # Format the result if to_unit in ["min_km", "min_mile"]: formatted = pace_in_min_sec(result_value) else: formatted = f"{result_value:.1f}" return { "value": round(result_value, 3), "formatted": formatted, "unit": to_unit }
  • Example helper function used by convert_pace for direct pace conversion from min/km to min/mile. Similar functions exist for other direct and chained conversions.
    def pace_min_km_to_min_mile(pace_min_km: float) -> float: """ Convert pace from minutes per kilometer to minutes per mile. Args: pace_min_km: Pace in minutes per kilometer. Returns: float: Pace in minutes per mile. """ # 1 mile = 1.609344 km return pace_min_km * 1.609344
  • Helper function to convert pace min/km to speed km/h, used in conversion chains.
    def pace_to_speed_kmh(pace_min_km: float) -> float: """ Convert pace (min/km) to speed (km/h). Args: pace_min_km: Pace in minutes per kilometer. Returns: float: Speed in kilometers per hour. """ if pace_min_km <= 0: raise ValueError("Pace must be a positive value") # Speed = 60 / pace (60 minutes per hour) return 60.0 / pace_min_km

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/st3v/running-formulas-mcp'

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