Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

S-Bike Training Hub

PYPI · S-BIKE-TRAINING-HUB · 2 COMPONENTS

Local training hub for cycling, running, swimming and lifting, with AI-led setup and planning.

−80 this week 0 Trust /100

Last scanned (4 hours ago)

Scores higher than 0% of PyPI servers

Category Health and Science

Recent critical change

CVE-2026-112398 affects this package (24 Oct 2026). See the changelog before you install this server.

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security75
  • No malware found by supply-chain analysis.Pass
  • CVE check failed: an unpatched critical CVE affects this package; the score is capped at 0. See how to fix → View diagnostics → Fail
  • Runs setuptools.build_meta at install time, a recognised build step with no custom scripting around it. View diagnostics → Pass
  • Dependency health was assessed across the 59 of 60 dependencies we could resolve, so this covers what we could see, not the whole tree. View diagnostics → Partial
Provenance & Transparency100
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Cryptographically verified build provenance (signed, bound to JHarp199345/S-Bike-Training-Hub). View diagnostics → Pass
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 10 days ago).Pass
  • Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability78
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (good).Pass
  • Context-footprint check failed: tool/resource definitions use about 17513 tokens (~141/item across 124 items; 124 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management33
  • Stability observed for 10 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage92
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 77% of tool parameters carry a description.Partial
Tool Safety75
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 0 of 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "get_transfer" implies "transfer" and declares readOnlyHint instead, contradicting what its own name says it does. See how to fix → Fail
  • An AI judge read all 125 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 24 Oct 26 0
    • CVE-2026-112398 affects this package: high ▼ critical
    • Malware scan: unverified → pass ▲ security
  • 23 Oct 26 0
    • CVE-2026-96639 affects this package: high ▼ critical
    • Malware scan: pass → unverified ▼ security
  • 22 Oct 26 0
    • CVE-2026-112900 affects this package: high ▼ critical
    • CVE-2026-112393 affects this package: high ▼ critical
  • 21 Oct 26 −80
    • CVE-2026-112403 affects this package: high ▼ critical
    • Known CVEs: partial → fail ▼ critical
    • Score status: scored → failed ▼ critical
    • Stability: unverified → 0.23 ▲ functional
  • 17 Oct 26 +15
    • Malware scan: unverified → pass ▲ security
  • 16 Oct 26 −15
    • Malware scan: pass → unverified ▼ security
  • 14 Oct 26 +31
    • Injection markers: unverified → pass ▲ security
    • First check of Judged manipulation: pass security
    • Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window). security
    • Tool coverage: unverified → 100 ▲ functional
    • Schema quality: unverified → 100 ▲ functional
    • MCP protocol: unverified → pass ▲ functional
    • Security disclosure: fail → pass ▲ functional
    • First check of Schema quality: fail functional
    • First check of Schema quality: fail functional
    • First check of Destructive annotations: 0 functional
    • First check of Tool coverage: 77 functional
    • First check of Schema quality: good functional
    • Package version: 1.12.0 → 1.12.2 functional
  • 13 Oct 26 +26
    • Malware scan: unverified → pass ▲ security
    • Known CVEs: unverified → partial ▲ security
    • Dependency health: unverified → partial ▲ functional
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 24 Oct 2026 · Analysed pypi/s-bike-training-hub@1.12.2

Provenance Verified

A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.

Result Verified
Ecosystem pypi
Reason Verified
Discovered via Registry attestation endpoint
Source repo JHarp199345/S-Bike-Training-Hub
Certificate issuer https://token.actions.githubusercontent.com
Certificate SAN https://github.com/JHarp199345/S-Bike-Training-Hub/.github/workflows/publish-pypi.yml@refs/tags/app-v1.12.2
Rekor log index 3247181978
Predicate type PyPI publish attestation https://docs.pypi.org/attestations/publish/v1
Subject digest sha256:3710222e1af251e7300413fcc48af68654348d0587c3aef541d545bb10b04807

Background: How many MCP packages publish verified provenance →

Install scripts 1 script
Hook Tier Command
build_backend allowlisted setuptools.build_meta

Background: Why install scripts are a supply-chain risk →

Vulnerabilities 41 findings
ID CVE Severity Vector Fix available
GHSA-22hg-r758-rrw9 CVE-2026-112390 high yes
GHSA-24rc-8hj2-v98c CVE-2026-96638 medium CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H yes
GHSA-254f-3936-288h CVE-2026-112391 medium yes
GHSA-27h8-gf7j-v5hc CVE-2026-112392 high yes
GHSA-332p-7hrc-92wf CVE-2026-112393 critical yes
GHSA-3j72-p6qg-6xp7 CVE-2026-96642 high yes
GHSA-4558-3h8r-v8xp CVE-2026-112394 medium yes
GHSA-462x-pgg6-55fp CVE-2026-112395 medium CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:L yes
GHSA-4rm8-3hmm-39fg CVE-2026-96641 medium CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H yes
GHSA-4rr5-89j8-mwwm CVE-2026-112396 medium CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H yes
GHSA-58r4-6rv3-gfh8 CVE-2026-112397 high yes
GHSA-5x8w-8jj5-q52h CVE-2026-112398 critical yes
GHSA-5xm2-6676-qcp9 CVE-2026-112399 high yes
GHSA-654x-cwwv-5j9c CVE-2026-114501 medium yes
GHSA-65qm-jvmh-6pqg CVE-2026-112400 high yes
GHSA-74r2-7ff9-mjj2 CVE-2026-112401 medium yes
GHSA-78g4-xqwv-q3g8 high CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H yes
GHSA-7mwm-ghpf-9vrm CVE-2026-112402 high yes
GHSA-8g5g-8vmr-9782 CVE-2026-112403 critical yes
GHSA-9v9v-9qvf-h2hj CVE-2026-96644 high yes
GHSA-c6hw-5grf-ff96 CVE-2026-112404 high yes
GHSA-cp9v-662q-vvx9 CVE-2026-112405 high yes
GHSA-f2g6-542v-9j58 CVE-2026-112406 high yes
GHSA-fc9g-5qg7-mf45 CVE-2026-112891 medium yes
GHSA-g4qv-2jxx-769h CVE-2026-96643 high yes
GHSA-g7cr-3p24-7wf7 CVE-2026-96778 high yes
GHSA-g842-9rc4-69pw CVE-2026-96637 high yes
GHSA-gg2r-wvfm-q9rx CVE-2026-112892 high yes
GHSA-j4m9-6w36-pw47 CVE-2026-112893 high yes
GHSA-jg86-v3jv-hrpm CVE-2026-112894 high yes
GHSA-mrfp-p49p-3hf2 CVE-2026-96640 high yes
GHSA-p4wg-p73j-c528 CVE-2026-112895 high yes
GHSA-p8hx-v2p6-rp84 CVE-2026-96636 medium CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H yes
GHSA-pchr-8j38-3x4p CVE-2026-112896 high yes
GHSA-q45j-58j2-45rg CVE-2026-112897 high yes
GHSA-rfgq-q3w2-pmv2 CVE-2026-112898 medium yes
GHSA-v9pv-5gc8-w2m6 CVE-2026-96639 critical CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H yes
GHSA-vx6w-vv9f-6gvg CVE-2026-112899 medium yes
GHSA-w889-685w-c8fh CVE-2026-112900 critical yes
GHSA-xgh8-jp6q-p5x8 CVE-2026-112901 medium yes
GHSA-xvh5-g6gv-559v CVE-2026-112902 high yes

Background: What a vulnerability scan can and cannot prove →

Dependencies 59 packages
Packages resolved 59
Stale 4
Tree resolution Partial

The dependency tree was only partially resolved, so these counts may be incomplete.

Background: SBOMs and build attestations, explained →

MCP tools · 124 exposed · ~16,952 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
save_completed_workout_to_library ~112

Save an approved completed workout of any recorded sport to the workout library. Preview save=false, then save=true. Watch readings and reports stay linked to the original activity. Changes to weights or reps keep the same movement history; changed movements create a separate routine. No new activity or calendar prescription.

NameTypeReqDescription
activity_idstringyesImported activity ID
library_idstring–Optional selected existing movement routine ID
namestring–Optional library name
saveboolean––

No output schema declared.

No examples provided.

save_library_workout ~265

Keep a reviewed prescription without scheduling it. Provide the same sport, name, minutes, typed_workout and lifts/swim_recipe/ride_blocks used by workout creation. favorite true hearts it. This does not resolve a dated goal brief or add activity load.

NameTypeReqDescription
favoriteboolean––
goal_difference_reviewedboolean––
library_idstring–Reuse or update this existing movement routine when movements match
liftsarray––
minutesnumber––
namestringyesWorkout name
ride_blocksarray––
run_recipeobject––
source_reviewedboolean––
sportstringyesSport
stepsarray––
swim_recipeobject––
typed_workoutobject––
workout_goalsobject–Requested work, not activity or clearance. Strength uses weight_moved with unit lb/kg; swimming distance with unit yd/m; cycling minutes, distance_km, energy_kcal or power_low/power_high with power_s…
workout_import_idstring–Reviewed local source

No output schema declared.

No examples provided.

save_planned_route ~88

Save a route from plan_area_route (by its cid) so it's in the rider's list; ride_now starts it on the bike at once (only when the rider asks, e.g. they're on the bike).

NameTypeReqDescription
cidinteger–The route's cid from plan_area_route
namestring–A name for it
ride_nowboolean––

No output schema declared.

No examples provided.

save_race_prediction ~224

Save a race prediction you made from the hub's numbers: {event: race id or date, likely, low, high (seconds or h:mm:ss), legs: {swim, t1, bike, t2, run}, basis: the numbers and assumptions used, levers: what would move it most}. Or the race result: {event, result: finishing time, legs}, which grades every prediction.

NameTypeReqDescription
basisstring–The numbers and assumptions the prediction used
eventstring–The race's id or date
highstring–Slowest plausible time
legsobject–Per-leg times: swim, t1, bike, t2, run
leversarray–What would move the time most
likelystring–Most likely time (seconds or h:mm:ss)
lowstring–Fastest plausible time
notestring–About the result (conditions, course)
resultstring–The actual finishing time, once raced

No output schema declared.

No examples provided.

save_run_workout ~199

Save a reviewed running recipe to one calendar session, within the existing running gate. Completed records are preserved. Preview first, then review the whole calendar and current tissue/readiness constraints.

NameTypeReqDescription
datestringyesDay as YYYY-MM-DD (default: today)
favoriteboolean––
goal_difference_reviewedboolean––
indexinteger–Existing running session index
minutesnumberyes–
namestringyesWorkout name
run_recipeobjectyes–
typed_workoutobject––
workout_goalsobject–Requested work, not activity or clearance. Strength uses weight_moved with unit lb/kg; swimming distance with unit yd/m; cycling minutes, distance_km, energy_kcal or power_low/power_high with power_s…

No output schema declared.

No examples provided.

save_swim_workout ~309

Save an athlete-approved swim prescription after preview and current load/readiness review. Preserve completed sessions. With an import, visually compare the source, explain uncertainty, obtain approval, and set source_reviewed true. index edits one existing uncompleted swim instead of adding a duplicate. This is planned work, not activity logging.

NameTypeReqDescription
datestring–Day as YYYY-MM-DD (default: today)
favoriteboolean––
fieldsobjectyes–
goal_difference_reviewedboolean––
goal_request_idstring–Dated brief ID being resolved
indexinteger–Existing swim session index to edit
minutesnumberyesFull planned session duration
namestringyesWorkout name
notestring–Purpose or coaching rationale
pool_lengthnumber––
repeatsinteger–Whole main-section repeats
source_reviewedboolean–Source transcription reviewed and athlete approved the prescription
unitstringyesDistance unit
workout_goalsobject–Requested work, not activity or clearance. Strength uses weight_moved with unit lb/kg; swimming distance with unit yd/m; cycling minutes, distance_km, energy_kcal or power_low/power_high with power_s…
workout_import_idstring–Source draft ID, if used

No output schema declared.

No examples provided.

save_workout_goal ~161

Save an athlete-requested dated workout brief with quantifiable sport goals. No workout, calorie burn or biological load is recorded until actual work is prescribed or completed.

NameTypeReqDescription
datestringyesDay as YYYY-MM-DD (default: today)
goalsobjectyesRequested work, not activity or clearance. Strength uses weight_moved with unit lb/kg; swimming distance with unit yd/m; cycling minutes, distance_km, energy_kcal or power_low/power_high with power_s…
namestringyesBrief name
notestring–Athlete preferences and phase constraints
sportstringyesSport

No output schema declared.

No examples provided.

schedule_route_workout ~85

Add an existing saved route to one day as a cycling prescription. Read its profile, current phase and projected whole-calendar load first. This schedules planned work, never starts the bike or fabricates completed activity.

NameTypeReqDescription
datestringyesDay as YYYY-MM-DD (default: today)
minutesnumberyes–
route_idstringyesSaved route ID

No output schema declared.

No examples provided.

schedule_test ~110

Put a test on the calendar (a plan item, not a button): ftp, diagnostic, big_gear, css, benchmark_run. Sets the day's marker, time, how-to note, and for big_gear the focus that runs it; the bike tests start from the Coach page's Ride it row. Keep the two days before an FTP or big-gear test easy.

NameTypeReqDescription
datestring–Day as YYYY-MM-DD (default: today)
teststring–Which test

No output schema declared.

No examples provided.

schedule_test_week ~122

Plan a test week - the rider's way (from their high-school lifting program): it's also the recovery week. Easy, reduced sessions Mon-Wed so they peak on test day; swim CSS test Thu if due; morning diagnostic Fri then rest; TEST DAY Sat (FTP ramp test, or the big-gear test - one leg test a day); Sun off; training resumes Monday. Every 6 weeks; no monday = the next one due. Overwrites that week's plan.

NameTypeReqDescription
mondaystring–Day as YYYY-MM-DD (default: today)

No output schema declared.

No examples provided.

set_body_weight ~76

Record the athlete's current body weight (from today, or 'from' YYYY-MM-DD). Earlier weights are kept as dated history, so past sessions' energy keeps the weight the athlete had then.

NameTypeReqDescription
fromstring–Optional start date YYYY-MM-DD
unitstring––
weightnumberyes–

No output schema declared.

No examples provided.

set_capacity ~133

Tune a body system's usual week (engine, impact or muscle, in load points) from how the rider's body actually responded - e.g. they handled 416 engine points like easy work (raise engine), or their feet feel overdone at 79 impact (lower impact so 79 reads 'caution'). The zones, ratio and weekly budget then use it. Say why in the note. usual_week null clears it back to the model.

NameTypeReqDescription
notestring–Why: what the rider reported
systemstringyesengine, impact or muscle
usual_weeknumber|nullyes–

No output schema declared.

No examples provided.

set_event ~235

Add a date to plan backward from - an FTP test, a race, a goal ({date, name, kind: test|race|goal, sport: bike|run|swim|tri|other, note}) - or {remove: id}. get_today lists upcoming ones with days to go and notes (easy days before a test, taper before a race, and for running events whether the load model will have running cleared by then). Plan the days before each one around it.

NameTypeReqDescription
datestring–Day as YYYY-MM-DD (default: today)
distancestring–Triathlon: sprint, olympic, 70.3, ironman; run race: km
event_typestring–What kind of race (sets the programming)
kindstring–test, race or goal
namestring–What it is
notestring–Anything else
removestring–An event id to remove
sportstring–bike, run, swim, tri or other
strokesarray–Swim meet events

No output schema declared.

No examples provided.

set_lift_rule ~122

Add one of the rider's lifting rules, in their words ("No squats", "Favorite lift: incline dumbbell press", "Nothing heavy overhead - left shoulder"), or remove one (remove = the rule's text, or the exercise it excludes). 'No ...' / 'never ...' rules are enforced: plans with those exercises are refused. Every AI the rider uses reads these rules.

NameTypeReqDescription
notestring–Why, if they said
removestring–A rule to remove
textstring–The rule

No output schema declared.

No examples provided.

set_plan ~417

Write today's plan onto the Coach page: the verdict (go/easy/rest), your coaching note to them (plain, specific: what to ride, how it should feel, when to stop), and optionally the workout to ride (workout_id from list_workouts or a create tool).

NameTypeReqDescription
datestring–Day as YYYY-MM-DD (default: today)
focus––What the ride is coaching for - a cadence range plus a watt range that auto-shift steers toward: 'cadence' (65-80 rpm, zone 2: builds the cadence habit), 'grit' (50-65 rpm, 76-90% FTP: force; loads t…
minutesinteger–The time goal for the day's session
notestring–Your note to them
sessionsarray–Optional ordered sessions for this day, each {sport, minutes, name, steps: [set or interval descriptions], note, workout, swim_profile, swim_plan: {stroke_mix, work_mix, purpose, why} (swim sessions)…
sportstring–The day's marker on the Coach page's week: ride, swim, run, walk, gym, test, rest, other (swims can't go on the COROS calendar - this is where they live)
verdictstring–go, easy or rest
workout_idstring–Workout to ride today (empty string clears it)

No output schema declared.

No examples provided.

set_route_session ~243

Attach training to places on a route for a day (default today): when the rider starts that route the bridge runs it, steering auto-shift and shifting for the efforts. Segments (use climb numbers from get_route_climbs, or metres along the route): {type:'climb_time', climb:2, seconds:600, rpm?:[lo,hi]} - get up it in that time: the pace becomes a watt target, re-worked every second from what's left; {type:'efforts', climb:1 or at_m, count:3, on_s:15, off_s:180, watts:200, rpm?:[55,70]} - efforts in a big gear, shifted into at the start of each; {type:'focus', climb:3 or start_m+end_m, focus:'grit'} - a different focus for part of the route. Empty segments clear it. Results land in get_ride_story and get_climb_history.

NameTypeReqDescription
datestring–Day as YYYY-MM-DD (default: today)
route_idstring–Route id
segmentsarray––

No output schema declared.

No examples provided.

set_skill_level ~69

Move a skill ladder by hand (the coach's call): skill cadence/speed/grit/climbing/running, level 1..N, and why.

NameTypeReqDescription
levelinteger–Step, from 1
skillstring–Skill
whystring–Why

No output schema declared.

No examples provided.

set_sport_baseline ~162

Save the athlete's own calibration for a sport when there's little recorded history: their current routine (now) and their past best (best, with when). Use the athlete's words; it is provisional until recorded weeks and reports confirm it. Ask during setup or whenever a plan looks far too easy or too hard.

NameTypeReqDescription
bestobject–Past best: the same fields plus when (e.g. '2019' or 'college')
notestring–The athlete's own words about it
nowobject–Current routine: sessions_per_week, weekly_km, weekly_minutes, longest_km, longest_minutes, session_km, session_minutes
sportstring–bike, run, swim or lift

No output schema declared.

No examples provided.

set_swim_settings ~134

The rider's swim dials: the stroke mix (free, back, breast, fly out of 100), the drill share (15-30%), and whether the mix follows their race (follow_event, default true) or their dials.

NameTypeReqDescription
drill_shareinteger–Percent of the session that is drill-then-swim
follow_eventboolean––
mixobject–{free, back, breast, fly} - normalised to 100
profile_idstring–Preferred reusable swim profile; auto chooses by phase, load, recent work and Sunday response

No output schema declared.

No examples provided.

set_wearable_estimates ~91

Record the athlete's wearable starting estimates (VO2max, resting and maximum heart rate) for starting capacities before there is training history. Say where they came from (e.g. 'COROS fitness assessment').

NameTypeReqDescription
hr_maxinteger––
hr_restinteger––
sourcestring–Where the numbers came from
vo2maxnumber––

No output schema declared.

No examples provided.

settle_journal_flag ~124

Settle a flag the journal raised (get_checkins shows each day's flags: bone, muscle, illness, better). ONLY on their say-so in chat - never decide it for them. confirm = it's real, count it (bone/muscle read as 6/10 on their slider that day; illness makes heart & lungs easy); dismiss = it's fine; reopen = undo.

NameTypeReqDescription
actionstring–What they said
datestring–Day as YYYY-MM-DD (default: today)
idstring–The flag id

No output schema declared.

No examples provided.

start_diagnostic ~31

Start the 6-minute morning diagnostic on the bike NOW (only when he asks and is on the bike).

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

start_workout ~43

Start a workout on the bike NOW in ERG (only when he asks, e.g. he's on the bike).

NameTypeReqDescription
workout_idstringyesWorkout id

No output schema declared.

No examples provided.

update_session_explanation ~147

Update only a saved workout's plain-language reason for being in the plan. Read its explanation.context_token from get_today or get_training_calendar first. Preserve doses, steps, phase, dates and recovery gates. At check-ins review stale or misleading explanations against the actual phase, neighboring workouts and forecasts. Leave accurate text unchanged. Do not invent a heavy session, physiological benefit, or clearance.

NameTypeReqDescription
context_tokenstringyesCurrent explanation context token
datestringyesDay as YYYY-MM-DD (default: today)
session_indexintegeryesSaved session index
textstringyesShort, clear reason this workout fits the plan (maximum 600 characters)

No output schema declared.

No examples provided.

Install

How do I install the S-Bike Training Hub MCP server?

S-Bike Training Hub runs locally as a PyPI package, launched with uvx s-bike-training-hub. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

pypi · s-bike-training-hub

# add to Claude Code
claude mcp add jharp199345-s-bike-hub -- uvx s-bike-training-hub
Common questions

What is the S-Bike Training Hub MCP server?

S-Bike Training Hub is an MCP server listed in the public MCP registry as io.github.JHarp199345/s-bike-hub. Local training hub for cycling, running, swimming and lifting, with AI-led setup and planning. This page covers its PyPI package (s-bike-training-hub).

What tools does the S-Bike Training Hub MCP server expose?

S-Bike Training Hub exposes 124 tools: get_activity_report, record_activity_report, get_recorded_swim_draft, record_completed_swim_details, preview_strength_workout, and 119 more. Their descriptions and schemas cost roughly 16,952 tokens of context every time the server is loaded.

Is the S-Bike Training Hub MCP server still maintained?

S-Bike Training Hub is still listed as active in the MCP registry. We last reached this channel on 24 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the S-Bike Training Hub MCP server under?

S-Bike Training Hub declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.