Skip to content

MCP Connector

Use your training data inside Hermes

Give Hermes your training history, stats, and exercise catalog as tools.

Generate or rewrite multi-day programs in a turn — Hermes proposes, you approve, GymLogic writes.

Long-lived PAT auth, configured once in mcp_servers.

Setup guide ↓

Prerequisites

Setup

Hermes connects to remote MCP servers over Streamable HTTP. GymLogic accepts POST; it does not serve the GET-SSE handshake, so leave Hermes on its default transport (do not set transport: sse — that path gets a 405, tracked in #266).

Step 1 — Create a Personal Access Token

  1. Sign in at gymlogic.me
  2. Go to Account → Security & access → Manage API tokens (or gymlogic.me/account/api-tokens)
  3. Click Create token
  4. Name it (Hermes VPS) and pick a lifetime
  5. Copy it now — glp_…, shown once, treat it like a password

Step 2 — Add the server

Put the token in ~/.hermes/.env so it stays out of your config file and your shell history:

echo 'MCP_GYMLOGIC_API_KEY=glp_…' >> ~/.hermes/.env

Then reference it from ~/.hermes/config.yaml:

mcp_servers:
  gymlogic:
    url: https://mcp.gymlogic.me/functions/v1/mcp
    headers:
      Authorization: "Bearer ${MCP_GYMLOGIC_API_KEY}"

Hermes resolves a ${VAR} in a server entry (headers, url, env, args) at connect time, reading ~/.hermes/.env and the process environment. An unset variable keeps its literal placeholder — so a typo fails loudly instead of sending Bearer ${MCP_GYMLOGIC_API_KEY} as the token.

The key is mcp_servers (Hermes’ schema) — not mcpServers (Cursor / Claude Desktop) and not OpenClaw’s mcp.servers.

Step 3 — Reload and verify

hermes mcp list          # gymlogic should be listed

Then ask Hermes something training-related (“what did I train this week?”). Tools are read at agent boot, so restart the running agent/gateway after the config change if it was already up.

The connector exposes the tools; the Skill teaches Hermes how to use them well — the propose-confirm-act handshake required on every write, the per-side weight convention for unilateral equipment (#263), and bilingual French/English routing.

Download skills/gymlogic-mcp/SKILL.md and drop it into your Hermes skills tree:

mkdir -p ~/.hermes/skills/gymlogic-mcp
curl -L https://raw.githubusercontent.com/PierreTsia/workout-app/main/skills/gymlogic-mcp/SKILL.md \
  -o ~/.hermes/skills/gymlogic-mcp/SKILL.md

Hermes picks it up on the next skill scan. It triggers on training prompts in French or English — no need to invoke it by name.

Available tools

ToolWhat it does
search_exercisesSearch the exercise catalog by name (FR/EN), muscle group, equipment, or difficulty
resolve_exercisesResolve a batch of exercise names (up to 30) to catalog UUIDs in one call — bundles weight_convention, measurement_type, default_duration_seconds
get_exercise_detailsFull exercise info: instructions, muscles, equipment, media
get_workout_historyYour past sessions with sets, weights, and PRs
get_training_statsVolume by muscle group, personal records, session frequency
get_upcoming_workoutsYour programmed training days and exercises
list_programsList all your training programs (active, drafts, optionally archived) with id, name, day count, creation date, active-cycle flag
get_program_detailsFull structure of one program by UUID — works on any program (active/draft/archived)
create_programCreate / replace your active program from structured days + exercise UUIDs. Default dry_run: true; dry_run: false writes and deactivates your other active programs
create_workout_dayLog a single ad-hoc session without touching the active program. dry_run defaults to true
update_programEdit an existing program in place by program_id — preserves logged history. dry_run defaults to true; removing days also needs confirm: true

Eleven tools — eight reads, three writes.

Example prompts

Rotating or revoking a token

Troubleshooting

ProblemFix
405 / SSE error on connectYou (or a default) set transport: sse. Remove it so Hermes uses Streamable HTTP POST — GymLogic only serves POST (#266)
401 Authentication requiredToken revoked, expired, or mistyped. Mint a fresh one and re-add the header
gymlogic missing from hermes mcp listCheck the YAML path: mcp_servers.gymlogic with url + headers, then reload
Tools not callable in a running sessionRestart the agent/gateway — MCP tools are read at boot

Headless / scripted access (outside Hermes)

The same PAT works as a Bearer token for direct HTTP calls:

curl -X POST https://mcp.gymlogic.me/functions/v1/mcp \
  -H "Authorization: Bearer <YOUR_PAT>" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

Other AI clients