aim
aim: журнал тренировок с памятью между сессиями Claude
Что умеет
- Записывать тренировочные сессии — упражнения, подходы, кардио, метрики
- Редактировать параметры сессии и отдельных подходов
- Вести замеры тела и статистику по времени
- Строить и пересматривать тренировочную программу под цель
- Фиксировать цели и события коучинга
Какие данные видит
Ассистент видит только личный тренировочный журнал пользователя — сессии, замеры, цели и программу, привязанные к его аккаунту.
Нужен ли аккаунт
Не нужен: сервер работает без входа
aim — MCP-сервер для тренировочного дневника с постоянной памятью. Ассистент записывает завершённые тренировки на обычном языке, строит программу под цель пользователя и отслеживает прогресс между разговорами, вместо того чтобы терять данные в чате.
Как подключить
Как подключить aim к Claude
Адрес сервера, который нужно вставить в настройках Claude:
https://aim--aim-journal.run.tools
- Откройте Claude (сайт claude.ai или приложение для компьютера).
- Перейдите в Настройки → Коннекторы (в английском интерфейсе: Settings → Connectors).
- Нажмите Добавить пользовательский коннектор (Add custom connector).
- Вставьте адрес сервера, скопированный ниже, в поле URL удалённого MCP-сервера и нажмите Добавить.
- В чате нажмите + → Коннекторы и включите новый коннектор.
Пользовательские коннекторы доступны на тарифах Free, Pro, Max, Team и Enterprise. На Free можно добавить только один. В Team и Enterprise коннектор сначала добавляет владелец организации в Настройки организации → Коннекторы.
Авторизация
После нажатия Добавить откроется окно входа в сервис. Войдите под своим аккаунтом и подтвердите доступ. Пароль Claude не видит.
Как подключить aim к ChatGPT
Адрес сервера, который нужно вставить в настройках ChatGPT:
https://aim--aim-journal.run.tools
- Откройте ChatGPT в браузере (chatgpt.com). Нужен тариф Plus, Pro, Business, Enterprise или Edu.
- Один раз включите режим разработчика: Настройки → Приложения → Дополнительные настройки → Режим разработчика (Settings → Apps → Advanced settings → Developer mode).
- Откройте Настройки → Коннекторы и нажмите Создать (Create).
- Заполните форму: Название (любое), Описание (одна фраза, что делает сервис), URL MCP-сервера (скопируйте ниже).
- В поле Аутентификация выберите OAuth, если сервис требует вход, иначе Нет. Нажмите Создать.
- В новом чате откройте + → Приложения/Коннекторы и включите коннектор.
Название раздела у OpenAI менялось (Connectors → Apps/Plugins). Если пункт называется иначе, ищите «режим разработчика» в настройках. В рабочих пространствах Business/Enterprise администратор должен разрешить пользовательские коннекторы.
Авторизация
При первом использовании ChatGPT откроет окно входа в сервис. Войдите и подтвердите доступ.
Как подключить aim к Cursor
Адрес сервера, который нужно вставить в настройках Cursor:
https://aim--aim-journal.run.tools
Быстрый способ: нажмите кнопку Открыть в Cursor ниже, Cursor сам предложит добавить сервер.
Вручную:
- В Cursor откройте Settings → Cursor Settings → MCP и нажмите Add new global MCP server.
- Вставьте JSON, скопированный ниже, в открывшийся файл
~/.cursor/mcp.json(для одного проекта:.cursor/mcp.jsonв корне проекта). - Сохраните файл. Сервер появится в списке MCP; при необходимости пройдите авторизацию по кнопке рядом с ним.
Авторизация
Если сервис требует вход, рядом с сервером в списке MCP появится кнопка авторизации.
Список инструментов сервера (19)
Технические названия из tools/list. Нужны только разработчикам.
| log_session | Log a completed workout session (exercises → sets, cardio, wearable metrics) at once. Returns the stored session including any auto-created exercise catalog entries. The response may carry a `coach_hint`: a server note to gently offer coaching (intake or a program) after confirming the log — offer once, never push. If the conversation is about PLANNING training (not just logging), call get_coaching_context first. Ask how long the session took (or estimate from set count) and set `duration_sec` — omitting it renders as an empty duration in the app's history and session views. |
| update_session | Fix session-level fields. Allowed keys: date, day_label, duration_sec, location, bodyweight_kg, session_rpe, energy_level, status, notes, tags, start_time, end_time. |
| update_set | Fix a key metric of a single set, located by session + exercise + set_number. Allowed patch keys: weight_kg, reps, rir, rpe, tempo, rest_sec, duration_sec, distance_m, is_per_side, completed, notes, type. `occurrence` (1-based) picks which instance when the exercise appears more than once in the session. Returns the updated set, or null if none. |
| get_session | Get one session with its full nested entries, sets, cardio and wearable metrics. |
| get_sessions | List sessions (newest first) with summary fields and total volume. Optional date range. |
| delete_session | Delete a session and all its entries/sets. Returns {deleted: bool}. |
| log_body_metric | Record a body measurement (weight, body-fat %, circumferences) for a date. |
| get_body_metrics | List body measurements, newest first. |
| upsert_exercise | Create or update an exercise in the user's catalog (keyed by its id/name). Always set `instructions` (2-3 short technique cues, in the user's language) for any exercise you create — the app UI shows "Technique not added yet" without it, whether the exercise was created while planning a program or while logging a past workout. |
| list_exercises | List the user's exercise catalog (includes instructions / video_url / image_url). |
| get_program | Get the active training program with its day templates (planned blocks/supersets and per-exercise targets). Returns null if no active program — to build one, call get_coaching_context(task='new_program') and follow it; never invent a program from generic knowledge. Edit via import_document. |
| get_stats | Statistics. 'progression' (needs exercise_id) → per-date top set, est-1RM (Epley), volume + PRs; 'prs' (needs exercise_id) → personal records; 'volume' → total training volume over time with trend %. For coaching decisions (what to train, what weight) start from get_coaching_context instead — it bundles the fresh numbers with the user's context. |
| import_document | Bulk-import a full workout document (exercises, sessions, body metrics, programs). Programs must be designed via get_coaching_context(task='new_program') and explicitly approved by the user before importing. |
| get_coaching_context | Coaching instructions + this user's fresh training context for the task. Call at the start of any coaching conversation and treat the returned `prompt` as your instructions. If intake is incomplete it returns the intake flow instead (intake_required=true). `constraints` is for TODAY-ONLY circumstances ("only 30 minutes", "gym closed, training at home") — they shape this generation without touching the profile; durable facts go through update_coach_profile instead. |
| review_program_draft | Server-side checklist for a DRAFT training program. Call it with the same WorkoutDocument you intend to import BEFORE presenting the draft to the user: it verifies every exercise has a starting weight (or calibration note), matches the user's equipment, respects session length / weekly days, and flags possible injury conflicts. Returns {ok, violations, warnings}. Fix violations and re-check; saves nothing. |
| update_coach_profile | Persist facts the user confirmed (goal, experience, schedule, equipment, injuries, preferences). Call as soon as a fact is confirmed — one fact per call is fine, don't batch or wait for the end of the conversation; works mid-workout too. Injuries: add via add_injuries, close via resolve_injury_areas. An explicitly null field is CLEARED; omitted fields are untouched. Returns the updated profile, `changed` fields, and `ui_impact` — the app surfaces this write feeds; confirm to the user that their answer was saved and now shapes their plan. |
| upsert_goal | Create or update a training goal (pass `id` to update). Coach-proposed goals carry ratified=false until the user explicitly agrees. Never delete goals — supersede with status=revised/abandoned/achieved so history survives. |
| get_goals | The user's goals (status: active|achieved|abandoned|revised|all). |
| log_coach_event | Record a coaching lifecycle event (checkin held, goal review outcome, deload advised, red flag raised) so future conversations can reference it. |