Skip to main content
Glama
KenLSM

node-huckleberry-mcp

npm version npm downloads

Huckleberry MCP Server

Неофициальный MCP-сервер для трекера младенцев Huckleberry для Claude, Cursor, VS Code и других ИИ-ассистентов. Запрашивайте и записывайте данные о сне, кормлении, подгузниках, сцеживании, прикорме, приучении к горшку и росте ребенка.

Предоставляйте данные Huckleberry (сон, кормление, рост, подгузники, прикорм) напрямую в Claude Desktop или интегрируйте MCP-сервер в другие ИИ-приложения.

Установка

Требования

  • Node.js 24+ (соответствует CI; см. .nvmrc)

  • npm 9+

Быстрый старт

npm install -g node-huckleberry-mcp

Или используйте напрямую через npx:

npx node-huckleberry-mcp

Из исходного кода

git clone https://github.com/KenLSM/node-huckleberry-mcp.git
cd node-huckleberry-mcp
npm install
npm run build
node dist/index.js

Related MCP server: whoop-ai-mcp

Конфигурация

Переменные окружения

Сервер считывает учетные данные из переменных окружения:

HUCKLEBERRY_EMAIL=you@example.com
HUCKLEBERRY_PASSWORD=your-password
HUCKLEBERRY_TIMEZONE=America/New_York

Создайте файл .env в корне вашего проекта (см. .env.example для шаблона):

cp .env.example .env
# Edit .env with your Huckleberry credentials

Примечание: Никогда не коммитьте .env в систему контроля версий. Файл .gitignore уже исключает его.

Интеграция с Claude Desktop

Чтобы использовать этот сервер с Claude Desktop, добавьте его в ваш claude_desktop_config.json:

macOS/Linux: ~/.config/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "huckleberry": {
      "command": "npx",
      "args": ["node-huckleberry-mcp"],
      "env": {
        "HUCKLEBERRY_EMAIL": "you@example.com",
        "HUCKLEBERRY_PASSWORD": "your-password",
        "HUCKLEBERRY_TIMEZONE": "America/New_York"
      }
    }
  }
}

После обновления конфигурации перезапустите Claude Desktop. Инструменты Huckleberry появятся в списке инструментов.

Инструменты

Сервер предоставляет 29 инструментов в 6 категориях. (Таймеры активных сессий сна/кормления — start_sleep, pause_feeding и т. д. — не реализованы; используйте явные инструменты log_* для записи завершенных событий.)

Управление ребенком (2)

Инструмент

Ввод

Вывод

get_user

Профиль пользователя + список UID детей

get_child

child_uid

Профиль ребенка (childsName, gender, birthdate)

Сон (4)

Инструмент

Ввод

Назначение

log_sleep

child_uid, start, end (эпоха, сек), notes?

Записать завершенную сессию сна

get_sleep_history

child_uid, limit?

Недавние сессии сна (включая id)

edit_sleep

child_uid, interval_id, + любое из start/duration/notes

Редактировать существующую запись сна

delete_sleep

child_uid, interval_id

Навсегда удалить запись сна

Кормление (10)

Инструмент

Ввод

Назначение

log_nursing

child_uid, start, left_duration?, right_duration?, last_side?, notes?

Записать сессию грудного вскармливания

log_bottle

child_uid, start, amount, bottle_type, units, notes?

Записать кормление из бутылочки

log_solids

child_uid, start, notes?

Записать кормление прикормом

log_pump

child_uid, start, left_amount/right_amount или total_amount, units, duration?, notes?

Записать сессию сцеживания

list_pump_intervals

child_uid, limit?

Недавние сессии сцеживания (включая id)

get_feed_history

child_uid, limit?

Недавние кормления (включая id), сначала новые

edit_feed

child_uid, interval_id, + любое из start/amount/bottle_type/units/left_duration/right_duration/last_side/notes

Редактировать существующую запись кормления

edit_pump

child_uid, interval_id, + любое из start/left_amount/right_amount/units/duration/notes

Редактировать существующую запись сцеживания

delete_feed

child_uid, interval_id

Навсегда удалить запись кормления

delete_pump

child_uid, interval_id

Навсегда удалить запись сцеживания

Подгузники (5)

color и consistency ограничены фиксированным набором значений (желтый/коричневый/зеленый/черный/красный/белый/оранжевый/другой; твердый/нормальный/мягкий/жидкий/водянистый/оформленный/слизистый), чтобы предотвратить сбой приложения Huckleberry из-за нераспознанного значения на этой записи. См. TASKS.md → BUG2 о том, как был выбран набор — заимствован из устаревшего порта, еще не подтвержден вживую.

Инструмент

Ввод

Назначение

log_diaper

child_uid, mode (pee/poo/both/dry), start, color?, consistency?, pee_amount?, poo_amount?, notes?

Записать смену подгузника

log_potty

child_uid, mode (pee/poo), start, notes?

Записать активность приучения к горшку

get_diaper_history

child_uid, limit?

История подгузников + горшка (включая id)

edit_diaper

child_uid, interval_id, + любое из start/mode/color/consistency/pee_amount/poo_amount/notes

Редактировать существующую запись подгузника/горшка

delete_diaper

child_uid, interval_id

Навсегда удалить запись подгузника/горшка

Рост (5)

Инструмент

Ввод

Назначение

log_growth

child_uid, weight?, height?, head?, units? (metric/imperial), start?, notes?

Записать измерение роста

get_latest_growth

child_uid

Самое последнее измерение роста (включая id)

get_growth_history

child_uid, limit?

История роста (включая id)

edit_growth

child_uid, entry_id, + любое из start/weight/height/head/units/notes

Редактировать существующее измерение роста

delete_growth

child_uid, entry_id

Навсегда удалить измерение роста

Прикорм — пользовательские продукты (3)

Инструмент

Ввод

Назначение

list_curated_foods

Получить базу данных курируемых продуктов

list_custom_foods

child_uid

Список пользовательских продуктов для ребенка

create_custom_food

child_uid, name, category?, allergens?, notes?

Создать запись пользовательского продукта

Все входные данные start/end — это секунды эпохи. Время сохраняется с смещением часового пояса offset, полученным из HUCKLEBERRY_TIMEZONE.

Каждый инструмент log_* принимает необязательное поле свободного текста notes, которое сохраняется в записи и возвращается соответствующим инструментом истории/get_* (каждая прочитанная запись включает свой Firestore id). Инструменты edit_* (edit_sleep, edit_feed, edit_pump, edit_diaper, edit_growth) обновляют notes и другие поля в существующей записи, а инструменты delete_* удаляют одну — оба принимают id/interval_id/entry_id из соответствующего чтения. Удаление не пересчитывает сводку prefs.last* трекера, поэтому представление «самое последнее» может кратко показывать удаленную запись до следующей записи.

Промпты

Сервер также предоставляет MCP промпты (шаблоны в стиле слэш-команд в клиентах, которые их поддерживают): huckleberry_usage (загружает соглашения об использовании), daily_summary (date?) и log_event (event).

Навык агента

skills/huckleberry/SKILL.md обучает ассистента правильному использованию этих инструментов (определение ребенка, преобразование времени из естественного языка в секунды эпохи, единицы измерения, подтверждение перед записью). Скопируйте его в каталог навыков Claude, чтобы сделать MCP более удобным в использовании.

Разработка

Скрипты

npm run build            # TypeScript → JavaScript (tsc)
npm run lint             # Lint with oxlint
npm run lint:fix         # Lint and auto-fix
npm run format           # Format with oxfmt
npm run format:check     # Check formatting without changes
npm test                 # Run unit tests (Vitest)
npm run test:watch       # Watch mode for tests
npm run test:integration # Live tests (needs HUCKLEBERRY_* creds; skipped otherwise). Read-only by default; set HUCKLEBERRY_ALLOW_WRITES=1 to also run the log_*→delete write round-trip (test account only)
npm run inspect:schema   # Dump real Firestore shapes (needs creds) — see docs/integration-testing.md
npm run smoke            # Build + run the MCP server smoke test
npm run dev              # Run in dev mode (tsx)

Инструментарий

  • TypeScript 5.3+ со строгим режимом

  • oxc (oxlint + oxfmt) — быстрые линтинг и форматирование на основе Rust

  • Vitest — исполнитель модульных тестов

  • Zod — проверка данных во время выполнения

  • Firebase JS SDK — Firestore + Auth

Архитектура

src/
├── auth/            # Authentication (T1.1)
├── client/          # Huckleberry API operations (T1.2–T1.9)
├── models/          # Zod schemas for Firestore docs (T1.3)
├── server/          # MCP server framework (T2.1–T2.2)
├── tools/           # MCP tool implementations (T2.3–T2.8)
├── __tests__/       # Unit & smoke tests
└── index.ts         # Entry point

См. AGENTS.md для деталей архитектуры и соглашений.

Тестирование

Модульные тесты находятся в src/__tests__/ и используют Vitest с мокированным Firebase:

npm test

Запуск одного файла тестов:

npm test -- models.test.ts

Режим наблюдения:

npm run test:watch

Живая интеграция (ограниченная) проверяет работу с реальной учетной записью и пропускается без учетных данных. По умолчанию она только для чтения; дополнительный цикл записи log_*→delete выполняется только с HUCKLEBERRY_ALLOW_WRITES=1 (используйте тестовую учетную запись) — см. docs/integration-testing.md:

# read-only schema validation
HUCKLEBERRY_EMAIL=… HUCKLEBERRY_PASSWORD=… npm run test:integration

# also exercise log_*→delete writes (test account only)
HUCKLEBERRY_EMAIL=… HUCKLEBERRY_PASSWORD=… HUCKLEBERRY_ALLOW_WRITES=1 npm run test:integration

Лицензирование и атрибуция

Этот проект — порт на Node.js двух проектов под лицензией MIT:

Этот порт включает значительный дизайн и реализацию из обоих вышеуказанных проектов.

Безопасность и конфиденциальность

  • Данные не хранятся локально. Все операции — это аутентифицированные чтения/записи в вашу базу данных Huckleberry Firestore.

  • Учетные данные основаны на переменных окружения. Никогда не коммитьте .env и не хардкодьте учетные данные.

  • Это неофициальный клиент стороннего сервиса; API был реконструирован и может измениться.

Поддержка

  • Документация: См. AGENTS.md для руководства для участников.

  • Проблемы: Сообщайте об ошибках или запрашивайте функции на GitHub Issues.

  • Вышестоящий проект: По вопросам о данных Huckleberry или изменениях API см. оригинальные проекты на Python.


Создано с ❤️ как Node/TypeScript порт py-huckleberry-api и py-huckleberry-mcp.

Install Server
A
license - permissive license
C
quality
A
maintenance

Maintenance

Maintainers
Response time
3wRelease cycle
4Releases (12mo)
Commit activity

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    An MCP server that provides access to Cronometer nutrition data, enabling users to pull food logs, macro and micronutrient summaries, and biometric data into Claude or Cursor. It supports daily nutrition tracking and raw CSV exports by interfacing with the Cronometer web protocol.
    27
    17
    MIT
  • A
    license
    B
    quality
    B
    maintenance
    MCP server for accessing Oura Ring data from Claude Code and claude.ai, providing summarized health metrics and raw API data.
    11
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Hosted MCP server that syncs health data from Apple Health, Fitbit, Oura, and Google Health Connect, enabling Claude and ChatGPT to query workouts, sleep, nutrition, and recovery in plain English with interactive charts.
    MIT

View all related MCP servers

Related MCP Connectors

  • Hosted Amazon Seller Central and Amazon Ads MCP server for Claude, ChatGPT, Cursor, and agents.

  • Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer

  • Hosted Amazon Seller and Vendor MCP server for Claude, ChatGPT, Cursor, Codex, Gemini, Copilot.

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/KenLSM/node-huckleberry-mcp'

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