BB

babybuddy/babybuddy-mcp

Developer tools
4 stars 6 forks Quality 73 Trend 20BSD-2-Clause

An MCP server for the Baby Buddy baby tracking application. Connect AI assistants to your babybuddy instance to log and query feedings, sleep, diaper changes, and more.

Overview

An MCP server for the Baby Buddy baby tracking application. Connect AI assistants to your babybuddy instance to log and query feedings, sleep, diaper changes, and more. Built with FastMCP and designed to run alongside babybuddy in Docker. - mise (for local development) - Python 3.13+ - A running babybuddy instance with API access 1. Log in to your babybuddy web UI 2. Click your username in the top-right corner → 3. Copy the shown on the page The MCP server will be available at http://localhost:8080/mcp/. If babybuddy is running on the same Docker network, set BABYBUDDY_URL to use its service name (e.g. http://babybuddy:8000). Set MCP_TRANSPORT=stdio in .env, then add to your Claude Desktop claude_desktop_config.json: Tools are organized by domain with namespaced names (e.g. feedings_list_feedings).

README

babybuddy-mcp

An MCP server for the Baby Buddy baby tracking application. Connect AI assistants to your babybuddy instance to log and query feedings, sleep, diaper changes, and more.

Built with FastMCP and designed to run alongside babybuddy in Docker.

Requirements

  • mise (for local development)
  • Python 3.13+
  • A running babybuddy instance with API access

Setup

1. Get your API token

  1. Log in to your babybuddy web UI
  2. Click your username in the top-right corner → Settings
  3. Copy the API Key shown on the page

2. Configure environment

cp .env.example .env

Edit .env:

BABYBUDDY_URL=http://localhost:8000   # URL of your babybuddy instance
BABYBUDDY_TOKEN=your-api-key-here     # Token from step 1
MCP_TRANSPORT=http                    # "http" for Docker, "stdio" for Claude Desktop
MCP_PORT=8080

Running with Docker

docker compose up --build

The MCP server will be available at http://localhost:8080/mcp/.

If babybuddy is running on the same Docker network, set BABYBUDDY_URL to use its service name (e.g. http://babybuddy:8000).

Connecting to Claude Desktop (stdio mode)

Set MCP_TRANSPORT=stdio in .env, then add to your Claude Desktop claude_desktop_config.json:

{
  "mcpServers": {
    "babybuddy": {
      "command": "mise",
      "args": ["x", "[email protected]", "--", "uv", "run", "python", "-m", "babybuddy_mcp"],
      "cwd": "/path/to/babybuddy-mcp",
      "env": {
        "BABYBUDDY_URL": "http://localhost:8000",
        "BABYBUDDY_TOKEN": "your-api-key-here",
        "MCP_TRANSPORT": "stdio"
      }
    }
  }
}

Connecting via HTTP transport

Add to your MCP client config:

{
  "mcpServers": {
    "babybuddy": {
      "url": "http://localhost:8080/mcp/"
    }
  }
}

Available Tools

Tools are organized by domain with namespaced names (e.g. feedings_list_feedings).

Domain Tools
children list_children, get_child, create_child, update_child
diapers list_diaper_changes, create_diaper_change, update_diaper_change, delete_diaper_change
feedings list_feedings, create_feeding, update_feeding, delete_feeding
sleep list_sleep, create_sleep, update_sleep, delete_sleep
pumping list_pumping, create_pumping, update_pumping, delete_pumping
tummy_times list_tummy_times, create_tummy_time, update_tummy_time, delete_tummy_time
timers list_timers, get_timer, create_timer, update_timer, restart_timer, delete_timer
measurements list/create/update/delete × bmi, height, weight, head_circumference, temperature
medications list_medications, create_medication, update_medication, delete_medication
notes list_notes, create_note, update_note, delete_note, list_tags, create_tag, update_tag, delete_tag
profile get_profile

Most list_* tools accept tags and ordering filters where the Baby Buddy API supports them; create_note/update_note accept an image_path to attach an image. Children and tags are addressed by their slug (from list_children / list_tags), not numeric ID.

Environment Variables

Variable Required Default Description
BABYBUDDY_URL Yes — URL of your babybuddy instance
BABYBUDDY_TOKEN Yes — API token from babybuddy Settings
MCP_TRANSPORT No http Transport: http or stdio
MCP_HOST No 0.0.0.0 Host to bind (HTTP transport only)
MCP_PORT No 8080 Port to listen on (HTTP transport only)
REQUEST_TIMEOUT No 30.0 Timeout in seconds for babybuddy API calls
DEFAULT_PAGE_SIZE No 100 Max records returned per list call

Development

# Install tools and dependencies
mise install
mise run install

# Run tests
mise run test

# Lint
mise run lint

# Type check
mise run typecheck

Example prompts

  • “Log a feeding for Alice — she had breast milk from the left breast from 2pm to 2:25pm today”
  • “How many times did Alice eat yesterday?”
  • “Record a diaper change for Alice at 3pm — wet only”
  • “Start a sleep timer for Alice”
  • “Alice just woke up, end her sleep timer and log it”
  • “What was Alice’s weight at her last checkup?”
View the full README on GitHub

Install

This server does not publish a one-line install command.

Open the repository installation guide New to MCP? Start with the mcpskill.org guide →

Configuration

{ "mcpServers": { "babybuddy": { "command": "mise", "args": ["x", "[email protected]", "--", "uv", "run", "python", "-m", "babybuddy_mcp"], "cwd": "/path/to/babybuddy-mcp", "env": { "BABYBUDDY_URL": "http://localhost:8000", "BABYBUDDY_TOKEN": "your-api-key-here", "MCP_TRANSPORT": "stdio" } } } }