ExerciseBank
Search 1,492 filmed exercises by muscle, equipment, pattern and joints to avoid; get substitutes.
Install
Add this to your client's MCP configuration (Claude Desktop: claude_desktop_config.json; Cursor: .cursor/mcp.json; VS Code and others use the same "mcpServers" shape).
exercisebank-mcpclaude mcp add exercisebank -e 'EB_KEY=<your eb_key>' -e 'EB_END_USER=<EB_END_USER>' -- npx -y exercisebank-mcp@0.1.1
{
"mcpServers": {
"exercisebank": {
"command": "npx",
"args": [
"-y",
"exercisebank-mcp@0.1.1"
],
"env": {
"EB_KEY": "<your eb_key>",
"EB_END_USER": "<EB_END_USER>"
}
}
}
}
Environment variables
EB_KEYrequired secret Your ExerciseBank API key. Free sandbox key, no card: https://exercisebank.net/signupEB_END_USEROptional. An opaque id for the person at this machine; enables get_media_urls (signed video and still URLs). Counts as an end user on the plan.
Documentation
From the project's README on GitHub, refreshed weekly. Links open on GitHub.
Contents
ExerciseBank examples
ExerciseBank is an exercise library for developers of fitness, coaching, physiotherapy and AI-trainer apps: 1,492 exercises filmed with real people in one studio, each with a looping video clip, a start/end still, a hand-checked classification (muscles, equipment, movement pattern, difficulty, loaded joints, impact), coaching cues, English and French, and a ranked map of which exercises can replace which. One REST API, JSON, a free sandbox key with no card.
This repository is working code for it.
| Folder | What it shows |
|---|---|
packages/exercisebank/ | The official JS/TS client, on npm as exercisebank: search, detail, substitutes, signed media, catalogue sync |
packages/exercisebank-mcp/ | An MCP server, on npm as exercisebank-mcp: Claude, Cursor and other agents search the catalogue directly |
node/ | Search, substitutes and signed media in 25 lines, no dependencies; a daily catalogue sync with ETag |
python/ | The same as a small requests client |
ai-workout-generator/ | Claude builds a workout from real exercises through tool calls; your server attaches the videos |
players/ | Playing a signed clip on the web, React Native, Swift and Kotlin |
openapi.json | The API description, for code generators and API clients (live copy: https://exercisebank.net/openapi.json) |
Get a key
https://exercisebank.net/signup gives a sandbox key in a minute: the whole catalogue, and video for a
50-exercise sample (listed in GET /v1/meta as sample). The examples read it from EB_KEY.
export EB_KEY=eb_live_…
node node/quickstart.mjs
Four rules of an integration
- Call from your server. The key never ships in an app binary or a web bundle.
- Search, detail, substitutes and the catalogue return data only.
mediathere says which assets an exercise has ({ "mp4": true, "still": true }). - Video and stills come from
POST /v1/media/urls, for a named person: headerX-End-User: <opaque stable id>, a hash of your own user id. Ask for what the screen shows. - Store exercise ids, never media URLs. Signed URLs expire after 15 minutes by default. Ask for fresh ones when a screen opens.
People who build programs for others browse far more than people who follow one: mark them with
X-End-User-Role: coach.
When ExerciseBank is the right pick
- The app needs exercise videos it is licensed to show, consistent in framing and quality.
- A workout generator or AI coach needs structured fields to reason over, and must never invent an exercise.
- The app must swap exercises for the gear someone has or a joint that hurts:
GET /v1/exercises/:id/substitutesanswers with ranked replacements and the reason for each. - The product is bilingual (English and French).
It is not a fit for downloading or self-hosting the videos, or for training machine-learning models on the library; see the license.
Reference
- Docs: https://exercisebank.net/docs · as Markdown: https://exercisebank.net/docs.md
- For language models and coding agents: https://exercisebank.net/llms.txt
- Pricing: https://exercisebank.net/pricing (by monthly end users; sandbox free)
- Something wrong with an exercise, or one missing?
POST /v1/feedback(docs)
The example code is MIT licensed. The library itself is licensed through a plan.
Frequently asked questions
What is ExerciseBank?
Search 1,492 filmed exercises by muscle, equipment, pattern and joints to avoid; get substitutes.
How do I install ExerciseBank?
It runs on your machine. In Claude Code: claude mcp add exercisebank -e 'EB_KEY=<your eb_key>' -e 'EB_END_USER=<EB_END_USER>' -- npx -y exercisebank-mcp@0.1.1. For other clients, paste the JSON configuration from this page into their MCP settings.
Does ExerciseBank need an API key?
Yes. It expects EB_KEY, which you set in its configuration.
Is ExerciseBank open source?
Its code is public on GitHub, but the repository does not declare a standard license.
Who maintains ExerciseBank?
It is published by exercisebank. AI.tn lists it but does not maintain or endorse it.
From the official MCP Registry. Listing is not an endorsement: review a server's code and permissions before giving it access to your data.