Upfit Plan Builder
Read-only bodyweight workout builder and exercise form cues from the Upfit iPhone app.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"upfit": {
"url": "https://www.upfit.mobile/mcp"
}
}
}Remote endpoints
https://www.upfit.mobile/mcpstreamable-httpWhat it can do
Tool inventory
Tools (4)
🟢build_home_workout(level, seed)
Use this when the user wants a bodyweight, no-equipment home workout session. Builds a 15-move session the way the Upfit iPhone app builds one: 2 warm-ups, 10 main moves balanced around the chosen level, then 3 harder finishers. Returns each move's name, phase, set length and rest. Read-only; collects no personal data and needs no body measurements. The same seed returns the same session.
Input Schema
{
"type": "object",
"properties": {
"level": {
"type": "string",
"enum": [
"beginner",
"intermediate",
"advanced"
],
"description": "Training experience: beginner, intermediate or advanced."
},
"seed": {
"anyOf": [
{
"type": "string",
"maxLength": 64
},
{
"type": "number"
}
],
"description": "Optional. Any word or number; the same seed rebuilds the same session. Leave out for a fresh random one."
}
},
"required": [
"level"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_exercise_form_cues(exercise)
Use this when the user asks what Upfit's coach says or checks for a specific bodyweight exercise (for example 'squat' or 'low plank hold'). Returns the app's real spoken coach lines for that exercise and, for exercises that have an Upfit page, what the camera checks and does not check. If the exercise is unknown it says so and lists close matches. It never invents form advice.
Input Schema
{
"type": "object",
"properties": {
"exercise": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"description": "Exercise name, such as 'squat', 'jumping jacks' or 'low plank hold'."
}
},
"required": [
"exercise"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢list_exercises(min_difficulty, max_difficulty)
Use this when the user wants to see which bodyweight exercises Upfit can run. Returns the enabled exercises with Upfit's own difficulty rating (1 easiest to 9 hardest) and, where Upfit documents it, how you stand to the phone (facing it, side-on to it, or on the floor). Optional difficulty filters.
Input Schema
{
"type": "object",
"properties": {
"min_difficulty": {
"type": "integer",
"minimum": 1,
"maximum": 9,
"description": "Only exercises at or above this difficulty."
},
"max_difficulty": {
"type": "integer",
"minimum": 1,
"maximum": 9,
"description": "Only exercises at or below this difficulty."
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢about_upfit
Use this when the user asks what Upfit is, how it works, or what it cannot check. Returns a short description and links to Upfit's own explanation pages.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}Community
Evidence