Skip to main content
Glama
Tiago-Salles

Baby Routine MCP

by Tiago-Salles

Baby Routine MCP

MCP server (built on mcp 2.1.1, the official Python SDK) that exposes a baby's routine to any MCP client — Claude Desktop, Claude Code, or your own agent.

The server is deliberately thin: the API owns the tool contract (POST /api/assistant/tools/{name}), so this project is a transport adapter with no business rules to keep in sync.

Tools

Tool

What it answers / does

describe_resources

Which record types exist and what fields they take

log_record

Create a feeding, sleep, diaper, bath, dose, purchase, clothing item…

update_record / delete_record

Fix or remove a record

search_records

"Which bodies size S do I have?"

medication_report

"How much did I spend on this medication two months ago, and how many doses per day?"

routine_report

Per-day counts and averages for the routine

today_overview

Age, today's counts, medication adherence, active alerts

Related MCP server: pemr

Configure

cp .env.example .env

Variable

Meaning

BABY_ROUTINE_API_URL

Where the API lives (http://localhost:8010)

BABY_ROUTINE_SERVICE_TOKEN

Must match MCP_SERVICE_TOKEN in the API

BABY_ROUTINE_USER_ID

Firebase uid this server acts for

BABY_ROUTINE_ID_TOKEN

Alternative: a Firebase ID token

BABY_ROUTINE_TRANSPORT

stdio (local client) or streamable-http (remote)

Run

Local (stdio), from Claude Desktop or Claude Code — claude_desktop_config.json:

{
  "mcpServers": {
    "baby-routine": {
      "command": "baby-routine-mcp",
      "env": {
        "BABY_ROUTINE_API_URL": "http://localhost:8010",
        "BABY_ROUTINE_SERVICE_TOKEN": "change-me",
        "BABY_ROUTINE_USER_ID": "dev-user"
      }
    }
  }
}

Or with Claude Code: claude mcp add baby-routine -- baby-routine-mcp.

Remote (streamable HTTP), served by nginx at /mcp/:

make up          # http://localhost:8020
make logs
make stdio       # run on stdio, as a local MCP client would
make down

Tests

make test

They drive real MCP tool calls against a mocked API transport, asserting the outgoing HTTP request, the credentials and the error mapping.

Available Tools

8 tools
delete_recordC

Delete a record the mother asked to remove.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
resourceYes

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description only states 'Delete', which implies a destructive action, but does not disclose additional behavioral details such as irreversibility, cascading effects, or permission requirements. Without annotations, the description carries the burden and falls short.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence, which is concise, but the phrase 'the mother asked to remove' adds unnecessary and unclear context, making it less effective even though it is brief.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description lacks essential context such as parameter roles, when to use the tool, and any side effects. For a delete operation with two unexplained parameters, it is incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has two parameters (id and resource) with no descriptions, and the tool description provides zero explanation of their meaning or usage. Since schema coverage is 0%, the description fails to compensate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Delete') and the resource ('a record'), which distinguishes it from sibling tools like search_records and update_record. The verb and object are specific and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description offers no guidance on when to use this tool versus alternatives. It does not mention scenarios, prerequisites, or contrast with other operations like log_record or update_record.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

describe_resourcesA

List the record types this baby app stores and the JSON fields each accepts.

Call it before writing a record whose fields you are unsure about. Resources: babies, feedings, sleep_sessions, diaper_changes, baths, growth_measurements, observations, medications, medication_doses, medication_purchases, clothing_items, attachments.

ParametersJSON Schema
NameRequiredDescriptionDefault
resourceNo

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the behavioral burden. It implies a read-only listing but does not explicitly state that it makes no changes, nor does it explain the effect of the optional resource parameter (filtering vs. all). The resource list is given, but the parameter behavior is omitted.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact: one sentence for purpose, one for usage, and a resource list. It is front-loaded with the core action. The resource list is helpful but somewhat lengthy; overall it is well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple, but the description lacks an explanation of the optional parameter's behavior and the exact output shape. Given no output schema, the agent cannot know if the response includes field types or just names. However, the usage guidance is clear, so it is partially complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has one optional 'resource' parameter with no description (0% coverage). The description lists all resources but does not explain that the parameter filters to a specific resource or that omitting it returns all. The agent must infer this, which is insufficient for such a sparse schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('List the record types this baby app stores and the JSON fields each accepts') with a clear verb and resource. This is distinct from siblings like log_record or search_records, which handle writes and queries.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says 'Call it before writing a record whose fields you are unsure about,' providing a concrete trigger. However, it does not mention when not to use it or alternatives, so it lacks exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

log_recordB

Create one record.

resource is one of the known record types; data follows its schema (see describe_resources). Omit baby_id when the mother has a single baby. Example: log_record("feedings", {"started_at": "2026-03-15T14:00:00Z", "feeding_type": "bottle", "volume_ml": 120}).

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYes
resourceYes

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of disclosing behavioral traits. It mentions the action 'Create' but does not describe side effects, error conditions, idempotency, or permissions. It does add a useful note about omitting baby_id and references describe_resources for schema, but for a mutation tool this is thin on transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise, leading with the core purpose, then explaining parameters and providing an example. It is front-loaded and every sentence earns its place. No fluff or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a create tool with two parameters and no output schema, the description is reasonably complete: it gives an example, references describe_resources for schemas, and includes a domain-specific rule. It does not mention return values, errors, or what happens on success, which are gaps, but for a straightforward create operation it is adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It explains that 'resource' is a known record type and 'data' follows its schema, plus gives an example that illustrates both parameters. It also provides a parameter-specific hint (omit baby_id) that adds semantic value beyond the schema's bare types.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Create') and resource ('record'), and clarifies the structure with resource and data. It does not explicitly name sibling tools to differentiate, but the verb 'Create' clearly distinguishes it from update_record, delete_record, and search_records. The example further reinforces purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for creating new records and provides a concrete example, plus a specific rule about omitting baby_id for single-baby mothers. However, it does not explicitly state when not to use this tool or direct users to alternatives like update_record for modifications. The pointer to describe_resources helps but is not an explicit exclusion.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

medication_reportC

Cost and adherence per medication in a period.

Returns how much was spent, how many units were bought, how many doses were given, on how many days, and the average doses per day.

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYes
start_dateYes
medication_nameNo

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The 'Returns...' phrasing implies a read-only reporting operation, but with no annotations the description does not explicitly state that it has no side effects, nor does it mention auth or limit considerations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loads the core purpose, then lists the output metrics. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description enumerates return fields, which is helpful given no output schema, but it omits parameter semantics and does not clarify whether medication_name is a filter or grouping key.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description does not explain start_date, end_date, or the optional medication_name filter, nor their expected formats or semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly identifies a medication-specific report of cost and adherence metrics over a period, and enumerates the returned values. It does not explicitly contrast with sibling tools like routine_report, so not a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to choose this over sibling tools such as routine_report or search_records. The description states what it does but not the circumstances or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

routine_reportC

Per-day counts and period averages for feedings, diapers, sleep and baths.

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYes
resourcesNo
start_dateYes

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It does not mention whether the operation is read-only, any permission requirements, rate limits, or what the response format looks like. This is a significant gap for a reporting tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that is front-loaded with the core purpose. It has no fluff or redundancy, but it is so brief that it sacrifices completeness for brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a report tool with three parameters, no output schema, and no annotations, the description is severely incomplete. It fails to explain parameter semantics, expected output, or any constraints, making it impossible for an agent to call it correctly without additional information.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate by explaining the parameters. It does not mention start_date, end_date, or resources at all, leaving all three parameters unexplained and providing no value beyond the raw schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool produces per-day counts and period averages for feedings, diapers, sleep, and baths. It specifies the resource and output nature, distinguishing it from medication_report and today_overview by listing the categories, though it lacks an explicit verb like 'generate' or 'retrieve'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives such as today_overview or medication_report. The description does not mention any conditions, exclusions, or preferred contexts, leaving the agent to infer usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_recordsB

Read records of one resource, filtered by date range (YYYY-MM-DD) and exact fields.

Example: search_records("clothing_items", filters={"size": "S", "category": "body"}) answers "which bodies size S do I have?".

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
filtersNo
end_dateNo
resourceYes
start_dateNo

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It states 'Read' which implies a non-mutating operation, but it does not mention side effects, error behavior, pagination, or that it returns a list. A simple read operation is adequately transparent at a basic level.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is brief and includes an illustrative example, making it easy to grasp the tool's usage. It is well-structured with no redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple nature of the tool, the description covers the core purpose but lacks details on parameter semantics (e.g., limit behavior, filters object structure, date inclusivity). No output schema is needed, but parameter completeness is moderate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It mentions date range and exact fields but does not explicitly map them to start_date/end_date or filters. The example shows resource and filters, but omits start_date, end_date, and limit, leaving their meaning and defaults underspecified.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Read records'), the object ('one resource'), and the filtering criteria ('date range (YYYY-MM-DD) and exact fields'). It is distinct from sibling tools like describe_resources (metadata) or log_record (mutation).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly mention when to use this tool over alternatives, such as 'use this for searching records, not for describing schema'. It relies on implicit inference from the wording, lacking direct guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

today_overviewC

Today's snapshot: age, counts so far, medication adherence and active alerts.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description does not mention side effects, read-only nature, or error conditions. It is unclear whether this tool modifies data or just reads it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is brief and to the point, listing four key data elements without unnecessary elaboration. It is well-structured for a quick overview.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given there is no output schema, the description partially conveys what the tool returns (age, counts, medication adherence, active alerts), but 'counts' is vague and the structure (single object vs. list) is not specified. This leaves significant gaps for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the empty schema is fully covered. The description does not add parameter-specific information, but that is acceptable given there are no parameters to explain.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states it provides a 'snapshot' of today's data but lacks an explicit verb (e.g., 'retrieves' or 'lists'). It mentions specific data elements (age, counts, medication adherence, active alerts) but the action is ambiguous, making it unclear whether this is a read operation or something else.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to use this tool versus alternatives like medication_report or routine_report. The description does not specify scenarios or contexts where this snapshot is preferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_recordB

Update fields of an existing record, e.g. marking a clothing item as too_small.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
changesYes
resourceYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must convey behavior. It states that the tool updates an existing record (implying mutation), but it does not disclose side effects, error handling, or permissions. The basic mutation behavior is transparent, but nothing more.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that directly states the purpose and provides an example. It wastes no words and is easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple, but the lack of parameter explanations and output schema leaves ambiguity around usage and expected response. Without context about resource types or the structure of changes, it is not fully complete for an agent to invoke reliably.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

None of the three parameters (id, changes, resource) are described in the schema or the description. The example hints at what 'changes' might contain, but it is not explicit, leaving ambiguity about the expected structure and meaning of each parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (update fields) and gives a concrete example (marking a clothing item as too_small), which distinguishes it from sibling tools like delete_record or search_records.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not provide any guidance on when to use this tool over others, nor does it mention typical scenarios beyond the example. It lacks explicit instructions on selecting this tool instead of alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 8 tool updatesv1.0.0
    • First observeddelete_record
    • First observeddescribe_resources
    • First observedlog_record
    • First observedmedication_report
    • First observedroutine_report
    • First observedsearch_records
    • First observedtoday_overview
    • First observedupdate_record

TDQS

B3.1/5.0

Scored across 8 tools

Disambiguation4/5

Most tools have clearly distinct purposes: CRUD operations (log/update/delete/search), schema discovery, and specialized reports. However, routine_report and today_overview both return daily counts for feedings/diapers/sleep, so an agent might need to read descriptions carefully to pick the right one.

Naming Consistency4/5

The majority of tools follow a verb_noun pattern (describe_resources, log_record, update_record, delete_record, search_records), but the reporting tools break this with noun_noun names (routine_report, medication_report, today_overview). The convention is otherwise consistent and readable.

Tool Count5/5

Eight tools is well-scoped for a baby routine tracker: generic CRUD via log/update/delete/search, a schema explorer, and three reporting/overview tools. Each tool serves a distinct need without redundancy.

Completeness5/5

The generic log/update/delete/search surface covers all twelve resource types listed by describe_resources, so no record type is a dead end. Reporting covers routine events, medications, and a daily snapshot, and missing analytics like growth charts are not core to the stated purpose.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    B
    maintenance
    MCP server that provides pregnancy, childbirth, and childcare information via public APIs, allowing users to query vaccination schedules, prenatal checkups, maternity benefits, and more through natural language.
    1
    -
  • F
    license
    Not graded
    quality
    B
    maintenance
    A local-first, family-scale medical record framework that provides a Python CLI engine and MCP server for ingesting, deduplicating, querying, and generating medical records from source documents.
    -
  • F
    license
    Not graded
    quality
    B
    maintenance
    MCP server for infant fever management that tracks symptoms, medication, and lab results, providing guideline-based escalation levels, pharmacokinetic predictions, and structured clinical reports.
    -
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables personal productivity management by exposing MCP tools to create, retrieve, list, update, complete, and delete tasks and calendar events, with validation and conflict detection.
    -