fitfly-engine
Deterministic fitness coaching engine: adaptive programs, progression math, readiness autoregulation
Sollte ich dies verwenden
Qualität und Sicherheit
Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.
Kontextkosten
Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.
Installieren
Installation mit einem Klick
Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:
{
"mcpServers": {
"fitfly-engine": {
"url": "https://workout-engine-production-5dd7.up.railway.app/mcp"
}
}
}Remote-Endpunkte
https://workout-engine-production-5dd7.up.railway.app/mcpstreamable-httpWas es kann
Tool-Inventar
Tools (10)
🟢get_todays_session(dayIndex)
Today's workout: exercises, sets/reps, per-exercise load guidance and concrete target weights, plus nutrition targets and cycle status. Auto-applies the user's readiness check-in (autoregulation) if they've done one today. Call this to see what the athlete should do now.
Eingabe-Schema
{
"type": "object",
"properties": {
"dayIndex": {
"description": "Which program day (1-based). Defaults to the first day.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢readiness_checkin(energy, sleep, soreness)
Record how the athlete feels today (energy, sleep, soreness — each 1–5). The engine scores readiness and, on the next get_todays_session, reshapes the workout accordingly (reduce volume / reduce intensity / recovery day). Returns the readiness score + modifier.
Eingabe-Schema
{
"type": "object",
"properties": {
"energy": {
"type": "integer",
"minimum": 1,
"maximum": 5,
"description": "1 drained … 5 great"
},
"sleep": {
"type": "integer",
"minimum": 1,
"maximum": 5,
"description": "1 terrible … 5 great"
},
"soreness": {
"type": "integer",
"minimum": 1,
"maximum": 5,
"description": "1 none … 5 very sore"
}
},
"required": [
"energy",
"sleep",
"soreness"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪log_workout(dayIndex, goal, exercises)
Record what the athlete actually lifted. The engine runs progression (double-progression, e1RM), detects PRs, and returns per-exercise outcomes (established/progressed/held/deloaded) with next-time targets. Weights are in kg.
Eingabe-Schema
{
"type": "object",
"properties": {
"dayIndex": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"goal": {
"type": "string",
"enum": [
"strength",
"hypertrophy",
"general_fitness",
"fat_loss"
]
},
"exercises": {
"type": "array",
"items": {
"type": "object",
"properties": {
"exerciseId": {
"type": "string"
},
"prescribedRepTop": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"sets": {
"type": "array",
"items": {
"type": "object",
"properties": {
"weightKg": {
"type": "number"
},
"reps": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"rpe": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"completed": {
"type": "boolean"
}
},
"required": [
"weightKg",
"reps"
]
}
}
},
"required": [
"exerciseId",
"sets"
]
},
"description": "Per-exercise completed sets (weights in kg)."
}
},
"required": [
"exercises"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢list_swap_options(exerciseId)
Valid alternatives for an exercise — same muscle group, filtered to the athlete's equipment/level/injuries. Use before swap_exercise.
Eingabe-Schema
{
"type": "object",
"properties": {
"exerciseId": {
"type": "string"
}
},
"required": [
"exerciseId"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪swap_exercise(exerciseId, toExerciseId, dayIndex, scope)
Replace an exercise with a valid same-area alternative. scope 'today' = just this session; scope 'program' = going forward. The new lift starts fresh (day-one calibration).
Eingabe-Schema
{
"type": "object",
"properties": {
"exerciseId": {
"type": "string"
},
"toExerciseId": {
"type": "string"
},
"dayIndex": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"scope": {
"description": "Default 'program'.",
"type": "string",
"enum": [
"today",
"program"
]
}
},
"required": [
"exerciseId",
"toExerciseId"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_program
The athlete's current multi-day program (render-ready).
Eingabe-Schema
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡regenerate_program
Rebuild the whole program from the stored profile (~20s AI generation). Use after a profile change or a plateau.
Eingabe-Schema
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪nutrition_targets
The athlete's daily calorie + macro targets, computed from body stats, activity, and goal.
Eingabe-Schema
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪meal_plan(mealsPerDay, trainingDay, dietaryStyle, exclusions)
A day of meals hitting the athlete's targets, USDA truth-checked (flags feasible=false with a note when macros are approximate). Slow (~15s AI call).
Eingabe-Schema
{
"type": "object",
"properties": {
"mealsPerDay": {
"type": "integer",
"minimum": 3,
"maximum": 5
},
"trainingDay": {
"type": "boolean"
},
"dietaryStyle": {
"type": "string"
},
"exclusions": {
"type": "array",
"items": {
"type": "string"
}
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢changelog(limit)
The 'what changed & why' feed — the engine's coaching decisions (volume bumps, deloads, swaps) in Coach Fly's voice. Use to explain to the athlete why their plan evolved.
Eingabe-Schema
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}Community
Nachweis