Skip to main content
Glama
KenLSM

node-huckleberry-mcp

npm version npm downloads

Huckleberry MCP Server

Servidor MCP no oficial de Huckleberry baby tracker para Claude, Cursor, VS Code y otros asistentes de IA. Consulta y registra registros de sueño, alimentación, pañales, extracción de leche, sólidos, baño y crecimiento del bebé.

Expón los datos de Huckleberry (sueño, alimentación, crecimiento, pañales, sólidos) directamente en Claude Desktop, o integra el servidor MCP en otras aplicaciones de IA.

Instalación

Requisitos

  • Node.js 24+ (coincide con CI; ver .nvmrc)

  • npm 9+

Inicio rápido

npm install -g node-huckleberry-mcp

O úsalo directamente con npx:

npx node-huckleberry-mcp

Desde el código fuente

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

Configuración

Variables de entorno

El servidor lee las credenciales de las variables de entorno:

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

Crea un archivo .env en la raíz de tu proyecto (consulta .env.example para una plantilla):

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

Nota: Nunca subas .env al control de versiones. El .gitignore ya lo excluye.

Integración con Claude Desktop

Para usar este servidor con Claude Desktop, agrégalo a tu 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"
      }
    }
  }
}

Después de actualizar la configuración, reinicia Claude Desktop. Las herramientas de Huckleberry aparecerán en la lista de herramientas.

Herramientas

El servidor expone 29 herramientas en 6 categorías. (Los temporizadores de sueño/alimentación de sesión activa — start_sleep, pause_feeding, etc. — no están implementados; usa las herramientas explícitas log_* para registrar eventos completados).

Gestión de niños (2)

Herramienta

Entrada

Salida

get_user

Perfil de usuario + lista de UID de niños

get_child

child_uid

Perfil del niño (childsName, gender, birthdate)

Sueño (4)

Herramienta

Entrada

Propósito

log_sleep

child_uid, start, end (epoch s), notes?

Registrar una sesión de sueño completada

get_sleep_history

child_uid, limit?

Sesiones de sueño recientes (incl. id)

edit_sleep

child_uid, interval_id, + cualquiera de start/duration/notes

Editar una entrada de sueño existente

delete_sleep

child_uid, interval_id

Eliminar permanentemente una entrada de sueño

Alimentación (10)

Herramienta

Entrada

Propósito

log_nursing

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

Registrar una sesión de lactancia

log_bottle

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

Registrar una alimentación con biberón

log_solids

child_uid, start, notes?

Registrar una alimentación con sólidos

log_pump

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

Registrar una sesión de extracción de leche

list_pump_intervals

child_uid, limit?

Sesiones de extracción recientes (incl. id)

get_feed_history

child_uid, limit?

Alimentaciones recientes (incl. id), más recientes primero

edit_feed

child_uid, interval_id, + cualquiera de start/amount/bottle_type/units/left_duration/right_duration/last_side/notes

Editar una entrada de alimentación existente

edit_pump

child_uid, interval_id, + cualquiera de start/left_amount/right_amount/units/duration/notes

Editar una entrada de extracción existente

delete_feed

child_uid, interval_id

Eliminar permanentemente una entrada de alimentación

delete_pump

child_uid, interval_id

Eliminar permanentemente una entrada de extracción

Pañal (5)

color y consistency están restringidos a un conjunto fijo de valores (yellow/brown/green/black/red/white/orange/other; hard/normal/soft/runny/watery/formed/mucousy) para evitar que un valor no reconocido provoque un fallo en la aplicación Huckleberry en esa entrada. Consulta TASKS.md → BUG2 para saber cómo se eligió el conjunto — adoptado del puerto heredado, aún no confirmado en vivo.

Herramienta

Entrada

Propósito

log_diaper

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

Registrar un cambio de pañal

log_potty

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

Registrar actividad de entrenamiento para ir al baño

get_diaper_history

child_uid, limit?

Historial de pañal + baño (incl. id)

edit_diaper

child_uid, interval_id, + cualquiera de start/mode/color/consistency/pee_amount/poo_amount/notes

Editar una entrada de pañal/baño existente

delete_diaper

child_uid, interval_id

Eliminar permanentemente una entrada de pañal/baño

Crecimiento (5)

Herramienta

Entrada

Propósito

log_growth

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

Registrar una medición de crecimiento

get_latest_growth

child_uid

Medición de crecimiento más reciente (incl. id)

get_growth_history

child_uid, limit?

Historial de crecimiento (incl. id)

edit_growth

child_uid, entry_id, + cualquiera de start/weight/height/head/units/notes

Editar una medición de crecimiento existente

delete_growth

child_uid, entry_id

Eliminar permanentemente una medición de crecimiento

Sólidos — alimentos personalizados (3)

Herramienta

Entrada

Propósito

list_curated_foods

Obtener la base de datos de alimentos seleccionados

list_custom_foods

child_uid

Listar alimentos personalizados para un niño

create_custom_food

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

Crear una entrada de alimento personalizado

Todas las entradas start/end son segundos de época. Las horas se almacenan con un offset de zona horaria derivado de HUCKLEBERRY_TIMEZONE.

Cada herramienta log_* acepta un campo opcional de texto libre notes, que se almacena en la entrada y se devuelve mediante la herramienta de historial/get_* correspondiente (cada entrada leída incluye su id de Firestore). Las herramientas edit_* (edit_sleep, edit_feed, edit_pump, edit_diaper, edit_growth) actualizan notes y otros campos en una entrada existente, y las herramientas delete_* eliminan una — ambas toman el id/interval_id/entry_id de la lectura correspondiente. Eliminar no recalcula el resumen prefs.last* del rastreador, por lo que una vista "más reciente" puede mostrar brevemente una entrada eliminada hasta la siguiente escritura.

Prompts

El servidor también expone prompts de MCP (plantillas de estilo comando de barra en clientes que los admiten): huckleberry_usage (carga las convenciones de uso), daily_summary (date?) y log_event (event).

Habilidad de agente

skills/huckleberry/SKILL.md enseña a un asistente cómo usar estas herramientas correctamente (resolución de niño, tiempo en lenguaje natural → segundos de época, unidades, confirmar antes de escribir). Cópialo en tu directorio de habilidades de Claude para que el MCP sea más fácil de usar.

Desarrollo

Scripts

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)

Cadena de herramientas

  • TypeScript 5.3+ con modo estricto

  • oxc (oxlint + oxfmt) — linting y formateo rápidos basados en Rust

  • Vitest — ejecutor de pruebas unitarias

  • Zod — validación de datos en tiempo de ejecución

  • Firebase JS SDK — Firestore + Auth

Arquitectura

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

Consulta AGENTS.md para detalles de arquitectura y convenciones.

Pruebas

Las pruebas unitarias están en src/__tests__/ y usan Vitest con Firebase simulado:

npm test

Ejecuta un solo archivo de prueba:

npm test -- models.test.ts

Modo de observación:

npm run test:watch

Integración en vivo (restringida) valida contra una cuenta real y se omite sin credenciales. Es de solo lectura por defecto; un ciclo de escritura log_*→delete opcional se ejecuta solo con HUCKLEBERRY_ALLOW_WRITES=1 (usa una cuenta de prueba) — consulta 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

Licencia y atribución

Este proyecto es un puerto de Node.js de dos proyectos con licencia MIT:

Este puerto incluye diseño e implementación sustanciales de ambos proyectos originales.

Seguridad y privacidad

  • No se almacenan datos localmente. Todas las operaciones son lecturas/escrituras autenticadas a tu base de datos de Firestore de Huckleberry.

  • Las credenciales se basan en el entorno. Nunca subas .env ni codifiques credenciales.

  • Este es un cliente no oficial de un servicio de terceros; la API está diseñada mediante ingeniería inversa y puede cambiar.

Soporte

  • Documentación: Consulta AGENTS.md para obtener orientación para contribuyentes.

  • Problemas: Reporta errores o solicita funciones en GitHub Issues.

  • Proyecto original: Para preguntas sobre los datos de Huckleberry o cambios en la API, consulta los proyectos originales en Python.

Construido con ❤️ como un port en Node/TypeScript de py-huckleberry-api y 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