Manage clients, plans, sessions, habits, and billing on Trainzilla via one-click OAuth.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste into ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows)
A local MCP server that lets an MCP client
(Claude Desktop, Claude Code, Cursor, β¦) act as a Trainzilla coach. It wraps
the existing GraphQL API at api.tzilla.live β no direct DB access β so all
auth and business rules stay enforced by the backend.
Status: Local MVP β read tools, offline calculators, and confirm-gated write tools, plus a resource + a prompt. Not deployed anywhere. Runs entirely on your machine against your own coach login.
Read (live data):
whoami, list_clients, get_client_profilelist_client_habits, get_habit_compliance, recent_habit_activity, master_habitslist_workout_plans, list_diet_planslist_checkins, list_sessions, list_subscriptions, billing_summaryCalculators (offline, no network):
calc_tdee β BMR / TDEE / recommended caloriescalc_macros β macro split by strategy (Standard 40/30/30, Pro g/kg, Keto)calc_1rm β 1-rep-max (Epley) + %1RM weight suggestionsWrite (confirm-gated): every write tool returns a preview unless called
with confirm: true, so nothing changes by accident:
create_habit, create_master_habit, assign_master_habitcreate_checkin (with questions), schedule_sessioncreate_workout_plan, create_diet_planStill not exposed: deletes, payment execution/refunds, messaging, permission changes β by design.
Resource: tzilla://client/{clientId}/profile β a client's profile as JSON.
Prompt: weekly_client_review β pulls profile/habits/compliance/sessions and
writes a read-only weekly review.
Create .env (see .env.example) with a coach's tokens. Easiest source β log in
to the coach web app, then in the browser console:
The server auto-refreshes the access token via refreshAccessToken when it expires.
Local (stdio) β for Claude Desktop etc.:
npm run devnpm startnode scripts/smoke.mjsRemote (Streamable HTTP) β localhost only, multi-coach:
npm run http Β· Built: npm run start:httphttp://127.0.0.1:8787/mcp (set MCP_HTTP_PORT / MCP_HTTP_HOST).node scripts/smoke-http.mjsTZ_ACCESS_TOKEN (+ TZ_REFRESH_TOKEN) from env; auto-refreshes.TZ_API_URL wins when set.TZ_ENVIRONMENT=staging uses https://qa-be2.tzilla.live/graphql.https://api.tzilla.live/graphql.Authorization: Bearer tz_... or x-api-key). The server never stores tokens;
it forwards the caller's key to the GraphQL API, so the backend enforces scope
(multi-coach safe). API keys are minted by the backend feature below.tzilla-be, local β not deployed yet)createApiKey(name) β returns the plaintext tz_β¦ key once + infoapiKeys (list, no secret) Β· revokeApiKey(id)tz_ keys (header x-api-key or Bearer), resolves the
owning coach, and stamps lastUsedAt. Only a SHA-256 hash is stored.Add to claude_desktop_config.json (Settings β Developer β Edit Config):
Restart Claude Desktop, then try: "Use tzilla-coach: who am I, and list my clients."
tzilla-be, local β needs PR + deploy)Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/trainzilla-coach-mcp)<a href="https://allmcps.com/mcp/trainzilla-coach-mcp"><img src="https://allmcps.com/api/badge/trainzilla-coach-mcp?style=directory" alt="Trainzilla Coach MCP on AllMCPs" /></a>