fitlog-mcp
Enables Alexa+ to act as a voice interface for FitLog, allowing users to log workouts, query workout history and personal records, get daily workout plans, and track protein intake through the MCP server.
fitlog-mcp
An Alexa+ add-on backed by a self-hosted MCP server that gives Alexa a memory for your training: log sets by voice, ask for personal records, get today's plan and protein targets.
Built for the Alexa+ track of the Amazon "Build, Ship, Shape" Developer
Hackathon 2026: a working self-hosted MCP server implementing MCP spec
2025-11-25 over Streamable HTTP with the Alexa+ authentication
checklist (OAuth 2.1 + PKCE account linking, 401s with no
WWW-Authenticate header, RFC 9728 Protected Resource Metadata) — zero
dependencies, MIT licensed.
Run it (3 steps, no pip install)
Requires Python 3.9+.
git clone https://github.com/hahahahahahahahah6/fitlog-mcp.git
cd fitlog-mcp
python3 server.pyThe server listens on http://127.0.0.1:8765 (/mcp endpoint).
Environment variables:
Variable | Default | Purpose |
|
| listen port |
|
| listen address |
|
| sqlite database path |
| (empty) | static bearer token for local dev / Inspector |
| (empty) | public HTTPS URL (e.g. cloudflared tunnel); used for OAuth metadata |
| (empty) | owner password for the |
| (empty) | extra trusted |
Related MCP server: super-hevy-mcp
Connect an MCP client
The endpoint is http://127.0.0.1:8765/mcp (Streamable HTTP). Every /mcp
request needs a bearer token — either from the OAuth flow or the static
FITLOG_API_TOKEN you set for local dev. Example client config
(Claude Code / MCP Inspector style):
{
"mcpServers": {
"fitlog": {
"type": "http",
"url": "http://127.0.0.1:8765/mcp",
"headers": { "Authorization": "Bearer <FITLOG_API_TOKEN>" }
}
}
}Or verify with the MCP Inspector CLI:
FITLOG_API_TOKEN=devtoken python3 server.py &
npx -y @modelcontextprotocol/inspector --cli \
--transport http --server-url http://127.0.0.1:8765/mcp \
--header "Authorization: Bearer devtoken" \
--method tools/listConnect Alexa+ (official path)
Expose the server over HTTPS, e.g. with a cloudflared quick tunnel:
cloudflared tunnel --url http://127.0.0.1:8765, and setFITLOG_PUBLIC_URL=https://<your-tunnel>.trycloudflare.com. Also setFITLOG_OWNER_PASSWORDto a strong password — public exposure without it is refused at startup, and the/authorizepage will ask for the password before showing the Approve button.Install the Alexa AI CLI (
npm install -g @alexa/alexa-aior per the MCP toolkit quickstart).Put your tunnel URL into
addon-package/addon.json(integrations[0].config.endpoints.default.uri, plus/mcp).cd addon-package && alexa-ai deploy— deploys to the development stage.Enable the add-on in the Alexa+ web simulator, link the account (OAuth 2.1 + PKCE flow against your server), then talk to it: "Ask FitLog to log my bench press: 5 reps at 185 pounds."
The demo video script (demo/demo_script.md) follows exactly this path.
No Alexa developer account? Use the bundled web simulator instead
(simulator/): an Echo-style page that runs the same OAuth
account-linking flow and calls the same 6 tools over Streamable HTTP, with
a live JSON-RPC inspector. ./simulator/start.sh, then open
http://127.0.0.1:8799/.
Tools
Tool | What it does |
| Record a session; announces new PRs. |
| Past sessions, newest first |
| Heaviest set + best estimated 1RM per lift |
| Today's plan from the built-in 5-day split |
| Log protein toward the 160–190 g target |
| Targets vs. what's logged today |
Resources: program://current (the training split), pr://all (PR table).
Spec compliance notes
Streamable HTTP:
POST /mcpfor JSON-RPC, optionalGET /mcpSSE stream,DELETE /mcpterminates the session (Mcp-Session-Id).Alexa+ auth checklist: OAuth 2.1 authorization-code + PKCE (S256);
/.well-known/oauth-protected-resource(RFC 9728) and/.well-known/oauth-authorization-servermetadata; authorize and token requests must carry the canonical MCPresourceparameter. Unauthenticated requests to/mcpget HTTP 401 with noWWW-Authenticateheader, as required.Originheader is MUST-validated: a present-but-untrusted origin gets HTTP 403 (DNS-rebinding mitigation). Loopback origins are trusted by default.MCP-Protocol-Versionis checked on every post-initialize request: unsupported versions get HTTP 400.JSON-RPC batches are rejected (removed in spec 2025-11-25) with
-32600over HTTP 400.Tool annotations (
readOnlyHint/destructiveHint/idempotentHint/openWorldHint) are set per the 2025-11-25 spec.
Tests
python3 -m unittest discover -s tests # 51 tests, incl. the full OAuth PKCE round-tripLicense
MIT — see LICENSE.
This server cannot be deployed
Maintenance
Related MCP Connectors
Talk to your own gym log. Reps is a free workout tracker for iPhone and Android; connect it to Claude, ChatGPT or any MCP client and ask about your workout history, personal records, exercise progression, weekly summaries, routines and training plan. The assistant can also save a new routine, edit one, save a whole plan, add custom exercises and exercise notes, always after you confirm in the chat. It cannot log a workout or delete your history. Requires a free Reps account created in the app; you sign in with a one-time email code.
Adaptive running coach MCP server — training data, plans, and recovery for AI assistants.
- MyoAmigoOAuthcom.myoamigo
Agent-first strength-training platform across iOS, Web & MCP: read & write workouts, PRs & plans.
Your strength-training data for any AI assistant: workouts, progress, muscle volume, routines.
Related MCP Servers
- 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-
- AlicenseNot gradedqualityDmaintenanceMCP server for the Hevy workout tracker that enables users to query training history, log workouts, and manage routines via natural language.MIT
- AlicenseNot gradedqualityBmaintenanceSelf-hosted fitness tracking MCP server that gives AI assistants access to your nutrition, training, weight, sleep, and accomplishment data via 77 tools and 5 resources. Enables natural-language logging and querying of personal health metrics through Claude or ChatGPT.1BSD 2-Clause "Simplified"
- FlicenseNot gradedqualityBmaintenanceEnables logging workouts, sets, routines, food, water, and macros through natural-language chat in any MCP client, with OAuth-based secure access and timezone-aware daily tracking.-