MCP Server

fitfly-engine

io.github.dropflyai/fitfly-engine
Healthcare Public & reachable MCP 2025-11-25

What this MCP does

Manages an adaptive fitness program with workout sessions, exercise substitutions, readiness adjustments, progression tracking, nutrition targets, and meal plans.

changelog
What the engine changed and why
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.
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}}}
get_program
Get the active program
The athlete's current multi-day program (render-ready).
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
get_todays_session
Get today's training session
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.
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'dayIndex': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Which program day (1-based). Defaults to the first day.'}}}
list_swap_options
List same-area swap options for an exercise
Valid alternatives for an exercise — same muscle group, filtered to the athlete's equipment/level/injuries. Use before swap_exercise.
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['exerciseId'], 'properties': {'exerciseId': {'type': 'string'}}}
log_workout
Log completed sets
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.
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['exercises'], 'properties': {'goal': {'enum': ['strength', 'hypertrophy', 'general_fitness', 'fat_loss'], 'type': 'string'}, 'dayIndex': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'exercises': {'type': 'array', 'items': {'type': 'object', 'required': ['exerciseId', 'sets'], 'properties': {'sets': {'type': 'array', 'items': {'type': 'object', 'required': ['weightKg', 'reps'], 'properties': {'rpe': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'reps': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'weightKg': {'type': 'number'}, 'completed': {'type': 'boolean'}}}}, 'exerciseId': {'type': 'string'}, 'prescribedRepTop': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}}}, 'description': 'Per-exercise completed sets (weights in kg).'}}}
meal_plan
Generate a meal plan
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).
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'exclusions': {'type': 'array', 'items': {'type': 'string'}}, 'mealsPerDay': {'type': 'integer', 'maximum': 5, 'minimum': 3}, 'trainingDay': {'type': 'boolean'}, 'dietaryStyle': {'type': 'string'}}}
nutrition_targets
Get nutrition targets
The athlete's daily calorie + macro targets, computed from body stats, activity, and goal.
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
readiness_checkin
Log a readiness check-in
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.
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['energy', 'sleep', 'soreness'], 'properties': {'sleep': {'type': 'integer', 'maximum': 5, 'minimum': 1, 'description': '1 terrible … 5 great'}, 'energy': {'type': 'integer', 'maximum': 5, 'minimum': 1, 'description': '1 drained … 5 great'}, 'soreness': {'type': 'integer', 'maximum': 5, 'minimum': 1, 'description': '1 none … 5 very sore'}}}
regenerate_program
Regenerate the program
Rebuild the whole program from the stored profile (~20s AI generation). Use after a profile change or a plateau.
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
swap_exercise
Swap an exercise
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).
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['exerciseId', 'toExerciseId'], 'properties': {'scope': {'enum': ['today', 'program'], 'type': 'string', 'description': "Default 'program'."}, 'dayIndex': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'exerciseId': {'type': 'string'}, 'toExerciseId': {'type': 'string'}}}
Added
changelog
Sept. 17, 2026, 12:41 p.m.
Added
meal_plan
Sept. 17, 2026, 12:41 p.m.
Added
nutrition_targets
Sept. 17, 2026, 12:41 p.m.
Added
regenerate_program
Sept. 17, 2026, 12:41 p.m.
Added
get_program
Sept. 17, 2026, 12:41 p.m.
Added
swap_exercise
Sept. 17, 2026, 12:41 p.m.
Added
list_swap_options
Sept. 17, 2026, 12:41 p.m.
Added
log_workout
Sept. 17, 2026, 12:41 p.m.
Added
readiness_checkin
Sept. 17, 2026, 12:41 p.m.
Added
get_todays_session
Sept. 17, 2026, 12:41 p.m.