fitfly-engine
Deterministic fitness coaching engine: adaptive programs, progression math, readiness autoregulation
¿Debería usar esto?
Calidad y seguridad
Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.
Costo de contexto
Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.
Instalar
Instalación con un clic
Agrega esto a tu archivo `claude_desktop_config.json`:
{
"mcpServers": {
"fitfly-engine": {
"url": "https://workout-engine-production-5dd7.up.railway.app/mcp"
}
}
}Puntos de conexión remotos
https://workout-engine-production-5dd7.up.railway.app/mcpstreamable-httpQué puede hacer
Inventario de herramientas
Herramientas (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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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).
Esquema de entrada
{
"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).
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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).
Esquema de entrada
{
"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.
Esquema de entrada
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}Comunidad
Evidencia