Skip to main content
Glama
KenLSM

node-huckleberry-mcp

npm version npm downloads

Huckleberry MCP Server

Inoffizieller Huckleberry Baby-Tracker-MCP-Server für Claude, Cursor, VS Code und andere KI-Assistenten. Baby-Schlaf, Fütterungen, Windeln, Abpumpen, feste Nahrung, Töpfchen und Wachstumsdaten abfragen und protokollieren.

Huckleberry-Daten (Schlaf, Fütterung, Wachstum, Windeln, feste Nahrung) direkt in Claude Desktop verfügbar machen oder den MCP-Server in andere KI-Anwendungen integrieren.

Installation

Voraussetzungen

  • Node.js 24+ (entspricht CI; siehe .nvmrc)

  • npm 9+

Schnellstart

npm install -g node-huckleberry-mcp

Oder direkt über npx verwenden:

npx node-huckleberry-mcp

Aus dem Quellcode

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

Konfiguration

Umgebungsvariablen

Der Server liest die Anmeldedaten aus Umgebungsvariablen:

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

Erstelle eine .env-Datei im Projektstamm (siehe .env.example als Vorlage):

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

Hinweis: Committe .env niemals in die Versionskontrolle. Die .gitignore schließt sie bereits aus.

Claude Desktop-Integration

Um diesen Server mit Claude Desktop zu verwenden, füge ihn zu deiner claude_desktop_config.json hinzu:

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"
      }
    }
  }
}

Starte Claude Desktop nach dem Aktualisieren der Konfiguration neu. Die Huckleberry-Tools erscheinen in der Werkzeugliste.

Tools

Der Server stellt 29 Tools in 6 Kategorien bereit. (Timer für aktive Sitzungen – start_sleep, pause_feeding usw. – sind nicht implementiert; verwende die expliziten log_*-Tools, um abgeschlossene Ereignisse zu protokollieren.)

Kindverwaltung (2)

Tool

Eingabe

Ausgabe

get_user

Benutzerprofil + Kind-UID-Liste

get_child

child_uid

Kinderprofil (childsName, gender, birthdate)

Schlaf (4)

Tool

Eingabe

Zweck

log_sleep

child_uid, start, end (Epochensekunden), notes?

Eine abgeschlossene Schlafphase protokollieren

get_sleep_history

child_uid, limit?

Letzte Schlafphasen (inkl. id)

edit_sleep

child_uid, interval_id, + beliebig aus start/duration/notes

Vorhandenen Schlafeintrag bearbeiten

delete_sleep

child_uid, interval_id

Schlafeintrag dauerhaft löschen

Fütterung (10)

Tool

Eingabe

Zweck

log_nursing

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

Still-Sitzung protokollieren

log_bottle

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

Flaschenfütterung protokollieren

log_solids

child_uid, start, notes?

Mahlzeit mit fester Nahrung protokollieren

log_pump

child_uid, start, left_amount/right_amount oder total_amount, units, duration?, notes?

Abpump-Sitzung protokollieren

list_pump_intervals

child_uid, limit?

Letzte Abpump-Sitzungen (inkl. id)

get_feed_history

child_uid, limit?

Letzte Fütterungen (inkl. id), neueste zuerst

edit_feed

child_uid, interval_id, + beliebig aus start/amount/bottle_type/units/left_duration/right_duration/last_side/notes

Vorhandenen Fütterungseintrag bearbeiten

edit_pump

child_uid, interval_id, + beliebig aus start/left_amount/right_amount/units/duration/notes

Vorhandenen Abpump-Eintrag bearbeiten

delete_feed

child_uid, interval_id

Fütterungseintrag dauerhaft löschen

delete_pump

child_uid, interval_id

Abpump-Eintrag dauerhaft löschen

Windel (5)

color und consistency sind auf eine feste Wertemenge beschränkt (gelb/braun/grün/schwarz/rot/weiß/orange/sonstiges; hart/normal/weich/breiig/wässrig/geformt/schleimig), um zu verhindern, dass ein nicht erkanntes Wert die Huckleberry-App bei diesem Eintrag zum Absturz bringt. Siehe TASKS.md → BUG2, wie die Menge ausgewählt wurde – aus dem Legacy-Port übernommen, noch nicht live bestätigt.

Tool

Eingabe

Zweck

log_diaper

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

Windelwechsel protokollieren

log_potty

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

Töpfchentraining-Aktivität protokollieren

get_diaper_history

child_uid, limit?

Windel- + Töpfchen-Verlauf (inkl. id)

edit_diaper

child_uid, interval_id, + beliebig aus start/mode/color/consistency/pee_amount/poo_amount/notes

Vorhandenen Windel-/Töpfchen-Eintrag bearbeiten

delete_diaper

child_uid, interval_id

Windel-/Töpfchen-Eintrag dauerhaft löschen

Wachstum (5)

Tool

Eingabe

Zweck

log_growth

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

Wachstumsmessung protokollieren

get_latest_growth

child_uid

Neueste Wachstumsmessung (inkl. id)

get_growth_history

child_uid, limit?

Wachstumsverlauf (inkl. id)

edit_growth

child_uid, entry_id, + beliebig aus start/weight/height/head/units/notes

Vorhandene Wachstumsmessung bearbeiten

delete_growth

child_uid, entry_id

Wachstumsmessung dauerhaft löschen

Feste Nahrung – benutzerdefinierte Lebensmittel (3)

Tool

Eingabe

Zweck

list_curated_foods

Kuratierte Lebensmitteldatenbank abrufen

list_custom_foods

child_uid

Benutzerdefinierte Lebensmittel für ein Kind auflisten

create_custom_food

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

Benutzerdefinierten Lebensmitteleintrag erstellen

Alle start/end-Eingaben sind Epochensekunden. Zeiten werden mit einem Zeitzonen-offset gespeichert, der aus HUCKLEBERRY_TIMEZONE abgeleitet wird.

Jedes log_*-Tool akzeptiert ein optionales Freitextfeld notes, das im Eintrag gespeichert und vom passenden Verlaufs-/get_*-Tool zurückgegeben wird (jeder gelesene Eintrag enthält seine Firestore-id). Die edit_*-Tools (edit_sleep, edit_feed, edit_pump, edit_diaper, edit_growth) aktualisieren notes und andere Felder eines vorhandenen Eintrags, und die delete_*-Tools entfernen einen – beide verwenden die id/interval_id/entry_id aus dem passenden Lesevorgang. Beim Löschen wird die prefs.last*-Zusammenfassung des Trackers nicht neu berechnet, sodass eine „Zuletzt"-Ansicht einen gelöschten Eintrag kurzzeitig anzeigen kann, bis der nächste Schreibvorgang erfolgt.

Prompts

Der Server stellt außerdem MCP-Prompts bereit (Slash-Command-Vorlagen in Clients, die diese unterstützen): huckleberry_usage (lädt die Nutzungskonventionen), daily_summary (date?) und log_event (event).

Agent-Fähigkeit

skills/huckleberry/SKILL.md lehrt einem Assistenten, diese Tools korrekt zu verwenden (Kind-Auflösung, natürliche Sprache → Epochensekunden, Einheiten, Bestätigung vor dem Schreiben). Kopiere sie in dein Claude-Skills-Verzeichnis, um die MCP-Nutzung zu vereinfachen.

Entwicklung

Skripte

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)

Toolchain

  • TypeScript 5.3+ im Strict-Modus

  • oxc (oxlint + oxfmt) – schnelles, auf Rust basierendes Linting & Formatieren

  • Vitest – Unit-Test-Runner

  • Zod – Laufzeit-Validierung

  • Firebase JS SDK – Firestore + Auth

Architektur

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

Siehe AGENTS.md für Architekturdetails und Konventionen.

Testen

Unit-Tests befinden sich in src/__tests__/ und verwenden Vitest mit gemocktem Firebase:

npm test

Eine einzelne Testdatei ausführen:

npm test -- models.test.ts

Watch-Modus:

npm run test:watch

Live-Integration (geschützt) validiert gegen ein echtes Konto und wird ohne Anmeldedaten übersprungen. Sie ist standardmäßig schreibgeschützt; ein optionaler log_*→delete-Schreib-Roundtrip läuft nur mit HUCKLEBERRY_ALLOW_WRITES=1 (ein Testkonto verwenden) – siehe 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

Lizenz & Namensnennung

Dieses Projekt ist ein Node.js-Port von zwei MIT-lizenzierten Projekten:

Dieser Port enthält wesentliches Design und Implementierung aus beiden Upstream-Projekten.

Sicherheit & Datenschutz

  • Es werden keine Daten lokal gespeichert. Alle Vorgänge sind authentifizierte Lese-/Schreibzugriffe auf deine Huckleberry-Firestore-Datenbank.

  • Anmeldedaten basieren auf Umgebungsvariablen. Committe niemals .env und hinterlege keine Anmeldedaten im Code.

  • Dies ist ein inoffizieller Client eines Drittanbieter-Dienstes; die API ist reverse-engineered und kann sich ändern.

Support

  • Dokumentation: Siehe AGENTS.md für Mitwirkenden-Hinweise.

  • Probleme: Melde Fehler oder fordere Funktionen über GitHub Issues an.

  • Upstream: Bei Fragen zu Huckleberry-Daten oder API-Änderungen siehe die ursprünglichen Python-Projekte.

Erstellt mit ❤️ als Node/TypeScript-Port von py-huckleberry-api und 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