mcpField
A
AI Monk Index

AI Monk Index

リモート
aniccaai.com生産性2今日更新
リポジトリ公式サイト

AI Monk Index について

Aniccaは、習慣づくりと時間どおりの起床を支援する行動変容エージェントで、iOSアプリと音声による起床SaaSを備えています。リポジトリには、電話で起床を促し、位置情報の更新から遅れを検知するセルフホスト可能なバックエンドがあります。

主な機能

  1. 01音声通話による起床通知
  2. 02遅延検知と段階的な通知
  3. 03OwnTracksによる位置情報更新
  4. 04iOSの習慣管理アプリ
  5. 05セルフホスト可能な起床バックエンド

活用シーン

  1. 01設定時刻に電話で起床を促す
  2. 02予定に遅れる可能性を検知する
  3. 03位置情報から自宅を離れたか確認する

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://aniccaai.com/.netlify/functions/ai-monk-mcp
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

ツール

詳細

→ Daisuke134/life-manager へ移行済み

Anicca — 行動変容エージェント+起床SaaS

有害なパターンを断ち切り、より良い習慣を身につけるために支援するプロアクティブなエージェントです。2つのサービスは、同じコードベースを共有しています。

サービス内容状況
iOS appオンボーディング → 13種類の問題 → スケジュールに沿ったリマインダー → 1画面のカード型UXApp Storeで公開中(1.9.x)
Wake-up SaaS$9.99/mo — AIが毎朝電話をかけ、遅れそうな場合は段階的に対応しますhttps://aniccaai.com/alarm で公開中

起床SaaSでは、録音された着信音ではなく、PSTN経由で応答する実際の音声エージェント「Anicca」を使用します。Aniccaはあなたのカレンダー、自宅の場所、勤務先への出勤時刻を把握しており、予定より遅れている場合は電話をかけ続け、任意で上司に報連相(状況連絡)メールを送信します。


リポジトリの構成

パス内容
aniccaios/iOSアプリ(Swift / SwiftUI、iOS 15以降)
apps/api/Node.jsモバイルバックエンド(Railway)
apps/landing/マーケティングサイト+チェックアウト(Netlify、aniccaai.com)
apps/alarm-backend/起床SaaS(今回オープンソース化したもの)
apps/alarm-backend/bridge/Gemini Live ⇄ Twilio Media Streams WebSocketブリッジ(Node)
apps/alarm-backend/scheduler/毎分アラーム+15分間隔の遅延判定cron(Python、Railwayワーカー)
maestro/E2Eテストフロー

起床SaaSの仕組み

User signs up at aniccaai.com/alarm
        ↓ Stripe webhook
Supabase `subscriber_profiles` row created (phone, wake_time, tz, name)
        ↓
scheduler/alarm_scheduler.py  (every 60s, multi-tenant)
        ↓  it's wake_time in user's tz, and not fired today
scheduler/wake_loop.py        →  POST /dialout on bridge
        ↓
bridge/server.js              →  Twilio Calls API
        ↓
Twilio → user's phone → bridge WebSocket → Gemini Live (Charon voice)
        ↓
Real two-way conversation until user is verifiably awake.

Then, every 15min from 6:00-23:00 local:
scheduler/saas_lateness.py    →  reads gcal + OwnTracks location
        ↓  ETA - now < buffer
Calls again with lateness persona, optionally emails stakeholders.

OwnTracksのセットアップ(遅延検出に必須)

遅延判定ループでは、ユーザーが現在どこにいるかを把握する必要があります。プライバシーに配慮しており(データはユーザー自身が管理)、バッテリーにも配慮したオープンソースの位置情報送信アプリであるOwnTracksを使用します。

ユーザーのスマートフォンでの初回セットアップ
  1. OwnTracksをインストール

  2. HTTP送信を設定(Settings → Preferences → Connection)

    • Mode:HTTP
    • URL:https://<your-anicca-alarm-backend>.up.railway.app/ingest/owntracks?token=<USER_TOKEN>
      • トークンは、登録後にaniccaai.com/alarm/setupから取得できます。
    • Identification → DeviceID:任意の値(例:iphone)
    • Identification → TrackerID:2文字(例:DA)
  3. 重要:モードは_Significant_ではなく、_Move_に設定してください

    • OwnTracksを開く → ⓘアイコン → Modeセレクター
    • Moveを選択
    • 理由:OwnTracksのドキュメントによると、_Significant_モードでは端末が静止している間、位置情報は送信されません。ユーザーがベッドで眠っていると、何時間も位置情報の更新が送られず、Aniccaには古い位置情報が表示され、自宅を出たかどうか判断できなくなります。_Move_モードでは、5分ごと、または100 m移動するごと(いずれか早い方)に位置情報を送信します。これは遅延判定ループに必要な動作です。バッテリー消費はおおむねナビゲーションアプリと同程度のため、ユーザーには低電力モードの例外設定をおすすめします。
  4. 位置情報への常時アクセスを許可(iOS:「常に許可」)

    • そうしないと、iOSがバックグラウンドでの送信を警告なしに制限します。
  5. 動作を確認

    • aniccaai.com/alarm/setupにアクセスし、スマートフォンを持って歩き回ってから5分以内に「Last seen」のタイムスタンプが更新されることを確認します。
MQTTではなくHTTPを使う理由

HTTPパブリッシャーのみをサポートしています(運用が簡単で、ブローカーを稼働させる必要がないため)。MQTTは後日対応予定です。

Appleの「探す」や「重要な位置情報の変更」を使わない理由
  • 「探す」には公開APIがありません。
  • iOSの「重要な位置情報の変更」APIは、500m以上の移動後、5分経過してからしか起動しないため、ベッドで眠っている人には役立ちません。

セルフホスト

自分自身、または少人数のグループ向けに独自の起床エージェントを運用する場合は、この低コストな方法を利用できます。

必要なサービス(無料またはほぼ無料のプラン)
サービス用途無料プラン?
Twilio電話番号+発信通話電話番号は月額$1+約$0.015/分
Google AI StudioGemini Live APIはい(キーごとのクォータ)
Supabase加入者データベースはい
RailwayブリッジとスケジューラーのホスティングHobbyプランは月額$5
Stripe課金(自分でセルフホストする場合は不要)—
環境変数

Railway の(apps/alarm-backend/bridge サービス)と (apps/alarm-backend/scheduler ワーカー)に設定してください。

# Voice + LLM
GEMINI_API_KEY=...
GEMINI_LIVE_MODEL=gemini-2.5-flash-native-audio-preview-09-2025
GEMINI_VOICE=Charon

# Telephony
TWILIO_ACCOUNT_SID=AC...
TWILIO_AUTH_TOKEN=...
TWILIO_PHONE_NUMBER=+1...

# Subscriber DB
SUPABASE_URL=https://<project>.supabase.co
SUPABASE_SERVICE_ROLE_KEY=eyJ...   # service role, not anon

# Stakeholder ETA (lateness loop only)
GOOGLE_API_KEY=...                  # Google Maps Directions API
[email protected]         # which Google account holds the user's calendar
GOG_KEYRING_PASSWORD=...

# Optional integrations
COMPOSIO_API_KEY=...                # 1-click calendar OAuth
SLACK_BOT_TOKEN=xoxb-...            # ops alerts
SLACK_CHANNEL_ID=C...

# Networking
PORT=8787
PUBLIC_BASE_URL=https://<railway-domain>
デプロイ
# bridge (Node)
cd apps/alarm-backend/bridge
railway link
railway up

# scheduler (Python worker — runs every minute via Procfile)
cd ../scheduler
railway link
railway up

Supabase のスキーマと Stripe の Webhook は、本番の aniccaai バックエンドにあります。単独でセルフホストする場合は、最小限のスキーマを別途公開する予定です。


スタック

  • iOS:Swift、SwiftUI、RevenueCat、Mixpanel
  • 音声:Pipecat+Gemini Live(ネイティブ音声 S2S)
  • 電話:Twilio Media Streams
  • バックエンド:Node.js(ブリッジ)、Python(スケジューラー)、Express、Railway、Supabase
  • テスト:Maestro(E2E)

ステータス

コンポーネント状態
iOS アプリ稼働中(1.9.x)
Alarm SaaS稼働中、2026-05-23 から有料顧客あり
遅刻防止ループ稼働中、OwnTracks の Move モードが必要(上記参照)
セルフホスト用ドキュメント最小限(このファイル)— PR での改善を歓迎します

ライセンス

このコードは、学習やセルフホストに利用できるよう OSS として公開されています。商用利用、商標、および「Anicca」という名称は権利者が留保します。公開後に LICENSE をご確認ください。

お問い合わせ

  • ランディングページ:https://aniccaai.com
  • 問題報告:このリポジトリの GitHub Issues

コメント

MCP は初めてですか?

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

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