mcpField
N
Nestling

Nestling

ローカル
github.com/kparmesarAI・エージェント24 週間前に更新

Nestling について

Nestlingは、赤ちゃんの睡眠、授乳、おむつ、日記データを読み取り記録するTypeScriptクライアント、CLI、MCPサーバーです。Nestlingユーザー向けで、書き込みは新規記録の作成に限られます。

主な機能

  1. 01赤ちゃんのプロフィールと日々の記録の読み取り
  2. 02睡眠、授乳、おむつ、日記の記録
  3. 03CLIまたはTypeScriptライブラリでの利用
  4. 04柔軟な時刻形式の解析
  5. 05新規データの作成のみ

活用シーン

  1. 01赤ちゃんの最近の睡眠や授乳履歴の確認
  2. 02MCP対応アシスタントからのおむつ交換記録
  3. 03ターミナルからの日記記録の追加
  4. 04指定した赤ちゃんの日々のデータの読み取り

MCP 対応

Nestlingのアカウントや赤ちゃんのデータをMCPツールとして公開し、記録の読み取りと睡眠、授乳、おむつ、日記の新規作成に対応します。ローカルクライアント向けのstdioと、リモート接続向けのHTTPをサポートします。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

nestling-ts

Nestling baby tracking app向けのTypeScriptクライアント、CLI、MCP サーバーです。Nestlingアカウントの睡眠、授乳、おむつ、日誌データを、ターミナルやTypeScript/Bunライブラリ、またはClaude、ChatGPTなどのAI アシスタント向けModel Context Protocolサーバーを通じて読み取り、記録できます。

新規作成のみ可能です。 APIでは、アプリと同期する新しい記録を追加できます。既存の記録の更新や削除はできないため、データは常に安全です。

要件

  • Bun 1.3以上 — このパッケージはビルド手順なしでTypeScriptソースを提供するため、Bunで実行する必要があります(Nodeでは実行できません)。
  • Nestlingアカウント(GoogleまたはAppleでサインイン)
  • Nestling APIトークン(アプリで生成します:Settings → Data → API Token)

インストール

npmから:

bun add -g nestling-ts
# provides `nestling` and `nestling-mcp`

# or add it to a project as a library
bun add nestling-ts

ソースをチェックアウトした場合:

cd nestling-ts
bun install
bun link          # makes `nestling` available globally

CLI

クイックスタート
nestling login
# API Token: (from Nestling app → Settings → Data → API Token)
# Timezone: Europe/London
# ✓ Authenticated as [email protected]! Found 1 child(ren).

nestling babies
# • Eloise (id: abc-123)  8 months old

bun linkを実行していない場合は、代わりにパッケージスクリプトを使用してください:

bun run --cwd /path/to/nestling-ts nestling -- login
bun run --cwd /path/to/nestling-ts nestling -- babies
コマンド
# Sleep
nestling sleep history --days 3
nestling sleep log --start "yesterday 8pm" --end "today 6:30am"
nestling sleep log --start 2026-05-07T20:00:00Z --end 2026-05-08T06:30:00Z

# Feed
nestling feed history --days 2
nestling feed log --at "now" --type Bottle --amount 180
nestling feed log --at "30m ago" --type Breastfeeding --side Left

# Nappy
nestling nappy history --days 2
nestling nappy log --at "5 minutes ago" --type Wet

# Diary
nestling diary history --days 7
nestling diary log --at "today 3pm" --text "First time clapping!" --tags milestone,funny

# Multiple babies
nestling --baby "Eloise" sleep history

すべてのhistoryコマンドは、機械可読な出力を得るための--jsonに対応しています。--babyフラグでは、名前またはIDで特定の子どもを選択できます(デフォルトは最初の子どもです)。

時刻の形式

すべての時刻引数では、人が読みやすい柔軟な形式を使用できます:

形式例
ISO 86012026-05-07T20:00:00Z
日付+時刻2026-05-07 8pm、2026-05-07 20:00
相対的な日付today 3pm、yesterday 8:30pm、tomorrow 7am
時刻のみ(今日)3pm、3:30pm、15:30
相対的な時刻now、5 minutes ago、2 hours ago、30m ago

時刻は、設定済みのタイムゾーン(環境変数NESTLING_TIMEZONEまたは~/.config/nestling/config.json内のtimezone)を使用して解決されます。

認証

設定は~/.config/nestling/config.jsonに保存されます。

  • 対話形式でログイン:nestling login
  • 環境変数(設定ファイルより優先されます):
    • NESTLING_API_TOKEN
    • NESTLING_TIMEZONE(任意)

ライブラリの使用

import { Nestling } from "nestling-ts";

const client = new Nestling({
  apiToken: process.env.NESTLING_API_TOKEN!,
});

// Authenticate
await client.signIn();

// Account & babies
const user = await client.getUser();
const babies = await client.babies.list();
const baby = await client.babies.get(babies[0].id);

// History (all take a DateRange)
const range = {
  start: new Date("2026-05-01T00:00:00Z"),
  end: new Date("2026-05-08T00:00:00Z"),
};
await client.sleep.list(baby.id, range);
await client.feed.list(baby.id, range);     // breast | bottle | solids | expressing
await client.nappies.list(baby.id, range);  // wet | dirty | both
await client.diary.list(baby.id, range);    // journal entries & milestones

// Log new entries
await client.sleep.create(baby.id, {
  start: "2026-05-07T20:00:00Z",
  end: "2026-05-08T06:30:00Z",
});

await client.feed.create(baby.id, {
  timestamp: "2026-05-07T12:00:00Z",
  type: "Bottle",
  amountMl: 180,
});

await client.nappies.create(baby.id, {
  timestamp: "2026-05-07T14:00:00Z",
  type: "Wet",
});

await client.diary.create(baby.id, {
  timestamp: "2026-05-07T15:00:00Z",
  text: "First time clapping!",
  tags: ["milestone"],
});

await client.close();
クラウドとの互換性

nestling-tsは、APIで扱う名前を使いやすく保ちながら、iOS互換のクラウドモデルに書き込みます。たとえば、client.feed.create()ではamountMlとdurationSecondsを受け付け、Supabaseではフィードのペイロードキーamountとdurationとして保存します。エントリのペイロードは、現在のiOS同期実装に合わせて、entries.dataにJSON文字列として書き込まれます。

新しいツールやSupabaseへの直接書き込みを追加する場合は、ルートREADMEの標準的なエントリーワイヤーフォーマットに従ってください。特に、フィードの値にはBreastfeeding、Bottle、Solids、Expressingを、おむつの値にはWet、Dirty、Bothを、睡眠のsource値にはmanualまたはtimerを使用してください。

MCP サーバー

nestling-tsは、nestling-mcpバイナリとしてMCP サーバーを提供します。ライブラリを一連のMCPツールとしてラップしており、Claude、ChatGPTなど、MCPに対応するほかのLLMインターフェースからAI エージェントが呼び出せます。

サーバーは2つのトランスポートモードに対応しています:

  • stdio(デフォルト) — Claude Desktop、Claude Code、Cursorなどでのローカル利用向けです。
  • HTTP(--http) — Claudeのカスタムコネクター、ChatGPTのカスタムコネクター、またはネットワーク経由のMCP互換クライアント向けの、リモートStreamable HTTPトランスポートです。
Claude Desktop / Claude Code(stdio)

ソースのチェックアウト先を指定します:

{
  "mcpServers": {
    "nestling": {
      "command": "bun",
      "args": ["run", "nestling-mcp"],
      "cwd": "/absolute/path/to/nestling-ts",
      "env": {
        "NESTLING_API_TOKEN": "your-token-from-nestling-app",
        "NESTLING_TIMEZONE": "Europe/London"
      }
    }
  }
}

注: コマンドにはnode/npxではなく、bun/bunxを指定してください。このパッケージは生のTypeScriptとして公開されており、Bunがそのまま実行します。

Claude カスタムコネクター(リモート MCP/HTTP モード)

ホステッド(最も簡単 — セットアップ不要):

  1. Claude で カスタマイズ → コネクター → カスタムコネクターを追加 に移動します(Pro/Max)。または、組織のオーナーに追加を依頼します(Team/Enterprise)。
  2. URL に https://mcp.nestling-app.com/mcp を設定し、追加 をクリックします。
  3. Claude のサインインページが開いたら、Nestling の 設定 → データ → API トークン から API トークンを貼り付けます。
  4. 完了です。Claude が赤ちゃんのデータを読み取り、記録できるようになります。

ngrok もポート設定もセルフホストも不要です。各ユーザーは OAuth を通じて、自分のトークンで認証します。

セルフホストの場合:

MCP サーバーを HTTP モードで実行します。

# Single-user (token from env)
export NESTLING_API_TOKEN="your-token"
bun run nestling-mcp -- --http
# Nestling MCP server (HTTP) listening on http://localhost:8787/mcp

# Multi-user (no env token; each request authenticates via Bearer header)
bun run nestling-mcp -- --http
# Users pass their own token as Authorization: Bearer <token>

PORT=3000 bun run nestling-mcp -- --http を実行すると、カスタムポートを設定できます。

外部からアクセスできるようにするには、サーバーを HTTPS の背後に配置します(Cloudflare Tunnel、nginx など)。Claude は Anthropic のクラウドから接続するため、localhost は使用できません。

ChatGPT カスタムコネクター

ChatGPT では、GPT Builder のカスタムコネクターとして MCP ツールサーバーを使用できます。ホステッドエンドポイントを使うか、独自のサーバーを実行します。

  1. ホステッド URL を使うか、サーバー上で bun run nestling-mcp -- --http を実行します。
  2. ChatGPT の GPT Builder → アクション → 「アクションを追加」に移動します。
  3. サーバー URL に /mcp エンドポイントを設定します。
  4. 認証方式に Bearer を設定し、Nestling API トークンを貼り付けます。
  5. ChatGPT が MCP プロトコルを通じてツールを自動的に検出します。
ツール
ツール用途
get_capabilities検出:利用可能なデータソースとツール
get_userアカウントのプロフィール(メールアドレス、ユーザー ID)
list_babies赤ちゃんの一覧(他のすべてのツールに id を渡します)
get_baby赤ちゃんの詳細(ニックネーム、生年月日など)
list_sleep指定した期間の赤ちゃんの睡眠セッション
list_feeds指定した期間の授乳記録(母乳、哺乳瓶、固形食)
list_nappies指定した期間のおむつの記録
list_diary指定した期間の日記の記録
create_sleep新しい睡眠セッションを記録(開始時刻と終了時刻)
create_feed新しい授乳を記録(母乳、哺乳瓶、固形食、搾乳)
create_nappyおむつ交換を記録
create_diary新しい日記を記録

読み取りツールはデータを返し、書き込みツールは新しい記録を作成します(更新や削除はできません)。

レスポンスエンベロープ
{
  "data": [...],
  "totalResults": 12
}
エラーエンベロープ
{
  "error": "BabyNotFoundError",
  "message": "Baby not found: abc",
  "category": "not_found",
  "retryable": false,
  "recovery": "Use client.babies.list() (or the list_babies MCP tool) to get valid baby IDs."
}

セキュリティ

  • 新規作成のみ可能 — API は新しい記録を追加できますが、既存の記録を更新または削除することはできません。
  • ユーザー単位のアクセス制限 — Supabase Auth を通じて通常の Nestling ユーザーとして認証します。行レベルセキュリティにより、自分の赤ちゃんとデータ(および共有されたデータ)のみアクセスできます。
  • サービスキー不使用 — Supabase の anon キーを使用し、サービスロールキーは使用しません。anon キーは安全に配布でき、RLS で保護されたアクセスのみを許可します。
  • ローカルまたはセルフホストのリモート — stdio モードでは、認証情報はお使いのマシンに保存されます。HTTP モードでは、各ユーザーが自分の Bearer トークンを使ってセッションごとに認証します。
  • ユーザーごとの分離 — HTTP サーバーはトークンごとに個別の認証済みセッションを作成します。ユーザーは Supabase RLS を通じて、自分のデータのみアクセスできます。
  • 有効期間の短いセッション — Supabase JWT は 1 時間後に期限切れとなり、自動更新されます。長期間有効な API トークンは、セッションの初期設定にのみ使用されます。

API トークンの取得

  1. スマートフォンでNestlingアプリを開きます。
  2. Settings → Data → API Tokenに移動します。
  3. Copy Tokenをタップします。
  4. トークンをMCP設定または環境変数に貼り付けます。

トークンはアカウントに紐付けられています。API Tokenをもう一度タップすれば、いつでもトークンを取り消せます。新しいトークンを生成すると、古いトークンは無効になります。

API リファレンス

new Nestling(options)
オプション型備考
apiTokenstringNestlingアプリのAPIトークン
読み取りメソッド
  • client.babies.list() → Baby[]
  • client.babies.get(babyId) → Baby
  • client.sleep.list(babyId, range) → SleepEntry[]
  • client.feed.list(babyId, range) → FeedEntry[]
  • client.nappies.list(babyId, range) → NappyEntry[]
  • client.diary.list(babyId, range) → DiaryEntry[]
書き込みメソッド
  • client.sleep.create(babyId, input) → string(新しいエントリーID)
  • client.feed.create(babyId, input) → string
  • client.nappies.create(babyId, input) → string
  • client.diary.create(babyId, input) → string
エラークラス
  • NestlingError — category、retryable、recoveryを含む基底クラス
  • AuthenticationError — 認証情報が正しくないか、セッションの有効期限が切れています
  • BabyNotFoundError — 不明な赤ちゃんIDです
  • InvalidDateRangeError — start >= end、または入力がDate型ではありません

開発

bun install
bun link               # register `nestling` and `nestling-mcp` on your PATH
bun test               # run the test suite
bun run lint           # tsc --noEmit
bun run nestling       # run the CLI (e.g. bun run nestling -- babies)
bun run mcp            # start the MCP server locally

音声アシスタント

Siri

iOSアプリに組み込まれているため、設定は不要です。次のように話しかけてください。

  • 「Nestlingでおむつを記録」
  • 「Nestlingで睡眠を開始」
  • 「Nestlingで母乳を記録」
  • 「Nestlingで哺乳瓶を記録」

iOS 16以降のショートカットアプリを通じて動作します。

Alexa

alexa/ディレクトリには、音声で授乳、睡眠、おむつを記録するセルフホスト可能なAlexaスキルが含まれています。ご自身のAWSアカウントでLambda関数として実行されます。

音声コマンド
実行したい操作話しかける内容
睡眠を開始する"Alexa, tell Nestling to start sleep"
睡眠を終了する"Alexa, tell Nestling to stop sleep"
睡眠を一時停止/再開する"Alexa, tell Nestling to pause sleep"
おしっこで濡れたおむつを記録する"Alexa, tell Nestling to log a wee nappy"
うんちで汚れたおむつを記録する"Alexa, tell Nestling to log a poo nappy"
おしっことうんちの両方で汚れたおむつを記録する"Alexa, tell Nestling to log a wet and dirty nappy"
授乳を開始する"Alexa, tell Nestling to start nursing"
左右を切り替える"Alexa, tell Nestling to switch sides"
授乳を終了する"Alexa, tell Nestling to stop nursing"
哺乳瓶を記録する"Alexa, tell Nestling to log a 120 ml bottle"
固形食を記録する"Alexa, tell Nestling to log sweet potato"
最後の睡眠を確認する"Alexa, ask Nestling for the last sleep"
最後の授乳を確認する"Alexa, ask Nestling for the last feed"
最後のおむつを確認する"Alexa, ask Nestling for the last nappy"

nappy/diaperとwee/peeのどちらも使用できます。

前提条件
  • CloudFormationスタックとLambda関数をデプロイする権限を持つAWSアカウント
  • Alexa Developerアカウント(無料)
  • 赤ちゃんを1人以上登録したNestlingアカウント
  • Nestlingアプリから取得したAPIトークン(Settings → Data → API Token for AI Access)
  • Node.js 20以降とnpm
  • SAM CLI
デプロイ
cd alexa
npm install
npm run build
sam build
sam deploy --guided

SAMから次の情報が求められます。

パラメーター説明例
NestlingApiTokenアプリのAPIトークン(base64文字列)
Timezone音声で伝える時刻に使用するIANAタイムゾーンEurope/London

スタックのデプロイ後、出力からLambda ARNをコピーします。

Alexa に接続する
  1. Alexa Developer Console を開きます
  2. 新しい Custom スキルを作成します(ホスティングでは「Provision your own」を選択します)
  3. Build → Interaction Model → JSON Editor に移動します
  4. alexa/skill/interactionModel.json の内容を貼り付けます
  5. Endpoint で AWS Lambda ARN を選択し、Lambda ARN を貼り付けます
  6. Save Model をクリックしてから、Build Model をクリックします
  7. Alexa シミュレーターまたはデバイスでテストします
更新

コードを変更した後、または新しい API トークンを取得した後:

cd alexa && npm run build && sam build && sam deploy
セキュリティ
  • API トークンは暗号化された Lambda 環境変数(NoEcho)として保存されます
  • ログに記録されたり、Alexa の応答に含まれたりすることはありません
  • Supabase のクエリはすべて Row Level Security を通じて実行されるため、トークンは自身のデータにのみアクセスできます

制限事項

  • 作成のみ。 更新や削除はできません。新しいエントリはアプリに自動で同期されます。
  • Bun のみ。 CLI とライブラリには Bun が必要です。Alexa スキルは Node.js を使用します(Lambda としてデプロイされます)。

ライセンス

MIT

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。