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
MCP-native notes and memory for ChatGPT, Claude, and other AI tools.
- SomviaOAuthapp.somvia
Private Apple Health metrics and workout detail for ChatGPT, Claude, and any MCP client.
Search, read, and write your Apple Notes from ChatGPT/Claude via a local Mac agent + MCP relay.
Search your AI chat history (ChatGPT, Claude, Codex) from any MCP client. Remote, private, read-only
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.15 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.9MIT
- 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.15 npmMIT