lifeos について
LifeOS MCP サーバーは、セルフホスト可能な LifeOS を、トークンで保護された API 経由で MCP クライアントに接続するローカルの stdio サーバーです。習慣、目標、タスク、家計、ノートを管理できます。AI クライアントから個人のデータを扱いたい利用者に向いています。
主な機能
- 01習慣、目標、タスクの管理
- 02家計の記録と収支の集計
- 03シークレットノートの保護
- 04lifeos_query による統合的な読み取り
- 05書き込みと削除を分けたツール構成
活用シーン
- 01チャットでダッシュボードを確認し習慣を記録
- 02目標を作成し、タスクを追加
- 03支出の記録と家計サマリーの確認
MCP 対応
stdio で動作し、専用トークンで API にアクセスして LifeOS のデータを読み書きするツールを MCP クライアントに提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y @edicodes/lifeos-mcpLIFEOS_BASE_URLURL of your Edi Life OS install (HTTPS, or http://localhost for development)LIFEOS_API_TOKENシークレットThe dedicated API token configured on your Edi Life OS serverLIFEOS_MCP_TIMEOUT_MSRequest timeout in milliseconds (100-120000, default 10000)ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
LifeOS MCP サーバー
公式の MCP SDK、Node 22.9+(24 推奨)、Zod バリデーションを使用するローカル stdio サーバーです。すべてのツールは HTTP 経由で LifeOS /api/v1 を呼び出します。SQL、ファイルシステム、任意の状態キー、設定、認証情報管理のツールは公開されません。
インストールと実行
cd mcp
npm ci
cp .env.example .env
npm start
無視対象の .env を設定します。
LIFEOS_BASE_URL=https://lifeos.example.com
LIFEOS_API_TOKEN=replace-with-your-dedicated-random-token
LIFEOS_MCP_TIMEOUT_MS=10000
PHP で設定した専用トークンを使用してください(32 文字以上。32 バイトのランダム値を生成してください)。最初に API をインストールしてください。リモートのオリジンでは、検証済みの HTTPS が必要です。HTTP が許可されるのは、localhost/127.0.0.1/::1 での開発時のみです。URL の認証情報、クエリ文字列、サブパスは拒否されます。認証情報の転送を防ぐため、リダイレクトは拒否されます。タイムアウトはレスポンスの解析にも適用され、100~120000 ms の範囲で指定する必要があります。標準出力にはプロトコルメッセージのみが出力され、起動時やエラー時にトークンや上流のレスポンス本文がログに記録されることはありません。
npm start は mcp から .env を読み込みます。node src/index.js を直接起動するクライアントでは、環境変数を指定する必要があります。実際のクライアント設定やトークンをコミットしないでください。
クライアント設定
このサーバーは npm に @edicodes/lifeos-mcp として公開され、MCP Registry に io.github.edrisranjbar/lifeos として登録されているため、クライアントはリポジトリをクローンせずに実行できます。
{
"mcpServers": {
"lifeos": {
"command": "npx",
"args": ["-y", "@edicodes/lifeos-mcp"],
"env": {
"LIFEOS_BASE_URL": "https://lifeos.example.com",
"LIFEOS_API_TOKEN": "replace-with-your-dedicated-random-token"
}
}
}
}
代わりに自分のチェックアウトを実行するには、クライアントで src/index.js を指定します。
{
"mcpServers": {
"lifeos": {
"command": "node",
"args": ["/absolute/path/lifeos/mcp/src/index.js"],
"env": {
"LIFEOS_BASE_URL": "https://lifeos.example.com",
"LIFEOS_API_TOKEN": "replace-with-your-dedicated-random-token"
}
}
}
}
Codex では、起動環境でトークンを設定し、公式の OpenAI ドキュメントに従って、ユーザーの ~/.codex/config.toml に転送します。
[mcp_servers.lifeos]
command = "node"
args = ["/absolute/path/lifeos/mcp/src/index.js"]
env_vars = ["LIFEOS_API_TOKEN"]
[mcp_servers.lifeos.env]
LIFEOS_BASE_URL = "https://lifeos.example.com"
LIFEOS_MCP_TIMEOUT_MS = "10000"
実際の絶対パスを使用してください。クライアント設定は自動ではインストールされません。この実装は stdio 専用です。リモート MCP URL が必要なクライアントでは、別途、認証付きのトランスポートブリッジ/サーバーが必要です。/api/v1 は MCP トランスポート URL ではありません。
ツール
| 領域 | ツール |
|---|---|
| あらゆる情報の読み取り | lifeos_query |
| 目標 | lifeos_create_goal, lifeos_update_goal, lifeos_delete_goal |
| タスク | lifeos_create_task, lifeos_update_task, lifeos_complete_task, lifeos_delete_task |
| 習慣 | lifeos_complete_habit, lifeos_uncomplete_habit |
| 財務 | lifeos_log_expense, lifeos_set_income |
| メモ | lifeos_create_note, lifeos_update_note, lifeos_delete_note |
読み取りはすべて、読み取り専用の lifeos_query ツールを通じて行います。読み取る対象は type で指定します。指定できる値は dashboard、goals、goal、tasks、task、habits、today_habits、finance_summary、expenses、incomes、notes、note です。goal、task、note には id が必要です。tasks では source、goal_id、board_id、column_id の各フィルターを任意で指定できます。task では、曖昧な ID を特定するために source、goal_id、board_id を指定します。finance_summary、expenses、incomes では period を任意で指定できます。notes と note では include_secret を指定できます。選択した type に適用されないパラメーターは、リクエストを送信する前に拒否されます。書き込みは個別のツールとして用意されているため、それぞれに独自の承認プロンプトが表示され、破壊的な操作には引き続きその旨が明示されます。
1.x からのアップグレード: バージョン 2.0.0 では、12 個の読み取りツール(lifeos_dashboard、lifeos_list_goals、lifeos_get_goal、lifeos_list_tasks、lifeos_get_task、lifeos_list_habits、lifeos_get_today_habits、lifeos_finance_summary、lifeos_list_expenses、lifeos_list_incomes、lifeos_list_notes、lifeos_get_note)が lifeos_query に置き換えられます。たとえば、{ id } を指定する lifeos_get_goal は、{ type: "goal", id } を指定する lifeos_query に置き換わります。古い名前を直接呼び出すクライアントは更新が必要です。起動時にツールを検出するクライアントは、再起動するだけでかまいません。
更新では id と patch オブジェクトを指定します。パッチで指定した目標の指標やタスクは、それぞれのリストを置き換えます。省略したフィールドはそのまま保持されます。タスクの作成には source とコンテナー ID が必要です。曖昧な ID を特定するため、タスクの更新・完了・削除では source とコンテナーのフィルターを任意で指定できます。ID を取得するには、まずタスクをクエリしてください。財務の金額の単位は Toman です。period の既定値は active です。習慣の日付の既定値はテヘランの今日の日付です。完了・未完了への変更と収入の設定は冪等です。削除するとデータは完全に消去され、破壊的な操作として明示されます。承認の動作はクライアントによって制御されます。
秘密のメモは、直接検索する場合も含め、既定では除外されます。notes/note のクエリ、または更新・削除で明示的に include_secret: true を指定するには、サーバーの許可が必要です。ダッシュボードに秘密の情報が含まれることはありません。トークンを返すツールはありません。成功時には簡潔な JSON テキストと構造化データ {data: ...} が返されます。失敗時には isError: true と、安全な code/message/status が返されます。
プロンプトの例:
- LifeOS のダッシュボードを表示してください。
- 3 か月後を期限として、「理想のホームスタジオを作る」という SMART 目標を作成してください。
- その目標に「吸音パネルを購入する」というタスクを追加してください。
- 今日の「読書」を完了にしてください。
- 食費として 450,000 Toman を記録してください。
- 現在の財務残高を表示してください。
- 「スタジオのアイデア」というメモを作成してください。
外部で編集した後は、ブラウザーを再読み込みしてください。古い UI の保存操作は API の変更を上書きせず、競合を返します。書き込み後にネットワークタイムアウトが発生する場合があります。冪等でない作成・支出記録の呼び出しを再試行する前に、保存された状態を確認してください。
テスト
npm test
モックによるエラー・タイムアウト・不正なレスポンスのテスト、スキーマのテスト、および実際の stdio ハンドシェイクは、既定で実行されます。使い捨ての MySQL/API 統合テストを行うには、ルートの README に従い、LIFEOS_TEST_BASE_URL=http://localhost:8000 を設定してください。統合テストはリモートホストを拒否し、tests/mysql_fixture.php を必要とします。本番用の設定が読み込まれることはありません。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。