strength-training-mcp
A stateless MCP server providing evidence-based strength training tools that encode classical powerlifting programs, fatigue modeling, and training science principles — with all state managed by the calling agent.
Browse training programs (
list_training_templates): Explore a built-in library of classical programs (5/3/1, Texas Method, Madcow, GZCLP, nSuns CAP3, Coan-Philippi, Smolov Jr), filterable by category (powerlifting, strength, peaking) and difficulty (beginner, intermediate, advanced).Retrieve weekly training plans (
get_template_plan): Get a specific week's prescribed sessions from any template, including exercises, sets, reps, intensity, and AMRAP flags.Look up exercise form guidance (
lookup_exercise_form): Get form cues, common mistakes, and equipment-filtered alternatives for any exercise.Learn training science principles (
explain_principle): Get cited explanations of concepts like RPE autoregulation, periodization, the Banister model, deload triggers, and volume landmarks.Calculate fatigue scores (
calculate_fatigue_score): Compute Banister fitness-fatigue metrics (CTL/ATL/TSB) from recent training history, optionally incorporating recovery data like sleep and soreness.Get session modification suggestions (
suggest_session_modification): Receive actionable adjustment recommendations (scale weight, change intensity, deload, etc.) based on planned vs. actual performance and current fatigue state.Apply plan adjustments (
apply_plan_adjustment): Modify a week's plan by applying adjustments such as DELOAD_WEEK, SCALE_WEEK, SHIFT_VOLUME, or ADD_REST_DAY, returning the adjusted plan JSON.Get today's session recommendation (
recommend_session_for_today): Receive a personalized session recommendation with rationale based on your template, current week, fatigue state, and last session.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@strength-training-mcp Recommend today's session with fatigue score -15."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Strength Training MCP Server
A stateless MCP server exposing 8 tools for evidence-based strength training. Encodes classical powerlifting programs (5/3/1, Texas Method, Madcow, GZCLP, nSuns CAP3, Coan-Philippi, Smolov Jr), the Banister fitness-fatigue model, RPE-based autoregulation, and an adjustment policy engine.
No user data is stored on the server. All state lives in the calling agent. The server is a pure function: same inputs → same outputs.
Supported Transports
Transport | Support | Entry Point | Use Case |
Stdio | ✅ |
| Claude Desktop, Claude Code, Cursor |
Streamable HTTP | ✅ |
| ModelScope, Aura, remote agents |
SSE | ❌ | — | Not implemented (use Streamable HTTP instead) |
Related MCP server: aiTrainer
Quick Start
Stdio (local clients)
uvx --from strength-training-mcp strength-training-mcpHTTP server (remote / cloud)
uvx --from strength-training-mcp strength-training-mcp-http --port 8080Test:
curl http://localhost:8080/health
# → {"status":"ok","version":"0.1.1"}For MCP calls over HTTP, use any MCP client (e.g., fastmcp.Client, Claude Desktop, or ModelScope) pointing at http://localhost:8080/mcp.
Deploy on ModelScope
This package is published to PyPI as strength-training-mcp. ModelScope can deploy it directly via uvx.
Step 1 — Choose transport
In ModelScope MCP deployment console, select Stdio or Streamable HTTP.
Recommendation: Use Stdio for the simplest one-click deployment.
Step 2 — Fill service config
Option A — Stdio (recommended)
{
"mcpServers": {
"strength-training": {
"command": "uvx",
"args": [
"--from",
"strength-training-mcp",
"strength-training-mcp"
],
"env": {}
}
}
}Option B — Streamable HTTP
Deploy the HTTP server first (see Self-Host below), then fill your public URL:
{
"mcpServers": {
"strength-training": {
"type": "http",
"url": "https://your-domain.com/mcp"
}
}
}Step 3 — No parameters required
This server requires no API keys, no environment variables, and no database. Leave parameter config empty.
Step 4 — Verify
After deployment, test:
curl https://your-deployment-url/health
# → {"status":"ok","version":"0.1.1"}Self-Host
See docs/selfhost.md for:
systemd service setup
nginx reverse proxy (hide application port)
Caddy + HTTPS
Docker deployment
Minimal production setup:
# Install
uv tool install strength-training-mcp
# Run behind nginx on port 80
strength-training-mcp-http --host 127.0.0.1 --port 3492Then configure nginx to proxy 80 → 127.0.0.1:3492.
Tools
Tool | Purpose |
| Browse the built-in program library |
| Get a specific week's prescribed sessions |
| Get form cues + alternatives for an exercise |
| Explain a training science principle with citation |
| Compute Banister CTL/ATL/TSB from training history |
| Get adjustment recommendations based on fatigue + actual |
| Apply aggregate adjustments to a week (deload, etc.) |
| Compose today's session with rationale |
See docs/api.md for full tool reference, input schemas, and error codes.
Agent Integration
Claude Desktop example
{
"mcpServers": {
"strength-training": {
"command": "uvx",
"args": [
"--from",
"strength-training-mcp",
"strength-training-mcp"
]
}
}
}Development
uv sync --all-extras
uv run pytest tests/unit # unit tests
uv run pytest tests/integration # E2E tests
uv run pytest --cov=src/strength_training_mcpKnowledge Sources
All templates and principles cite their original public sources. See docs/rts-principles.md for citations.
License
MIT
Available Tools
8 toolsapply_plan_adjustmentB
Given a template, target week, and adjustments (DELOAD_WEEK, SCALE_WEEK, SHIFT_VOLUME, ADD_REST_DAY), return the adjusted plan JSON. The agent decides whether to persist this — the user retains veto power.
Inputs: template_id (required), week_number (required), adjustments.
calculate_fatigue_scoreA
Calculate Banister fitness-fatigue metrics (CTL/ATL/TSB) from recent training sets. Returns MISSING_BASELINE if sets is empty (constraint C4). Provide at least 14 days for partial CTL/ATL, 42 days recommended for full.
Inputs: sets (required), recovery.
explain_principleA
Explain a training science principle with source citation. Topics include: rpe_autoregulation, dup_periodization, banister_model, deload_triggers, volume_landmarks, etc. Returns body + source_citation + related_tools.
Inputs: topic (required).
get_template_planA
Get a specific week's sessions from a template. Pure function: same input returns same output. Returns a list of sessions with prescribed exercises (sets, reps, intensity, AMRAP flag).
Inputs: template_id (required), week_number (required).
list_training_templatesA
List all built-in training templates. Returns catalog of classical strength/powerlifting programs with metadata (id, name, author, weeks, days_per_week, difficulty, category, source_url).
Inputs: category, difficulty.
lookup_exercise_formA
Get form cues, common mistakes, and equipment alternatives for an exercise. Returns cues list, common_mistakes list, and alternatives list.
Inputs: exercise_name (required), equipment.
recommend_session_for_todayC
Given a template, current week, fatigue state, and last session, return today's recommended session with rationale (e.g., deload triggered).
Inputs: template_id (required), current_week (required), fatigue (required), last_session.
suggest_session_modificationB
Given a planned session, what was actually performed, and current fatigue state, return a list of suggested adjustments (scale weight, change intensity, deload, etc.). Returns {adjustments: [...], summary: '...'}.
Inputs: planned (required), fatigue (required), actual.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 8 tools
Each tool has a clearly distinct purpose: listing templates, getting plans, adjusting plans, calculating fatigue, explaining principles, looking up exercises, recommending sessions, and suggesting modifications. There is no ambiguity between tools.
All tool names follow a consistent verb_noun pattern in snake_case (e.g., list_training_templates, calculate_fatigue_score). No mixing of styles or vague verbs.
With 8 tools, the server is well-scoped for strength training planning and education. Neither too few nor too many for the domain.
The tool set covers core operations: template listing, plan retrieval/adjustment, fatigue calculation, session recommendation/modification, and educational resources. Missing features like template creation or progress logging but these are minor gaps.
Maintenance
Related MCP Connectors
Remote MCP server for training, nutrition, wellness, and performance data with OAuth 2.0.
Adaptive running coach MCP server — training data, plans, and recovery for AI assistants.
MCP server exposing supplements database used by iNutriPlan.com
Agent-first strength-training platform across iOS, Web & MCP: read & write workouts, PRs & plans.
Related MCP Servers
- FlicenseAqualityDmaintenanceA stateless MCP server that normalizes strength training logs into a deterministic canonical schema, enabling consumers to build analytics downstream without storing data server-side.3-
- FlicenseAqualityDmaintenancePersonal workout coach MCP server that logs exercises in natural language, tracks progress with SQLite, and provides coaching signals like estimated 1RM and volume trends.6-
- FlicenseNot gradedqualityCmaintenanceA personal health and fitness MCP server that provides tools for managing profile data, goals, body measurements, nutrition, workouts, sleep, check-ins, life events, analytics, and coach memories via Supabase Postgres.1-
- AlicenseNot gradedqualityDmaintenanceMCP server for Hevy that fetches live workout data and computes analytics like e1RM, PRs, volume, and consistency, while enabling writes for routines, folders, and body measurements without modifying workout history.46 npmMIT