ExerciseBank — Claude Code MCP server: filter exercises by muscle and gear
An MCP server for the ExerciseBank catalogue. Your agent picks exercises by muscle, equipment and joints to spare, then finds ranked replacements. Useful when building a fitness app.
claude mcp add --env EB_KEY=<EB_KEY> --env EB_END_USER=<EB_END_USER> --transport stdio exercisebank-mcp -- npx -y exercisebank-mcpWhat ExerciseBank does
The server puts the ExerciseBank API within reach of your coding agent. Its tools cover the filter vocabulary (get_vocabulary), a filtered search (search_exercises) with options for muscle, available gear, movement pattern, difficulty range, joints to skip, impact and one-sided moves, a full record lookup (get_exercise) and ranked substitutes with a score and a reason (get_substitutes). A fifth tool, get_media_urls, returns signed video and image links.
You need a sandbox key first. It is free, needs no card, comes from https://exercisebank.net/signup and goes into EB_KEY. Node 18 or later is required; the server sits on your machine and talks over stdio. Signed media only works once EB_END_USER is defined, since each video is signed for one named person, and the links expire after 15 minutes.
With a sandbox key the media covers a sample of 50 exercises; the whole catalogue requires a paid plan. This server is meant for your own desk. A shipped product should call the API from its own backend, pass its own user ids and use the npm package exercisebank. A reference for language models lives at https://exercisebank.net/llms.txt.
What it helps with
- pick exercises that match the gear someone owns
- keep movements off a plan when certain joints must be spared
- swap one exercise for another with a reasoned ranking
- look up valid filter values before writing a query
- prototype a workout generator without writing code first
Example prompts for the agent
- List the ExerciseBank vocabulary and the 50 sandbox exercises
- Find dumbbell chest exercises, no knee loading, difficulty not above medium
- What can replace a barbell squat for someone without a barbell?
How to install ExerciseBank
Platform CLI
claude mcp add --env EB_KEY=<EB_KEY> --env EB_END_USER=<EB_END_USER> --transport stdio exercisebank-mcp -- npx -y exercisebank-mcpReplace <…> with your own values
Platform CLI
codex mcp add exercisebank-mcp --env EB_KEY=<EB_KEY> --env EB_END_USER=<EB_END_USER> -- npx -y exercisebank-mcpReplace <…> with your own values
Config file
{
"mcpServers": {
"exercisebank-mcp": {
"command": "npx",
"args": [
"-y",
"exercisebank-mcp"
],
"env": {
"EB_KEY": "<EB_KEY>",
"EB_END_USER": "<EB_END_USER>"
}
}
}
}Replace <…> with your own values
Config file
{
"servers": {
"exercisebank-mcp": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"exercisebank-mcp"
],
"env": {
"EB_KEY": "<EB_KEY>",
"EB_END_USER": "<EB_END_USER>"
}
}
}
}Replace <…> with your own values
Platform CLI
gemini mcp add -e EB_KEY=<EB_KEY> -e EB_END_USER=<EB_END_USER> exercisebank-mcp npx -y exercisebank-mcpReplace <…> with your own values
Step by step, with commands for each platform: How to add an MCP server to Claude Code, Codex, Cursor, VS Code, Gemini CLI and more
Questions about ExerciseBank
How do I install ExerciseBank in Claude Code?
Grab a sandbox key and run claude mcp add exercisebank-mcp -e EB_KEY=<EB_KEY> -- npx -y exercisebank-mcp. For signed media links, use the second form: claude mcp add --env EB_KEY=<EB_KEY> --env EB_END_USER=<EB_END_USER> --transport stdio exercisebank-mcp -- npx -y exercisebank-mcp.
What does ExerciseBank do?
It lets the agent search an exercise catalogue by muscle, equipment, movement, difficulty and joints to avoid, read full records and get ranked substitutes.
Why are video links missing?
get_media_urls appears only when EB_END_USER is set, because media is signed for a named person. A sandbox key signs clips for the 50-exercise sample.