Skip to main content
Glama
YingsHermes

Lifestyle MCP Gym

by YingsHermes

Lifestyle MCP Gym

Lifestyle MCP Gym — это готовый для агентов слой данных для фитнес-клуба и персонального тренера: люди управляют питанием, продуктами, введёнными пользователем, тренировками, показателями тела и детерминированными оценками самочувствия через адаптивную панель управления и ограниченные по области действия инструменты JSON-RPC MCP.

Возможности

  • Регистрация и вход для людей с хешированием паролей, защищёнными HTTP-only сессионными cookie, целями, опытом, часовым поясом и согласием.

  • Регистрация агентов с ограниченными возможностями, опциональным HTTPS-вебхуком, метаданными владельца и одноразовым секретным ответом. Хранится только хеш.

  • Отслеживание тренировок: упражнения, подходы, повторения, вес, продолжительность, заметки и недавняя активность.

  • Показатели тела: вес, процент жира, талия, дата и заметки.

  • Профили питания и ограниченные журналы продуктов. Значения питания всегда вводятся пользователем и никогда не выдумываются.

  • Детерминированный расчёт BMR по формуле Миффлина-Сан Жеора, поддерживающие калории без учёта коэффициента активности, явные калории с поправкой на цель и оценка макронутриентов на основе веса с версионированными допущениями, предупреждениями о несоответствии знаков, рекомендациями при отсутствии данных, защитными минимумами и дисклеймерами о здоровье.

  • Контекст коучинга одним вызовом с профилем питания, рассчитанными целями, сегодняшним питанием, недавней статистикой тренировок, последними показателями тела и явными следующими действиями.

  • Конечная точка MCP JSON-RPC по адресу /api/mcp с initialize, tools/list и tools/call.

  • Ограниченные инструменты MCP для тренировок, показателей, питания, контекста коучинга, регистрации агентов и ссылок на доступ к панели управления.

Related MCP server: wger MCP Server

Запуск локально

Требования: Node.js 20+ и npm.

npm install
cp .env.example .env.local
npm run dev

Откройте http://localhost:3000.

Драйвер локального хранилища по умолчанию — JSON-файл в .data/lifestyle-gym.json. Он полезен для локальной разработки и игнорируется git. Чтобы вместо этого использовать явное демонстрационное хранилище:

LIFESTYLE_STORAGE_DRIVER=memory npm run dev

Хранилище в памяти сбрасывается при перезапуске серверного процесса.

Окружение

См. .env.example:

  • SUPABASE_URL: URL проекта из настроек API Supabase.

  • SUPABASE_SERVICE_ROLE_KEY: секрет служебной роли из настроек API Supabase.

  • LIFESTYLE_STORAGE_DRIVER: локальный запасной вариант: file или memory.

  • LIFESTYLE_DATA_FILE: опциональный путь для локального JSON-хранилища.

Когда присутствуют обе переменные Supabase, сервер автоматически выбирает SupabaseStorage; в противном случае сохраняется существующее поведение с файлом/памятью. На Vercel запасной вариант — память процесса, если явно не выбран файловый драйвер.

Безопасность: SUPABASE_SERVICE_ROLE_KEY доступен только на сервере. Никогда не добавляйте к нему префикс NEXT_PUBLIC_, не импортируйте адаптер хранилища в клиентский код, не выводите ключ и не коммитьте его. Приложение хранит хеши паролей, хеши токенов сессий и хеши секретов агентов; исходные секреты агентов возвращаются только один раз.

Настройка Supabase

  1. Создайте проект Supabase.

  2. Привяжите Supabase CLI к проекту и примените включённую в репозиторий миграцию:

    npx supabase@latest link --project-ref YOUR_PROJECT_REF
    npx supabase@latest db push

    Включённые в репозиторий миграции идемпотентны и безопасны для повторного запуска.

  3. Скопируйте URL проекта и ключ служебной роли в .env.local для локального сервера на базе Supabase.

  4. Перезапустите сервер Next.js и убедитесь, что /api/status сообщает режим хранилища supabase.

Миграции создают нормализованные таблицы людей, сессий, агентов, тренировок, упражнений/подходов тренировок, показателей тела, профилей питания и записей питания. Row Level Security включена на каждой таблице. Намеренно нет публичных политик: весь доступ к данным использует серверный клиент служебной роли.

Краткое руководство по MCP

Зарегистрируйте человека в панели управления, затем создайте агента. Секрет агента показывается один раз. Отправьте его как bearer-токен:

curl -s https://YOUR_DEPLOYMENT/api/mcp \
  -H 'content-type: application/json' \
  -H 'authorization: Bearer YOUR_AGENT_SECRET' \
  --data '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}}'

curl -s https://YOUR_DEPLOYMENT/api/mcp \
  -H 'content-type: application/json' \
  -H 'authorization: Bearer YOUR_AGENT_SECRET' \
  --data '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}'

Браузерные сессии людей могут вызывать конечную точку с того же источника. Вызовы инструментов агента требуют соответствующих областей действия. Существующие области для тренировок и показателей не изменены. Инструменты питания используют nutrition:read или nutrition:write; get_coaching_context использует только coaching:read, который разрешает агрегированное чтение без предоставления отдельных инструментов для питания, тренировок или показателей.

Контекст коучинга, готовый для LLM

Агент с coaching:read может получить все обоснованные входные данные для коучинга одним вызовом:

curl -s https://YOUR_DEPLOYMENT/api/mcp \
  -H 'content-type: application/json' \
  -H 'authorization: Bearer YOUR_AGENT_SECRET' \
  --data '{
    "jsonrpc":"2.0",
    "id":"coach-context",
    "method":"tools/call",
    "params":{"name":"get_coaching_context","arguments":{}}
  }'

Ответ включает краткий текст в result.content и машиночитаемый JSON в result.structuredContent. Рассчитанные цели включают версию формулы, точные входные данные и допущения, отсутствующие входные данные, пояснения ограничений, примечание о безопасности и следующие явные поля целей:

Поле

Значение

maintenanceCalories

Нейтральный базовый уровень TDEE до любой корректировки цели.

goalTargetCalories

Целевые калории после применения выбранной цели похудения, поддержания или набора.

goalAdjustmentCalories

Знаковая разница между goalTargetCalories и maintenanceCalories.

goal

Выбранное направление: lose, maintain, gain или null, если недоступно.

goalSummary

Понятное человеку предложение с указанием направления и корректировки.

suggestions

Рекомендации по коучингу и следующим шагам для конкретной цели.

targetCalories

Обратно совместимый псевдоним goalTargetCalories.

lose по умолчанию ниже поддерживающего уровня, gain по умолчанию выше поддерживающего, а maintain равен поддерживающему. Пользовательский targetRateKgPerWeek имеет знак: отрицательный для похудения и положительный для набора. Если его знак противоречит выбранной цели, расчёт нормализует знак, сообщает об этом допущении и использует нормализованную скорость. Контекст коучинга повторяет и нейтральный базовый уровень, и скорректированную цель в своём понятном человеку тексте.

Журналирование продуктов, введённых пользователем

log_food никогда не ищет и не выдумывает питательные вещества. Укажите итоговые значения для всей записи журнала, включая все порции:

curl -s https://YOUR_DEPLOYMENT/api/mcp \
  -H 'content-type: application/json' \
  -H 'authorization: Bearer YOUR_AGENT_SECRET' \
  --data '{
    "jsonrpc":"2.0",
    "id":"food-1",
    "method":"tools/call",
    "params":{
      "name":"log_food",
      "arguments":{
        "eatenAt":"2026-08-20T12:30:00Z",
        "mealType":"lunch",
        "foodName":"Tofu rice bowl",
        "servingSize":"1 bowl",
        "servings":1,
        "caloriesKcal":640,
        "proteinG":31,
        "carbohydratesG":82,
        "fatG":19,
        "fiberG":11,
        "notes":"Totals entered from the recipe"
      }
    }
  }'

Проверка

npm test
npm run lint
npm run build

Развёртывание на Vercel

Задайте следующие переменные окружения Vercel для каждого окружения, которое должно использовать постоянное хранилище:

  • SUPABASE_URL

  • SUPABASE_SERVICE_ROLE_KEY

Используйте панель управления Vercel или vercel env add; не допускайте попадания значения служебной роли в историю команд и журналы развёртывания. Не создавайте копию с NEXT_PUBLIC_.

Затем разверните предварительную версию:

npx vercel@latest --token "$VERCEL_TOKEN" --yes

Используйте --prod только для намеренного производственного развёртывания. Проверьте возвращённое развёртывание с помощью npx vercel@latest inspect <deployment-url> --token "$VERCEL_TOKEN".

Архитектура

  • src/components/: клиентская панель управления, аутентификация, формы и руководство по API.

  • src/app/api/: обработчики маршрутов Next.js для аутентификации, тренировок, показателей, статистики, агентов, статуса и MCP.

  • src/lib/domain.ts: проверенные схемы входных данных домена и расчёты статистики.

  • src/lib/service.ts: аутентификация, авторизация и операции приложения.

  • src/lib/storage/: интерфейс хранилища плюс адаптеры Supabase, локального JSON и памяти.

  • src/lib/mcp.ts: проверка запросов JSON-RPC/MCP, инструменты, аутентификация и контроль областей действия.

LifestyleStorage сохраняет независимость домена, сервиса, интерфейса и поведения MCP от выбранного адаптера персистентности.

F
license - not found
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • F
    license
    Not graded
    quality
    B
    maintenance
    Connect Pelaris to any MCP-compatible AI assistant for personalised fitness coaching. Plan training programs, log workouts, track benchmarks, manage goals, and get data-driven coaching insights. Supports science-based methodologies including 5/3/1, Pfitzinger, polarised training, and more. OAuth 2.0 authentication with Streamable HTTP transport. Documentation: https://pelaris.io/integrations Web
  • F
    license
    Not graded
    quality
    B
    maintenance
    MCP server that wraps wger fitness/nutrition management platform, providing 15 tools for exercise search, ingredient nutrition lookup, weight tracking, and more, accessible to any MCP-compatible AI agent.
  • F
    license
    A
    quality
    B
    maintenance
    Personal 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
  • F
    license
    Not graded
    quality
    C
    maintenance
    A personal health and fitness MCP server that provides tools for managing profile data, goals, body measurements, nutrition, workouts, sleep, check-ins, life events, analytics, and coach memories via Supabase Postgres.
    1

View all related MCP servers

Related MCP Connectors

  • A paid remote MCP for AI SDK benchmark dashboard, built to return verdicts, receipts, usage logs, an

  • A paid remote MCP for AI SDK eval dashboard, built to return verdicts, receipts, usage logs, and aud

  • A paid remote MCP for AI SDK data query MCP, built to return verdicts, receipts, usage logs, and aud

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/YingsHermes/lifestyle-mcp-gym'

If you have feedback or need assistance with the MCP directory API, please join our Discord server