Curated UK running routes — search, recommend and find trail, road and parkrun runs.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Browse Skamper run lists — curated collections of routes (e.g. 'Best UK trail half-marathons'). Returns Skamper's editorial picks and the most recent public user-created lists. Use get_runlist to see the routes inside one.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
claude mcp add --transport http skamper https://skamper.com/mcp
Browse Skamper run lists — curated collections of routes (e.g. 'Best UK trail half-marathons'). Returns Skamper's editorial picks and the most recent public user-created lists. Use get_runlist to see the routes inside one.
| Argument | Type | Description |
|---|---|---|
| kind | string | |
| limit | integer |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"kind": {
"enum": [
"featured",
"recent",
"both"
],
"type": "string",
"default": "both"
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 20,
"minimum": 1
}
},
"additionalProperties": false
}Find Skamper running routes close to 5 km (parkrun distance) near a location. Returns the nearest routes between 4.5 and 5.5 km. Great for runners asking 'a 5k near me'.
| Argument | Type | Description |
|---|---|---|
| lat* | number | Latitude of the user's location. |
| lng* | number | Longitude of the user's location. |
| limit | integer | |
| max_distance_from_user_km | number | Only return routes within this many km of the user. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"lat",
"lng"
],
"properties": {
"lat": {
"type": "number",
"description": "Latitude of the user's location."
},
"lng": {
"type": "number",
"description": "Longitude of the user's location."
},
"limit": {
"type": "integer",
"default": 8,
"maximum": 15,
"minimum": 1
},
"max_distance_from_user_km": {
"type": "number",
"default": 40,
"maximum": 200,
"minimum": 1,
"description": "Only return routes within this many km of the user."
}
},
"additionalProperties": false
}Fetch the full details for a single Skamper route by its slug. Returns title, location, distance, ascent, surface, course shape, description, reviews, and the canonical page URL. A free Skamper account is required to download the GPX file from the page.
| Argument | Type | Description |
|---|---|---|
| slug* | string | Route slug, e.g. 'parkrun-bushy-park' or 'lake-district-fairfield-horseshoe'. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "Route slug, e.g. 'parkrun-bushy-park' or 'lake-district-fairfield-horseshoe'."
}
},
"additionalProperties": false
}Fetch a Skamper run list by slug. Returns the list metadata and the ordered routes inside.
| Argument | Type | Description |
|---|---|---|
| slug* | string | Run list slug from browse_runlists or a Skamper URL like /runlists/<slug>. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "Run list slug from browse_runlists or a Skamper URL like /runlists/<slug>."
}
},
"additionalProperties": false
}List the UK National Parks Skamper covers, with route counts and slugs. Use the slug with routes_in_national_park or search_routes (national_park=...).
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}Recommend a UK running route that fits the runner. Use this when a user describes who they are and what they want — e.g. 'I'm a trail runner near Ambleside, 15k, avoid roads, something scenic and not too technical'. Returns a ranked shortlist with reasoning-friendly fields (surface, ascent, course shape, national park) and canonical Skamper URLs. Prefer this over search_routes whenever the request is about runner preference rather than exact numeric filters.
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| scenic | boolean | Prefer national parks and named landscapes. |
| near_lat | number | Latitude near the runner (recommended). |
| near_lng | number | Longitude near the runner (recommended). |
| loop_only | boolean | Only return circular routes (no point-to-point). |
| user_type | string | Who is running — biases surface and ascent preferences. |
| avoid_roads | boolean | Heavily down-rank tarmac routes. |
| distance_km | number | Target distance in km. |
List running routes inside a UK National Park. Pass the park slug (use list_national_parks to discover slugs).
| Argument | Type | Description |
|---|---|---|
| slug* | string | Park slug, e.g. 'lake-district', 'snowdonia', 'peak-district', 'yorkshire-dales'. Also accepts a park name (case-insensitive). |
| limit | integer |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "Park slug, e.g. 'lake-district', 'snowdonia', 'peak-district', 'yorkshire-dales'. Also accepts a park name (case-insensitive)."
},
"limit": {
"type": "integer",
"default": 15,
"maximum": 40,
"minimum": 1
}
},
"additionalProperties": false
}Search Skamper's curated UK running-route database when the user gives concrete filters — name, location (lat/lng), distance range, max ascent, paved surface %, course shape, or national park. Returns up to 20 compact route summaries with canonical URLs. If the user instead describes who they are or what they want ('I'm a trail runner who hates roads'), prefer recommend_route. For parkrun-distance asks, prefer find_5k.
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| query | string | Free text — searches route titles and slugs. Optional. |
| near_lat | number | Latitude to search near. Pair with near_lng. |
| near_lng | number | Longitude to search near. Pair with near_lat. |
| course_shape | string | |
| max_ascent_m | number | Maximum total ascent in metres (flatter routes). |
| max_paved_pct | number | Maximum paved surface % (trail runners). |
| min_paved_pct | number | Minimum paved surface % (road runners). |
We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 3, 2026.
| technicality | string | Rough terrain difficulty — maps to hilliness and ascent bands. |
| distance_tolerance_km | number |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"default": 5,
"maximum": 10,
"minimum": 1
},
"scenic": {
"type": "boolean",
"default": false,
"description": "Prefer national parks and named landscapes."
},
"near_lat": {
"type": "number",
"description": "Latitude near the runner (recommended)."
},
"near_lng": {
"type": "number",
"description": "Longitude near the runner (recommended)."
},
"loop_only": {
"type": "boolean",
"default": false,
"description": "Only return circular routes (no point-to-point)."
},
"user_type": {
"enum": [
"trail_runner",
"road_runner",
"mixed",
"beginner",
"hill_runner",
"walker"
],
"type": "string",
"default": "mixed",
"description": "Who is running — biases surface and ascent preferences."
},
"avoid_roads": {
"type": "boolean",
"default": false,
"description": "Heavily down-rank tarmac routes."
},
"distance_km": {
"type": "number",
"maximum": 60,
"minimum": 1,
"description": "Target distance in km."
},
"technicality": {
"enum": [
"easy",
"moderate",
"hard"
],
"type": "string",
"description": "Rough terrain difficulty — maps to hilliness and ascent bands."
},
"distance_tolerance_km": {
"type": "number",
"default": 2,
"maximum": 10,
"minimum": 0.5
}
},
"additionalProperties": false
}| national_park |
| string |
| Filter to routes in this national park (name or slug). |
| max_distance_km | number |
| min_distance_km | number |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"default": 10,
"maximum": 20,
"minimum": 1
},
"query": {
"type": "string",
"description": "Free text — searches route titles and slugs. Optional."
},
"near_lat": {
"type": "number",
"description": "Latitude to search near. Pair with near_lng."
},
"near_lng": {
"type": "number",
"description": "Longitude to search near. Pair with near_lat."
},
"course_shape": {
"enum": [
"single-loop",
"out-and-back",
"point-to-point",
"lollipop",
"multiple-laps",
"adjacent-loops"
],
"type": "string"
},
"max_ascent_m": {
"type": "number",
"description": "Maximum total ascent in metres (flatter routes)."
},
"max_paved_pct": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "Maximum paved surface % (trail runners)."
},
"min_paved_pct": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "Minimum paved surface % (road runners)."
},
"national_park": {
"type": "string",
"description": "Filter to routes in this national park (name or slug)."
},
"max_distance_km": {
"type": "number"
},
"min_distance_km": {
"type": "number"
}
},
"additionalProperties": false
}