databasedmcp

← Articles

Alternative to Huckleberry: a baby sleep and feeding log with ChatGPT

At 3 in the morning, tell ChatGPT "she's asleep" or "bottle, 120 ml". It keeps the log, so the next feed and the week's patterns are a question away.

6 min read

databasedmcp gives your AI assistant databases it keeps between conversations, so everything in this article works from the day you connect it. Free to start, no card.

Get started free

Why build it yourself

Parents use Huckleberry to answer small questions at hard hours: when did she last eat, which side was it, how long has she been awake, how much did she sleep yesterday. At its core is a log of sleeps, feeds and diapers, with the patterns drawn from it.

That log is three tables. With your phone in one hand, telling ChatGPT "she's asleep" or "bottle, 120 ml" is quicker than finding the right button. The database keeps every entry, so the patterns are queries: hours of sleep a day, feeds a day, the time since the last one.

Connect ChatGPT to databasedmcp

databasedmcp is a remote MCP server that gives AI assistants private SQLite databases, with nothing to install.

ChatGPT connects to remote MCP servers as custom connectors in developer mode. That's on paid plans, on the web. Turn on developer mode in ChatGPT's settings, then create a connector: give it a name, enter https://databasedmcp.com/mcp as the URL and choose OAuth. When ChatGPT opens a databasedmcp page, sign in and select Allow. In a new chat, turn the connector on from the tools menu.

ChatGPT moves these menus between releases. If yours look different, search its settings for developer mode and custom connectors.

Any other MCP client works the same way; the docs have the details.

Copy this prompt to build it

Paste this into ChatGPT to set up the database, its tables and its guide in one go. The rest of this article walks through what it makes and how you use it.

prompt
Set up a baby log for me in databasedmcp, in one go.

1. Create a database called baby_log, described as "Baby log for Ilo: sleep, feeds and diapers".
2. Create three tables:
   - sleeps: id, started_at (date and time, defaults to now), ended_at (NULL while she's asleep), kind (nap or night), notes.
   - feeds: id, at (date and time, defaults to now), kind (breast, bottle or solids), side (left, right or both, for breast feeds), amount_ml, duration_min, notes.
   - diapers: id, at (date and time, defaults to now), kind (wet, dirty or both), notes.
3. Write the database a guide that says what each table is for, that times are stored in UTC and shown to me in my local time, that only one sleep is open at a time, and the queries for "last feeds", "hours of sleep per day this week" and "feeds and diapers per day".

From then on: when I say she fell asleep, start a sleep; when she wakes, set ended_at on the open one. Log every feed and diaper I mention. Keep replies short. Don't give medical advice; if I ask about something worrying, tell me to ask a health professional. Show me the tables when you're finished.

Ask for the database

You don't write the schema. Describe what you want:

Set up a baby log for Ilo in databasedmcp: when she sleeps and wakes, every feed (breast with side, bottle with ml, or solids) and every diaper. Log each one as I mention it, and keep your replies short.

ChatGPT creates a database called baby_log and its tables:

schema
CREATE TABLE sleeps (
  id INTEGER PRIMARY KEY,
  started_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
  ended_at TEXT,
  kind TEXT CHECK (kind IN ('nap', 'night')),
  notes TEXT
);

CREATE TABLE feeds (
  id INTEGER PRIMARY KEY,
  at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
  kind TEXT NOT NULL CHECK (kind IN ('breast', 'bottle', 'solids')),
  side TEXT CHECK (side IN ('left', 'right', 'both')),
  amount_ml INTEGER,
  duration_min INTEGER,
  notes TEXT
);

CREATE TABLE diapers (
  id INTEGER PRIMARY KEY,
  at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
  kind TEXT NOT NULL CHECK (kind IN ('wet', 'dirty', 'both')),
  notes TEXT
);

It also writes the database a guide on how the tables are meant to be used. The guide comes back with the schema whenever an assistant looks the database up. ChatGPT files things the same way next week as today, and so does any other assistant you connect.

guide
# baby_log: Ilo's sleep, feeds and diapers

- **sleeps**: one row per sleep. `ended_at` is NULL while she's asleep; only one sleep is open at a time. kind: nap or night.
- **feeds**: breast (with side and minutes), bottle (with ml) or solids.
- **diapers**: wet, dirty or both.

Times are UTC (datetime('now')); show them in my local time. This is a log, not advice: for anything worrying, say to ask a health professional.

Last feeds: `SELECT at, kind, side, amount_ml, duration_min FROM feeds ORDER BY at DESC LIMIT 3`

Sleep per day: `SELECT date(started_at) AS day, count(*) AS sleeps, round(sum(julianday(ended_at) - julianday(started_at)) * 24, 1) AS hours FROM sleeps WHERE ended_at IS NOT NULL AND started_at >= date('now', '-7 days') GROUP BY day ORDER BY day`

Use it

From here on you talk, and ChatGPT writes the rows. Each request below is one statement:

Fed her on the left for 15 minutes, about an hour ago.
execute
INSERT INTO feeds (at, kind, side, duration_min) VALUES (datetime('now', ?), ?, ?, ?)
-- params: ["-60 minutes","breast","left",15]
She fell asleep 40 minutes ago.
execute
INSERT INTO sleeps (started_at, kind) VALUES (datetime('now', ?), ?)
-- params: ["-40 minutes","nap"]
She's up.
execute
UPDATE sleeps SET ended_at = datetime('now') WHERE ended_at IS NULL

Only one sleep is open at a time, so "she's up" always closes the right one.

Wet diaper, then a bottle, 120 ml.
execute
INSERT INTO diapers (kind) VALUES (?)
-- params: ["wet"]

ChatGPT logs the bottle too.

execute
INSERT INTO feeds (kind, amount_ml) VALUES (?, ?)
-- params: ["bottle",120]

Ask it questions

Once there's data, each report you'd pay for is a single query:

When did she last eat, and which side was it?
query
SELECT at, kind, side, amount_ml, duration_min, round((julianday('now') - julianday(at)) * 24, 1) AS hours_ago FROM feeds ORDER BY at DESC LIMIT 3
How much has she slept each day this week?
query
SELECT date(started_at) AS day, count(*) AS sleeps, round(sum(julianday(ended_at) - julianday(started_at)) * 24, 1) AS hours FROM sleeps WHERE ended_at IS NOT NULL AND started_at >= date('now', '-7 days') GROUP BY day ORDER BY day

Days here are UTC days, so a night's sleep counts on the day it started. Ask ChatGPT to shift the times to your time zone when that matters.

How many feeds and diapers a day this week?
query
WITH f AS (SELECT date(at) AS day, count(*) AS feeds FROM feeds GROUP BY day), d AS (SELECT date(at) AS day, count(*) AS diapers FROM diapers GROUP BY day) SELECT f.day, f.feeds, coalesce(d.diapers, 0) AS diapers FROM f LEFT JOIN d ON d.day = f.day WHERE f.day >= date('now', '-7 days') ORDER BY f.day DESC

You can also open the database on the website, page through its rows and run read-only SQL yourself.

What you give up

Huckleberry is built for this: one-tap buttons, timers that run while you feed, charts, nap-time predictions and a partner's phone showing the same log. Here you log in a chat. Nothing times a feed or tells you when a nap is due. Your partner, if you invite them to your databasedmcp account, can see the rows on the website, but logging goes through an assistant.

This is a log and a set of patterns, nothing more. It doesn't give medical or sleep advice, and ChatGPT reading the numbers is not a check-up. If something about how your baby is sleeping, feeding or growing worries you, ask a health professional, and bring the log along if it helps.

Try it

databasedmcp is free to start, with no card. Free has 100 tool calls a week, enough to set this up and try it for a week. Starter has 1,000 for everyday use.

Create an account

More articles · databasedmcp · Docs