SEMIPRO Cycling Intelligence
Analyse cycling-event GPX routes and build bounded, practical ride-fuelling carry plans.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"semipro-intelligence": {
"url": "https://api.semipro.coach/mcp"
}
}
}Remote endpoints
https://api.semipro.coach/mcpstreamable-httpWhat it can do
Tool inventory
Tools (2)
🟢analyse_event_route(gpx_xml, gpx_base64, event)
Analyse a cycling-event GPX using SEMIPRO Event Demand Intelligence. Use this when a rider, coach or agent asks what a route will demand, which climbs or sections matter, or what kind of performance problem the course creates. This analyses the course only: it does not inspect an athlete, prescribe training, predict a result, diagnose a medical issue, or analyse a completed FIT activity.
Input Schema
{
"type": "object",
"properties": {
"gpx_xml": {
"type": "string",
"description": "Complete GPX XML. Provide this or gpx_base64. Maximum decoded size: 3 MB."
},
"gpx_base64": {
"type": "string",
"description": "Base64-encoded GPX file. Provide this or gpx_xml. Maximum decoded size: 3 MB."
},
"event": {
"type": "object",
"additionalProperties": false,
"properties": {
"name": {
"type": "string",
"maxLength": 160
},
"type": {
"type": "string",
"enum": [
"road_race",
"criterium",
"time_trial",
"gran_fondo",
"sportive",
"gravel",
"mtb",
"mtb_xc",
"ultra",
"stage",
"triathlon_bike_leg",
"other"
]
},
"date": {
"type": "string",
"format": "date"
},
"start_time": {
"type": "string",
"pattern": "^([01]\\d|2[0-3]):[0-5]\\d$"
},
"course_format": {
"type": "string",
"enum": [
"point_to_point",
"loop",
"laps"
]
},
"course_laps": {
"type": "integer",
"minimum": 1,
"maximum": 100
}
}
}
},
"anyOf": [
{
"required": [
"gpx_xml"
]
},
{
"required": [
"gpx_base64"
]
}
],
"additionalProperties": false
}🟢plan_ride_fuelling(duration_minutes, ride_type, current_tolerance, carb_sources)
Turn a cycling session duration, broad work type and current carbohydrate tolerance into a bounded carbohydrate target, carry plan and timing guide. Use this when a rider needs to know how much carbohydrate to carry and how to divide it across their own gels, drink, chews or food. This is general sports-fuelling guidance: it does not provide medical nutrition, prescribe hydration or sodium, create a daily meal plan, or use connected athlete data.
Input Schema
{
"type": "object",
"properties": {
"duration_minutes": {
"type": "integer",
"minimum": 15,
"maximum": 1440,
"description": "Planned cycling duration in minutes."
},
"ride_type": {
"type": "string",
"enum": [
"recovery",
"endurance",
"tempo_threshold",
"intervals",
"race_event"
],
"description": "Broad work demand. Use race_event only for a race, sportive or equivalent performance event."
},
"current_tolerance": {
"type": "string",
"enum": [
"not_established",
"up_to_45",
"up_to_60",
"up_to_75",
"up_to_90"
],
"description": "Highest carbohydrate intake in grams per hour already tolerated reliably in similar cycling."
},
"carb_sources": {
"type": "array",
"minItems": 1,
"maxItems": 12,
"description": "Optional products or foods the rider already has. Omit to receive a generic equivalent pack.",
"items": {
"type": "object",
"required": [
"name",
"form",
"carbs_g"
],
"additionalProperties": false,
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"form": {
"type": "string",
"enum": [
"drink",
"gel",
"chew",
"food"
]
},
"carbs_g": {
"type": "integer",
"minimum": 1,
"maximum": 150
},
"max_servings": {
"type": "integer",
"minimum": 1,
"maximum": 24,
"default": 12
}
}
}
}
},
"required": [
"duration_minutes",
"ride_type",
"current_tolerance"
],
"additionalProperties": false
}Community
Evidence