WorkoutX Exercise API

Exercise API MCP: 1,900+ exercises with video, workout generator, supplements, dev tools.

使うべきか

品質と安全性

A
説明の品質
90%
スキーマの完全性
87%
命名の品質
97%
ポイズニングのリスク
100%
権限の一致
100%
プロトコルへの準拠
100%

検出事項(3)

  • LOWTool 'find_exercise_alternatives' description lacks action verbfind_exercise_alternatives 内
  • LOWTool 'find_similar_exercises' description lacks action verbfind_similar_exercises 内
  • LOWTool 'estimate_calories' description lacks action verbestimate_calories 内

ツール定義とプロトコルへの準拠に関する自動分析に基づいています。

コンテキストコスト

~4,303トークン数(ツール定義)
~1.7 KB一般的なレスポンスサイズ
注意への影響は大きい(128k コンテキストの 3.36%)

これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。

インストール

ワンクリックインストール

これを `claude_desktop_config.json` ファイルに追加してください:

{
  "mcpServers": {
    "workoutx": {
      "command": "npx",
      "args": [
        "workoutx-mcp"
      ]
    }
  }
}

実行可能なパッケージ

npmworkoutx-mcp2.1.0stdio

リモートエンドポイント

https://api.workoutxapp.com/mcpstreamable-http

できること

ツール一覧

ツール(20)

🟢 読み取り専用🟡 書き込み🔴 削除⚪ 不明
🟢list_exercise_filters(lang)

Every valid value (with counts) for body parts, target muscles, equipment, categories and muscles. Call this before search_exercises when unsure of a value.

入力スキーマ

{
  "type": "object",
  "properties": {
    "lang": {
      "type": "string",
      "enum": [
        "en",
        "tr",
        "de",
        "es",
        "fr",
        "zh-SG",
        "zh-HK"
      ],
      "description": "Language for names, instructions and tips (default en)"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢search_exercises(name, bodyPart, target, muscle, equipment, ...)

Search 1,900+ exercises. Filters are optional and case-insensitive; combining two or more filters needs the Starter plan or higher. Results include instructions, tips, muscles, equipment, difficulty, calories and signed MP4/thumbnail links.

入力スキーマ

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "Partial name match, e.g. \"bench press\""
    },
    "bodyPart": {
      "type": "string",
      "description": "e.g. Chest, Back, Upper Legs, Waist"
    },
    "target": {
      "type": "string",
      "description": "Primary target, e.g. Pectorals, Glutes, Lats"
    },
    "muscle": {
      "type": "string",
      "description": "Matches primary or secondary muscles"
    },
    "equipment": {
      "type": "string",
      "description": "e.g. Barbell, Dumbbell, Body Weight, Cable"
    },
    "category": {
      "type": "string",
      "enum": [
        "strength",
        "flexibility",
        "cardio",
        "yoga",
        "plyometric",
        "balance"
      ]
    },
    "difficulty": {
      "type": "string",
      "enum": [
        "beginner",
        "intermediate",
        "advanced"
      ]
    },
    "mechanic": {
      "type": "string",
      "enum": [
        "compound",
        "isolation"
      ]
    },
    "force": {
      "type": "string",
      "enum": [
        "push",
        "pull",
        "static",
        "carry"
      ]
    },
    "model": {
      "type": "string",
      "enum": [
        "male",
        "female"
      ],
      "description": "Animation model"
    },
    "fields": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Only these top-level fields, e.g. [\"name\",\"target\",\"equipment\"]; id is always included. Smaller answers, fewer tokens."
    },
    "includeMedia": {
      "type": "boolean",
      "description": "false: no video links and no use of the distinct-exercise media limit (default true)"
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 200,
      "description": "Max results (default 10, plan caps apply)"
    },
    "offset": {
      "type": "integer",
      "minimum": 0
    },
    "lang": {
      "type": "string",
      "enum": [
        "en",
        "tr",
        "de",
        "es",
        "fr",
        "zh-SG",
        "zh-HK"
      ],
      "description": "Language for names, instructions and tips (default en)"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_exercise(id, lang)

One exercise by v2 id: instructions, tips, muscles, equipment, sets/reps guidance, calories and signed media links.

入力スキーマ

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1,
      "description": "v2 exercise id, e.g. \"ex_GE5XEP\""
    },
    "lang": {
      "type": "string",
      "enum": [
        "en",
        "tr",
        "de",
        "es",
        "fr",
        "zh-SG",
        "zh-HK"
      ],
      "description": "Language for names, instructions and tips (default en)"
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_exercise_media(id)

Fresh signed MP4 and thumbnail links for one exercise (links expire; call again rather than storing them).

入力スキーマ

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1,
      "description": "v2 exercise id, e.g. \"ex_GE5XEP\""
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢find_exercise_alternatives(id, equipment, excludeEquipment, model, limit, ...)

Ranked swaps that train the same muscles, e.g. when equipment is missing. Optionally require or exclude equipment.

入力スキーマ

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1,
      "description": "v2 exercise id, e.g. \"ex_GE5XEP\""
    },
    "equipment": {
      "type": "string",
      "description": "Only alternatives using this equipment (comma-separated)"
    },
    "excludeEquipment": {
      "type": "string",
      "description": "Leave out this equipment (comma-separated)"
    },
    "model": {
      "type": "string",
      "enum": [
        "male",
        "female",
        "any"
      ]
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50,
      "description": "Max results (default 10, plan caps apply)"
    },
    "lang": {
      "type": "string",
      "enum": [
        "en",
        "tr",
        "de",
        "es",
        "fr",
        "zh-SG",
        "zh-HK"
      ],
      "description": "Language for names, instructions and tips (default en)"
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢find_similar_exercises(id, model, limit, lang)

Exercises most similar to the given one (same pattern, muscles and equipment), ranked by score.

入力スキーマ

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1,
      "description": "v2 exercise id, e.g. \"ex_GE5XEP\""
    },
    "model": {
      "type": "string",
      "enum": [
        "male",
        "female",
        "any"
      ]
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50,
      "description": "Max results (default 10, plan caps apply)"
    },
    "lang": {
      "type": "string",
      "enum": [
        "en",
        "tr",
        "de",
        "es",
        "fr",
        "zh-SG",
        "zh-HK"
      ],
      "description": "Language for names, instructions and tips (default en)"
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢estimate_calories(id, weightKg, minutes)

Calories burned for an exercise from its MET value, body weight and duration.

入力スキーマ

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1,
      "description": "v2 exercise id, e.g. \"ex_GE5XEP\""
    },
    "weightKg": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "Body weight in kg (default 70)"
    },
    "minutes": {
      "type": "number",
      "exclusiveMinimum": 0,
      "description": "Duration in minutes (default 10)"
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢map_v1_exercise(v1Id, lang)

Find the v2 exercise for an old v1 id (e.g. "0025"), with the match quality: exact, equivalent, alternative, closest or none.

入力スキーマ

{
  "type": "object",
  "properties": {
    "v1Id": {
      "type": "string",
      "minLength": 1,
      "description": "v1 exercise id, e.g. \"0025\""
    },
    "lang": {
      "type": "string",
      "enum": [
        "en",
        "tr",
        "de",
        "es",
        "fr",
        "zh-SG",
        "zh-HK"
      ],
      "description": "Language for names, instructions and tips (default en)"
    }
  },
  "required": [
    "v1Id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢generate_workout(goal, level, duration, split, equipment, ...)

One complete session built from movement patterns: warm-up, main work with sets/reps/rest, cool-down and swap suggestions. Needs the Growth plan or higher.

入力スキーマ

{
  "type": "object",
  "properties": {
    "goal": {
      "type": "string",
      "enum": [
        "muscle_gain",
        "strength",
        "fat_loss",
        "endurance",
        "mobility",
        "general_fitness"
      ]
    },
    "level": {
      "type": "string",
      "enum": [
        "beginner",
        "intermediate",
        "advanced"
      ]
    },
    "duration": {
      "type": "integer",
      "minimum": 15,
      "maximum": 120,
      "description": "Minutes (default 45)"
    },
    "split": {
      "type": "string",
      "enum": [
        "full_body",
        "upper",
        "lower",
        "push",
        "pull",
        "legs",
        "core",
        "conditioning",
        "mobility",
        "push_pull_legs",
        "upper_lower"
      ]
    },
    "equipment": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Available equipment, e.g. [\"dumbbell\",\"bench\"]; empty = gym"
    },
    "bodyFocus": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Muscles or body parts to emphasise"
    },
    "exclude": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Exercise ids to leave out"
    },
    "avoidJoints": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "knee",
          "shoulder",
          "lumbar_spine",
          "elbow",
          "wrist",
          "hip",
          "ankle"
        ]
      },
      "description": "Joints to spare; exercises that load them are left out"
    },
    "format": {
      "type": "string",
      "enum": [
        "auto",
        "straight",
        "superset",
        "circuit"
      ]
    },
    "model": {
      "type": "string",
      "enum": [
        "male",
        "female"
      ],
      "description": "Animation model"
    },
    "seed": {
      "type": "string",
      "description": "Same seed + same inputs = same workout"
    },
    "lang": {
      "type": "string",
      "enum": [
        "en",
        "tr",
        "de",
        "es",
        "fr",
        "zh-SG",
        "zh-HK"
      ],
      "description": "Language for names, instructions and tips (default en)"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢generate_program(goal, level, weeks, daysPerWeek, duration, ...)

A multi-week program with periodisation, deloads and weekly volume targets. Needs the Scale plan.

入力スキーマ

{
  "type": "object",
  "properties": {
    "goal": {
      "type": "string",
      "enum": [
        "muscle_gain",
        "strength",
        "fat_loss",
        "endurance",
        "mobility",
        "general_fitness"
      ]
    },
    "level": {
      "type": "string",
      "enum": [
        "beginner",
        "intermediate",
        "advanced"
      ]
    },
    "weeks": {
      "type": "integer",
      "minimum": 2,
      "maximum": 16,
      "description": "Default 4"
    },
    "daysPerWeek": {
      "type": "integer",
      "minimum": 2,
      "maximum": 6,
      "description": "Default 3"
    },
    "duration": {
      "type": "integer",
      "minimum": 20,
      "maximum": 120,
      "description": "Minutes per session (default 60)"
    },
    "equipment": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "avoidJoints": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "knee",
          "shoulder",
          "lumbar_spine",
          "elbow",
          "wrist",
          "hip",
          "ankle"
        ]
      },
      "description": "Joints to spare; exercises that load them are left out"
    },
    "format": {
      "type": "string",
      "enum": [
        "auto",
        "straight",
        "superset",
        "circuit"
      ]
    },
    "model": {
      "type": "string",
      "enum": [
        "male",
        "female"
      ],
      "description": "Animation model"
    },
    "seed": {
      "type": "string"
    },
    "lang": {
      "type": "string",
      "enum": [
        "en",
        "tr",
        "de",
        "es",
        "fr",
        "zh-SG",
        "zh-HK"
      ],
      "description": "Language for names, instructions and tips (default en)"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢search_supplements(search, category, goal, timing, evidence, ...)

Supplements with evidence ratings, dosage and timing. Filter by category, goal, timing, evidence or free text. Needs the Growth plan or higher.

入力スキーマ

{
  "type": "object",
  "properties": {
    "search": {
      "type": "string"
    },
    "category": {
      "type": "string",
      "description": "e.g. protein, creatine, pre-workout"
    },
    "goal": {
      "type": "string",
      "enum": [
        "muscle_gain",
        "strength",
        "fat_loss",
        "endurance",
        "recovery",
        "mobility",
        "general_health"
      ]
    },
    "timing": {
      "type": "string",
      "description": "e.g. pre-workout, post-workout, morning"
    },
    "evidence": {
      "type": "string",
      "description": "e.g. strong, moderate"
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 200,
      "description": "Max results (default 200, plan caps apply)"
    },
    "offset": {
      "type": "integer",
      "minimum": 0
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_supplement_stack(goal, level)

A recommended stack for a goal with dosages and timing. Needs the Scale plan.

入力スキーマ

{
  "type": "object",
  "properties": {
    "goal": {
      "type": "string",
      "enum": [
        "muscle_gain",
        "strength",
        "fat_loss",
        "endurance",
        "recovery",
        "mobility",
        "general_health"
      ]
    },
    "level": {
      "type": "string",
      "enum": [
        "essential",
        "standard",
        "comprehensive"
      ]
    }
  },
  "required": [
    "goal"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢export_exercise_seed(bodyPart, target, equipment, category, model, ...)

Exercise ids, names, muscles and equipment without media, as JSON or CSV, to seed your own database or fixtures. Does not use the distinct-exercise media limit. Page with offset; plan caps per call apply (Free 10, Starter 100, others 200).

入力スキーマ

{
  "type": "object",
  "properties": {
    "bodyPart": {
      "type": "string"
    },
    "target": {
      "type": "string"
    },
    "equipment": {
      "type": "string"
    },
    "category": {
      "type": "string",
      "enum": [
        "strength",
        "flexibility",
        "cardio",
        "yoga",
        "plyometric",
        "balance"
      ]
    },
    "model": {
      "type": "string",
      "enum": [
        "male",
        "female"
      ],
      "description": "Animation model"
    },
    "fields": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "name",
          "model",
          "counterpartId",
          "category",
          "bodyPart",
          "target",
          "equipment",
          "difficulty",
          "mechanic",
          "force",
          "met",
          "caloriesPerMinute",
          "isUnilateral",
          "recommendedSets",
          "recommendedReps",
          "description",
          "instructions",
          "tips"
        ]
      },
      "description": "Default: name, model, bodyPart, target, equipment, difficulty, category"
    },
    "format": {
      "type": "string",
      "enum": [
        "json",
        "csv"
      ],
      "description": "Default json"
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 200,
      "description": "Max results (default 200, plan caps apply)"
    },
    "offset": {
      "type": "integer",
      "minimum": 0
    },
    "lang": {
      "type": "string",
      "enum": [
        "en",
        "tr",
        "de",
        "es",
        "fr",
        "zh-SG",
        "zh-HK"
      ],
      "description": "Language for names, instructions and tips (default en)"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_usage_stats(days)

Your account's API usage: requests, success rate, response times (avg and p95), errors by status code, top endpoints, daily counts, live quota, rate limit and media-limit usage. Use it to answer "why am I getting 429s?" or "when will my quota run out?". Uses one request.

入力スキーマ

{
  "type": "object",
  "properties": {
    "days": {
      "type": "integer",
      "minimum": 1,
      "maximum": 60,
      "description": "Window in days (default 30, max 60)"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_trending_exercises(limit, lang)

The exercises and filters (body parts, muscles, equipment, categories) requested most across WorkoutX apps in the last 30 days. Anonymised: only values at least 3 different accounts asked for, filters as shares. Good for deciding what to feature in an app. Uses one request.

入力スキーマ

{
  "type": "object",
  "properties": {
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50,
      "description": "Max results (default 20, plan caps apply)"
    },
    "lang": {
      "type": "string",
      "enum": [
        "en",
        "tr",
        "de",
        "es",
        "fr",
        "zh-SG",
        "zh-HK"
      ],
      "description": "Language for names, instructions and tips (default en)"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_endpoint_reference(endpoint)

Parameters, response shape, errors and a curl example for any v2 endpoint, straight from the OpenAPI spec. Call with no endpoint to list them all. Uses one request.

入力スキーマ

{
  "type": "object",
  "properties": {
    "endpoint": {
      "type": "string",
      "maxLength": 300,
      "description": "e.g. \"/v2/exercises\", \"exercises/{id}/alternatives\" or a full URL"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢generate_types(language, models)

Ready-to-paste TypeScript, Swift (Codable), Kotlin (kotlinx.serialization) or Dart models for v2 responses, generated from the OpenAPI spec. Uses one request.

入力スキーマ

{
  "type": "object",
  "properties": {
    "language": {
      "type": "string",
      "enum": [
        "typescript",
        "swift",
        "kotlin",
        "dart"
      ]
    },
    "models": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 20,
      "description": "Default: ExerciseV2, ExercisePageV2, WorkoutV2, ProgramV2. Others: MediaLinksV2, MuscleV2, RankedPageV2, CaloriesV2, SupplementV2, AccountUsageV2, TrendingV2…"
    }
  },
  "required": [
    "language"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_code_example(platform, topic)

A working snippet for a platform and task: listing and paging exercises, playing the looping MP4 and refreshing its signed link, the workout generator, error and rate-limit handling, or a backend proxy that keeps your key off the device. Uses one request.

入力スキーマ

{
  "type": "object",
  "properties": {
    "platform": {
      "type": "string",
      "enum": [
        "react-native",
        "swift",
        "flutter",
        "nextjs",
        "node",
        "python"
      ]
    },
    "topic": {
      "type": "string",
      "enum": [
        "list-exercises",
        "play-video",
        "workout-generator",
        "handle-errors",
        "backend-proxy"
      ]
    }
  },
  "required": [
    "platform",
    "topic"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢diagnose_request(request, status, response)

Paste a failing WorkoutX request (curl, URL or "GET /v2/...") and optionally the status and response body: explains what is wrong (wrong host, key in the URL, missing header, unknown or repeated parameter, invalid value, v1 id, plan gate, rate limit, quota, expired media link) and how to fix it. Only reads the text; never sends the request. Uses one request.

入力スキーマ

{
  "type": "object",
  "properties": {
    "request": {
      "type": "string",
      "minLength": 1,
      "maxLength": 20000,
      "description": "curl command, URL or \"GET /v2/...\" line, with headers if you have them"
    },
    "status": {
      "type": "integer",
      "minimum": 100,
      "maximum": 599
    },
    "response": {
      "type": "string",
      "maxLength": 5000,
      "description": "Response body, if any"
    }
  },
  "required": [
    "request"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢check_api_key

Confirm the configured API key works and show the plan and remaining quota. Uses one request.

入力スキーマ

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}

コミュニティ

このサーバーを評価する

エビデンス

最近の観測

検証済みバージョンは記録されていませんツール 20 件