Nutrition Hub
Writes and synchronizes daily nutrition diary entries as Markdown notes in an Obsidian vault, updating a managed block while preserving personal text outside it.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Nutrition Hubpreview a dinner draft with grilled salmon and rice"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Nutrition Hub
Самостоятельно разворачиваемый MCP-сервис, который связывает ChatGPT или другой MCP-клиент с личным дневником FatSecret и Markdown-дневником в Obsidian.
Сервис рассчитан на одного пользователя и один FatSecret-аккаунт. Каждый пользователь разворачивает собственный экземпляр и никому не передаёт свои OAuth-токены.
Возможности
поиск продуктов в FatSecret;
поиск ранее использованных локальных продуктов в недавних, избранном и дневнике;
безопасный черновик блюда до записи;
явное подтверждение перед изменением дневника;
защита от повторной записи одного черновика;
откат при частичном сбое;
отмена операций, созданных Nutrition Hub;
дневные Markdown-заметки для Obsidian;
работа с ChatGPT через частный Secure MCP Tunnel;
Streamable HTTP MCP endpoint:
/mcp.
Related MCP server: myfitnesspal-mcp
Как это работает
Фото / голос / текст
↓
ChatGPT или другой MCP-клиент
↓
Nutrition Hub
├── OAuth 1.0a → FatSecret
└── Markdown → папка ObsidianИзображения обрабатывает клиент с поддержкой зрения, например ChatGPT. Nutrition Hub не принимает и не хранит фотографии: он получает уже выбранные продукты, порции и подтверждение.
Требования
Linux, macOS или VPS с Docker и Docker Compose;
личный аккаунт FatSecret;
аккаунт разработчика FatSecret и OAuth 1.0 Consumer Key/Secret;
отдельная папка внутри Obsidian для дневника питания;
для ChatGPT: Developer mode и либо Secure MCP Tunnel, либо стабильный публичный HTTPS endpoint.
Доступность Developer mode и Secure MCP Tunnel зависит от аккаунта и политики рабочего пространства OpenAI.
Быстрая установка
git clone https://github.com/sevavsegdakotov/nutrition-hub.git
cd nutrition-hub
chmod +x setup.sh authorize-fatsecret.sh
./setup.shУстановщик:
спросит часовой пояс;
попросит абсолютный путь к отдельной папке питания внутри Obsidian;
создаст локальный
.env;запустит OAuth-авторизацию FatSecret;
соберёт и запустит контейнер.
Во время OAuth нужно ввести Consumer Key и Consumer Secret, открыть выданную ссылку в браузере, разрешить доступ в своём пользовательском FatSecret-аккаунте и вставить PIN. Секреты сохраняются локально в secrets/config.json с ограниченными правами.
Проверка:
docker compose ps
curl http://127.0.0.1:3781/healthzОжидаемый endpoint:
http://127.0.0.1:3781/mcpРучная настройка
cp .env.example .envОтредактируйте .env:
NUTRITION_TIMEZONE— часовой пояс, напримерEurope/Berlin;OBSIDIAN_NUTRITION_PATH— абсолютный путь к отдельной папке дневника;PUIDиPGID— идентификаторы пользователя, обычно результатid -uиid -g;BIND_ADDRESS— оставьте127.0.0.1для частного туннеля;MCP_AUTH_TOKEN— нужен, если endpoint публикуется напрямую и клиент умеет передавать Bearer-заголовок.
Затем:
mkdir -p data secrets
chmod 700 data secrets
./authorize-fatsecret.sh
docker compose up -d --buildПодключение к ChatGPT
Рекомендуемый вариант — OpenAI Secure MCP Tunnel: сервер остаётся на 127.0.0.1 и не открывает входящий порт в интернет.
Создайте туннель в настройках OpenAI Platform.
Установите актуальный
tunnel-clientпо официальной инструкции OpenAI.Настройте HTTP-профиль на
http://127.0.0.1:3781/mcp.Выполните
tunnel-client doctor --profile nutrition-hub --explain.Запустите
tunnel-client run --profile nutrition-hub.В ChatGPT включите Developer mode.
На странице Plugins создайте приложение и в разделе Connection выберите Tunnel.
Проверьте, что ChatGPT увидел семь инструментов Nutrition Hub.
Официальные инструкции:
Для публичного подключения нужен стабильный HTTPS endpoint с /mcp и подходящей аутентификацией. Встроенный статический Bearer-токен подходит только клиентам, которые умеют передавать заголовок Authorization. Для публичного плагина ChatGPT потребуется отдельный поддерживаемый слой аутентификации и процедура публикации OpenAI.
Инструменты MCP
Инструмент | Что делает | Изменяет данные |
| Ищет продукты в US-каталоге и известных продуктах профиля | Нет |
| Возвращает карточку продукта и варианты порций | Нет |
| Создаёт временный черновик на четыре часа | Нет |
| Записывает подтверждённый черновик в FatSecret и Obsidian | Да |
| Отменяет операцию Nutrition Hub | Да |
| Показывает живой дневник и операции за дату | Нет |
| Пересобирает управляемый Markdown-блок за дату | Только Obsidian |
Пример работы
Пользователь:
Подготовь черновик ужина: курица 150 г и рис 200 г. Ничего не записывай без моего подтверждения.
Клиент вызывает search_food, get_food и preview_meal, затем показывает пользователю продукты, порции, калории и БЖУ.
Только после фразы вроде «Подтверждаю запись» клиент вызывает commit_meal с confirmed=true.
Локальные и русскоязычные продукты
Бесплатный FatSecret API использует US dataset. Он может не находить российские продукты, региональные бренды и локальные блюда.
Nutrition Hub использует безопасный обход для продуктов, уже присутствующих в личном профиле:
добавьте продукт один раз через официальное мобильное приложение FatSecret;
Nutrition Hub найдёт его в
recently_eaten,favoriteили дневнике за последние семь дней;продукт можно будет повторять через
source_entry_idбез подстановки неточного американского аналога.
Полный поиск региональной базы требует официального FatSecret Localization-доступа. Проект не использует закрытые мобильные endpoint-ы и не обходит ограничения FatSecret.
Заметки Obsidian
Сервис пишет только в папку, указанную в OBSIDIAN_NUTRITION_PATH. Файл дня имеет вид:
YYYY/YYYY-MM-DD.mdАвтоматический текст находится между маркерами:
<!-- nutrition-hub:start -->
<!-- nutrition-hub:end -->Личный текст за пределами блока сохраняется при повторной синхронизации.
Безопасность
Не коммитьте
.env,secrets/иdata/.Не публикуйте Consumer Secret, пользовательские OAuth-токены и MCP-токены.
Монтируйте только отдельную папку питания, а не всё хранилище Obsidian.
Оставляйте
BIND_ADDRESS=127.0.0.1, если используете Secure MCP Tunnel.При прямой сетевой публикации обязательно задайте
MCP_AUTH_TOKENи HTTPS.Не подключайте к модели сырой
fatsecret-mcp: в нём есть прямые операции записи и удаления без слоя подтверждения Nutrition Hub.Отдельная установка нужна каждому пользователю. Текущая версия не является многопользовательским облачным сервисом.
Подробнее: SECURITY.md.
Ограничения
Это не медицинское устройство.
Распознавание фотографии может ошибаться — вес и состав нужно проверять.
FatSecret может ограничивать доступность методов, продуктов и регионов по тарифу и стране.
Сервис не создаёт общую постоянную копию базы FatSecret.
Импорт официального CSV пока не реализован.
Автоматическая настройка публичного HTTPS endpoint не входит в первую версию.
Разработка
python -m venv .venv
source .venv/bin/activate
pip install -e '.[dev]'
pytest -qПроисхождение
FatSecret OAuth-клиент и базовый MCP-адаптер основаны на проекте madebydia/fatsecret-mcp, зафиксированном на коммите из файла UPSTREAM_COMMIT. Новая часть проекта добавляет слой подтверждения, идемпотентные операции, откат, безопасную отмену, профильный поиск локальных продуктов и запись в Obsidian.
Проект распространяется по лицензии MIT. Он не связан с FatSecret и не одобрен FatSecret или OpenAI.
This server cannot be deployed
Maintenance
Related MCP Connectors
Calorie tracker app for ChatGPT and Claude: read meals, macros, weight and log meals from chat.
Give your AI assistant a food journal it can reason with. Log meals, plan ahead and understand your eating habits. Connect ChatGPT, Claude or another compatible assistant. Tell it what you ate, plan a dinner that fits your targets, or review your last two weeks. Splot keeps your meals, photos and nutrition targets together, giving your assistant the context to help. iOS Mobile App: https://apps.apple.com/app/id6809764668 LOG, PLAN AND UNDERSTAND Log meals through your assistant, save recipes and plan ahead. Ask how your protein intake changed this month, which meals helped you meet your targets, or what you could adjust next week. SEE YOUR DAYS ADD UP Track calories, protein, carbohydrates and fat against your daily targets. Your journal stays available across conversations and compatible assistants. KEEP YOUR JOURNAL CLOSE Splot is also available as an iOS app, with Android coming soon. Browse your journal, search foods, scan barcodes, save recipes, add photos, and log or edit meals directly in the app. You can also use Splot entirely through a connected assistant. CONNECT YOUR ASSISTANT Splot provides a hosted MCP server and an API. Connect through your assistant and authorize access to your account. Compatibility and plan requirements depend on your assistant’s provider. PRIVATE BY DEFAULT Your journal is never sold or used for advertising. Disconnect assistants or delete your account and its data whenever you choose. For adults 18 and older. Splot supports nutrition tracking and does not provide medical advice.
MCP-native notes and memory for ChatGPT, Claude, and other AI tools.
Your Gmail, Calendar, Drive, GitHub, Oura, wallet and confirmed profile facts in any MCP client.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA filesystem-based MCP server that turns any MCP-capable AI agent into a conversational calorie and protein tracker with natural-language estimates, confidence-aware logging, daily/weekly progress, food-history search, and export, working offline with local fallback data.37 npmMIT
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol (MCP) server that connects AI assistants to your MyFitnessPal data, enabling reading food diaries, nutrition goals, weight measurements, and more via MFP's web scraping.MIT
- AlicenseNot gradedqualityAmaintenanceConnect MyFitnessPal to Claude or any MCP client. Log meals, search food database with macros, track trends, and export nutrition history against your real MyFitnessPal diary.193 PyPI21MIT
- AlicenseNot gradedqualityBmaintenanceMCP server for personal nutrition tracking, enabling users to log meals with calories and macros, water intake, body weight, set goals, and import food diaries from other apps through natural language.37 npmMIT