Lifestyle MCP Gym
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
Создайте проект Supabase.
Привяжите Supabase CLI к проекту и примените включённую в репозиторий миграцию:
npx supabase@latest link --project-ref YOUR_PROJECT_REF npx supabase@latest db pushВключённые в репозиторий миграции идемпотентны и безопасны для повторного запуска.
Скопируйте URL проекта и ключ служебной роли в
.env.localдля локального сервера на базе Supabase.Перезапустите сервер 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. Рассчитанные цели включают версию формулы, точные входные данные и допущения, отсутствующие входные данные, пояснения ограничений, примечание о безопасности и следующие явные поля целей:
Поле | Значение |
| Нейтральный базовый уровень TDEE до любой корректировки цели. |
| Целевые калории после применения выбранной цели похудения, поддержания или набора. |
| Знаковая разница между |
| Выбранное направление: |
| Понятное человеку предложение с указанием направления и корректировки. |
| Рекомендации по коучингу и следующим шагам для конкретной цели. |
| Обратно совместимый псевдоним |
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_URLSUPABASE_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 от выбранного адаптера персистентности.
This server cannot be installed
Maintenance
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
- FlicenseNot gradedqualityBmaintenanceConnect 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
- FlicenseNot gradedqualityBmaintenanceMCP 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.
- FlicenseAqualityBmaintenancePersonal 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
- FlicenseNot gradedqualityCmaintenanceA 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
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
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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