Back to Browse

Examples MCP Server

Developer ToolsModerate6.2MCP RegistryLocal
Free

Server data from the Official MCP Registry

Search 1,492 filmed exercises by muscle, equipment, pattern and joints to avoid; get substitutes.

About

Search 1,492 filmed exercises by muscle, equipment, pattern and joints to avoid; get substitutes.

Security Report

6.2
Moderate6.2Moderate Risk

This is a well-structured MCP server for the ExerciseBank API with proper authentication, no malicious patterns, and permissions appropriate to its purpose. The codebase demonstrates good security practices: API keys are environment-variable based, no hardcoded secrets, input validation via Zod schemas, and proper error handling. Minor code quality observations (broad error catches, limited input validation on some fields) do not materially impact security. Package verification found 1 issue (1 critical, 0 high severity).

8 files analyzed · 5 issues found

Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.

Permissions Required

This plugin requests these system permissions. Most are normal for its category.

HTTP Network Access

Connects to external APIs or services over the internet.

env_vars

Check that this permission is expected for this type of plugin.

Unverified package source

We couldn't verify that the installable package matches the reviewed source code. Proceed with caution.

What You'll Need

Set these up before or after installing:

Your ExerciseBank API key. Free sandbox key, no card: https://exercisebank.net/signupRequired

Environment variable: EB_KEY

Optional. 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.Optional

Environment variable: EB_END_USER

How to Install

Add this to your MCP configuration file:

{
  "mcpServers": {
    "net-exercisebank-exercisebank-mcp": {
      "env": {
        "EB_KEY": "your-eb-key-here",
        "EB_END_USER": "your-eb-end-user-here"
      },
      "args": [
        "-y",
        "exercisebank-examples"
      ],
      "command": "npx"
    }
  }
}

Documentation

View on GitHub

From the project's GitHub README.

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.

FolderWhat 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.jsonThe 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

  1. Call from your server. The key never ships in an app binary or a web bundle.
  2. Search, detail, substitutes and the catalogue return data only. media there says which assets an exercise has ({ "mp4": true, "still": true }).
  3. Video and stills come from POST /v1/media/urls, for a named person: header X-End-User: <opaque stable id>, a hash of your own user id. Ask for what the screen shows.
  4. 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/substitutes answers 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

The example code is MIT licensed. The library itself is licensed through a plan.

Reviews

No reviews yet

Be the first to review this server!