AIm Workout Journal

com.aim-journal由 aim-journal.com 發布官方發布者v1.3.0更新於 Oct 24, 2026

Chat forgets your workouts. AIm remembers them for Claude and ChatGPT: sets, weights, 1RM, volume.

已驗證Streamable HTTP可網頁執行位置與生活效率與工作流

概覽

AI 產生的概覽

遠端訓練日誌 MCP 伺服器,讓助理記錄訓練、讀取歷史、統計、目標與教練脈絡。

可以做什麼
記錄、更新、刪除與匯入訓練課及單組資料,包括貼上其他應用程式的匯出檔或筆記本照片。讀取訓練歷史、單次詳情、訓練量、進展與估算 1RM 等統計,以及課表、目標和身體指標。搜尋精選動作庫,列出並新增或更新動作。取得教練脈絡(目標、經驗、器材、傷病、近期訓練重量),並透過課表審閱、目標、教練事件和身體指標保持更新。
適用情境
適合希望 Claude 或 ChatGPT 用自然語言記錄訓練,並依據自己已記錄的歷史、傷病和目標來規劃訓練,而不是給出一般性建議的情境。
執行需求
透過 streamable HTTP 連線 aim-journal.com 的遠端端點。需要 OAuth 2.1 登入並在瀏覽器中授權,無需手動貼上 API 金鑰或環境變數。同一主機上的行動網頁應用程式可檢視日誌。
安裝前請注意
助理可以寫入、修改和刪除已記錄的訓練課與單組資料,並更新目標、教練檔案和身體指標。傷病、身體指標和訓練歷史等健康相關資料會被儲存並提供給所連線的助理。README 說明舊的 URL 權杖存取方式仍可使用,應將這類連結視為機密。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 AIm Workout Journal,將其新增到工作區。
  2. 連接 所需的 憑證。它們會被私密儲存,絕不會在公開頁面上展示。
  3. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/com.aim-journal%2Faim/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。 客戶端會在首次連接時完成 OAuth 登入。

{
  "mcpServers": {
    "aim-workout-journal": {
      "type": "http",
      "url": "https://aim-journal.com/mcp"
    }
  }
}

README

AIm Workout Journal

A workout tracker your AI assistant writes to. AIm is an MCP server plus a mobile web app (PWA): you describe a session in Claude or ChatGPT in your own words, the assistant logs it through MCP, and the app shows the program, the history, records, estimated 1RM and per muscle load. The server hands the assistant your goal, injuries and logged weights as data, so it plans from your training instead of generic advice.

Live at aim-journal.com. Free, and it runs inside the AI subscription you already pay for rather than being a second one. Guides: connect a workout tracker over MCP, AI personal trainer, 1RM calculator.

How it works

There are two ways in, on the same host, and both resolve to the same user_id:

https://<app>/mcp                OAuth 2.1 — add as a connector, approve in the browserhttps://<app>/{token}            mobile web app / installable PWAhttps://<app>/{token}/mcp        the original connector address, still supportedhttps://<app>/{token}/api/*      read only JSON the UI consumes

OAuth is what a connector uses now. The server is an OAuth 2.1 resource server: an unauthenticated call gets a 401 carrying RFC 9728 protected-resource metadata, the client discovers the authorization server from it, registers itself dynamically, and the user approves on a consent screen this app serves. Supabase Auth is the authorization server, so no authorization codes or access tokens are stored here; the access token's sub is mapped to an account through users.supabase_user_id. Nothing secret is pasted by hand.

The URL token predates it and still works, which is why every link already in someone's inbox kept working when OAuth landed. A token resolver middleware maps the leading path segment to a user and scopes every query by user_id; the OAuth path sets the same context variable from a verified token instead. Two doors, one scoping rule.

What the MCP server exposes

20 tools over stateless streamable HTTP (FastMCP):

  • Logging: log_session, update_session, update_set, delete_session, import_document (paste an export from another tracker or a photo of a notebook page).
  • Reading: get_sessions, get_session, get_stats (volume, progression, estimated 1RM via Epley), get_program, get_goals, get_body_metrics.
  • Catalogue: search_exercise_pool (a curated global pool with illustrations), list_exercises, upsert_exercise.
  • Coaching: get_coaching_context is the important one. It returns data only: this user's goal, experience, equipment, injuries (with the movement patterns that load them), recent working weights, goal-matched planning ranges and the intake state, for the task at hand (next workout, new program, weekly review), so the assistant plans from data rather than from nothing. How the assistant uses it lives in the server's MCP instructions. review_program_draft, update_coach_profile, upsert_goal, log_coach_event, log_body_metric keep that context current.

Repo layout

api/index.py      Vercel entrypoint (must stay at repo root, see below). Imports backend/src.requirements.txt  Vercel's Python build reads this (must also stay at repo root).backend/          Python package, tests, scripts, DB migrations.web/              Vite + React SPA (own package.json, own dev server) and the static guide pages.

api/index.py and requirements.txt cannot move: Vercel's zero config Python builder only auto detects functions under a root level api/, and only installs a root level requirements.txt alongside them. Everything else in backend/ (pyproject.toml, uv.lock, tests, scripts, supabase/) is hidden from the Vercel build by .vercelignore, so Vercel treats the repo as a static SPA plus one Python function.

One thing to know before you go reading: some code comments cite internal planning documents by path, such as docs/COACHING_PLAN.md, docs/TEST_CASES.md or docs/DEPLOYMENT.md. Those are product and research notes that are not published here, so the paths will not resolve. Nothing in the code depends on them; they are provenance for a decision, not a dependency. Everything you need to build, test and run what is in this repository is in this README.

Stack

  • Backend (backend/): Python 3.12, FastMCP (stateless HTTP), psycopg3, Supabase Postgres (transaction pooler). MCP and the read API live in backend/src/workout_storage/, served by api/index.py.
  • Frontend (web/): Vite, React, Tailwind v4, shadcn/ui, recharts, React Query, vite-plugin-pwa. Data layer in web/src/app/lib/ (token to api to adapter to hooks). The guide pages under web/guides/ are generated to static HTML at build time and ship no bundle.
  • Hosting: one Vercel project. vercel.json routes mcp, api and cron to the function and everything else to the SPA.

Frontend dev

bash
cd webnpm installecho 'VITE_API_ORIGIN=https://workout-storage.vercel.app' > .env.local  # dev against prod APInpm run dev              # http://localhost:5173/{token}npm run test             # vitest: pure function + component testsnpx playwright install chromium   # one time, before the first test:e2e runnpm run test:e2e         # Playwright, against /demo (no backend needed)

Backend dev

bash
cd backenduv sync --extra dev           # install depscp ../.env.example ../.env     # fill DATABASE_URL etc. (kept at repo root, shared by all tooling)uv run pytest                  # unit + integration + e2euv run ruff check . && uv run mypy .

Create a user (prints the token to open in the browser and to paste into an assistant):

bash
cd backenduv run python scripts/create_user.py --name "Alex"

Running your own

Everything needed is here, but this is the source of a hosted service rather than a turnkey self host kit: you supply a Supabase project (migrations in backend/supabase/migrations/), a Vercel project, and the environment variables listed in .env.example. Analytics, email and backup integrations are optional and stay dormant without their keys.

Attribution

Exercise illustrations are third party works under CC BY-SA, each credited in web/ATTRIBUTIONS.md. They keep their own license regardless of the license on this repository.

License

MIT, see LICENSE. The exercise illustrations are the one exception, see Attribution above.

來源:README.md,提交 ce93aa1

工具

0
該伺服器需要登入,因此 SourceWeft 無法在沒有帳號的情況下讀取其工具,也未收錄。已連接帳號所能看到的內容可能因帳號及其權限而異。

版本歷史

3
  1. v1.3.0最新Oct 18, 2026
  2. v1.2.1Sep 16, 2026
  3. v1.2.0Sep 16, 2026

評分

已滿足適用檢查項的 85%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分