🚀 MCP - DayOne
このプロジェクトは、Model Context Protocol (MCP) を介してClaude DesktopがDay Oneジャーナルと連携できるようにするサーバーです。自然な会話を通じて、Claudeがジャーナルエントリーの作成、利用可能なジャーナルの一覧表示、エントリー数の取得などを行えるようになります。
🚀 クイックスタート
このMCPサーバーは、Model Context Protocolを通じてClaude DesktopがDay Oneジャーナルとやり取りできるようにします。Claudeは自然な会話を通じて、ジャーナルエントリーの作成、利用可能なジャーナルの一覧表示、エントリー数の取得などを直接行うことができます。
✨ 主な機能
✍️ 書き込み操作 (Day One CLI)
- 📝 豊富な内容とメタデータを持つジャーナルエントリーを作成
- 📎 エントリーに添付ファイル(写真、動画、音声、PDF)を追加
- ⭐ エントリーをお気に入り/重要としてマーク
- 📍 エントリーに位置座標を追加
- 🕐 タイムゾーンをサポートした高度な日付/時間処理
📖 読み取り操作 (直接データベースアクセス)
- 📖 新機能: 完全なメタデータを持つ最近のジャーナルエントリーを読み取り
- 🔍 新機能: テキスト内容でエントリーを検索
- 📚 新機能: エントリー数と統計情報を含む実際のジャーナルを一覧表示
- 📊 新機能: データベースから実際のエントリー数を取得
- 🏷️ 新機能: エントリーのタグ、日付、メタデータを表示
🔧 技術的な特徴
- 適切なエラーハンドリングと検証
- 読み取り操作には直接SQLiteデータベースを統合
- ハイブリッドアプローチ: 書き込みにはCLI、読み取りにはデータベースを使用
- 🚀
uv を使用した簡単なインストール
📦 インストール
⚡ クイックスタート (5分以内)
このMCPサーバーは、ゼロコンフィグレーションインストールを目的として設計されており、1つのファイルパスを変更するだけです。
1. 前提条件のインストール (一度だけのセットアップ)
Day One CLIのインストール:
- Mac App StoreまたはDay OneのウェブサイトからDay Oneをダウンロードしてインストール
- Day One CLIはアプリに自動的に含まれているため、別途インストールする必要はありません!
- 動作を確認する:
dayone2 --version
Pythonとuv:
curl -LsSf https://astral.sh/uv/install.sh | sh
dayone2 --version
2. クローンとセットアップ (自動依存関係管理)
git clone <repository-url>
cd mcp-dayone
uv sync
3. インストールの検証 (組み込みテスト)
uv run python test_setup.py
このテストスクリプトは自動的に以下を行います:
- ✅ Day One CLIがアクセス可能か検証
- ✅ データベース接続をテスト
- ✅ MCPサーバーの機能を検証
- ✅ 利用可能なツールを一覧表示
- 🔧 修正が必要な場合は、有益なエラーメッセージを提供
4. Claude Desktopの設定 (1つのパスを変更するだけ!)
Claude Desktopの設定ファイルに追加します:
設定ファイルの場所:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
- Windows:
%APPDATA%\Claude\claude_desktop_config.json
設定 (パスのみ置き換える):
{
"mcpServers": {
"dayone": {
"command": "uv",
"args": [
"--directory",
"/FULL/PATH/TO/mcp-dayone",
"run",
"python",
"-m",
"mcp_dayone.server"
]
}
}
}
⚠️ 変更が必要な部分: /FULL/PATH/TO/mcp-dayone を実際のリポジトリのパスに置き換えてください。
5. Claude Desktopを再起動
設定を更新した後、Claude Desktopを再起動してMCPサーバーを読み込みます。
🎉 簡単な理由
- 🔍 自動検出: データベースパス、CLIの場所、すべての依存関係が自動的に検出されます
- 📦 ゼロ依存関係:
uv sync がすべてを処理するため、手動でパッケージをインストールする必要はありません
- 🧪 組み込み検証:
test_setup.py がClaudeを設定する前にすべてが正常に動作することを確認します
- 🛠️ コード変更不要: 標準的なDay Oneインストールでそのまま動作します
- 📱 汎用互換性: すべてのDay Oneデータベースとジャーナル設定で動作します
- 🚨 有益なエラーメッセージ: Day One CLIまたはデータベースにアクセスできない場合に明確なガイダンスを提供します
🚀 使用準備完了!
設定が完了すると、以下のような自然言語コマンドをすぐに使用できます:
- "最近のジャーナルエントリーを表示して"
- "この日のジャーナルエントリーを表示して"
- "今日の日記を作成して"
追加のセットアップ、設定ファイル、または環境変数は必要ありません!
💻 使用例
📅 "On This Day" 機能
MCPサーバーは、過去のエントリーを取得して振り返りや思い出を呼び起こすのに優れています:
クエリ: "今日の日付(6月14日)のすべてのジャーナルエントリーを表示して"
結果: Claudeは自動的に以下を行います:
get_entries_by_date ツールを使用して、複数の年にわたる6月14日のエントリーを検索
- エントリーを年ごとにグループ化し、"X年前" のラベルを付ける
- タイムスタンプとメタデータを含む詳細な内容のプレビューを表示
- エントリーのタイトル、写真/添付ファイルのインジケーター、および完全なコンテキストを含める
出力例:
📅 On This Day (06 - 14) - 2件のエントリーが見つかりました:
🗓️ 2023 (2年前):
• 朝の考え (午前8:30) [個人用] - 夏の目標とこれからの休暇計画についての反省。少し休んでリフレッシュし、家族と過ごす時間を楽しみにしています。
🗓️ 2021 (4年前):
• 週末の活動 (午後2:15) [旅行] ⭐ - 地元のファーマーズマーケットを楽しんだ素敵な一日。素敵な地元の蜂蜜を試し、夕食の新鮮な食材を手に入れました。このエントリーには写真が含まれています。 #週末 #地元 #食事
他の年の6月14日にはエントリーが見つかりませんでした(過去5年間を検索)。
これにより、以下のことが可能になります:
- 同じ日付の過去の経験を振り返る
- 数年にわたる個人の成長を追跡する
- 忘れられた思い出や洞察を再発見する
- 生活や考え方のパターンを見る
✍️ エントリーの作成
- "今日の日記を作成して" - 内容を含むエントリーを作成
- "休暇の日記を作成し、/path/to/photo.jpg の写真を添付して" - 添付ファイルとメタデータを持つエントリーを作成
- "現在の旅行の位置座標を含む日記エントリーを追加して" - 位置情報を持つエントリーを作成
- "チームの立ち会いに関するエントリーに #仕事 #会議 のタグを追加して" - タグ付きのエントリーを作成
📖 読み取りと検索
- "最近のジャーナルエントリーを表示して" - 日付、タグ、およびプレビューを含む最近のエントリーを表示
- "仕事に関するジャーナルエントリーを検索して" - 特定のテキストを含むエントリーを検索
- "この日のジャーナルエントリーを表示して" - 新機能: 過去の年の "On This Day" エントリーを表示
- "過去の年の6月14日のエントリーを表示して" - 新機能: 特定の日付の過去のエントリーを表示
- "Day Oneジャーナルの一覧とエントリー数を表示して" - 実際のジャーナルと統計情報を表示
- "エントリーの数を教えて" - データベースから実際のエントリー数を取得
- "先週のエントリーを検索して" - 日付範囲で検索
利用可能なMCPツール
✍️ 書き込みツール (CLIベース)
- create_journal_entry - 豊富なメタデータ(添付ファイル、位置情報、タグなど)を持つエントリーを作成
- create_entry_with_attachments - ファイル添付(写真、動画、音声、PDF)に特化したエントリーを作成
- create_location_entry - 位置座標を持つ位置情報を含むエントリーを作成
📖 読み取りツール (データベースベース)
- read_recent_entries - 新機能: 完全なメタデータを持つ最近のジャーナルエントリーを読み取り
- パラメータ: limit (1 - 50), journal (オプションのフィルター)
- 戻り値: 日付、タグ、プレビュー、お気に入り状態を含むフォーマットされたエントリー
- search_entries - 新機能: テキスト内容でエントリーを検索
- パラメータ: search_text, limit (1 - 50), journal (オプションのフィルター)
- 戻り値: コンテキストとメタデータを含む一致するエントリー
- list_journals_from_db - 新機能: 統計情報を含む実際のジャーナルを一覧表示
- 戻り値: ジャーナル名、エントリー数、最後のエントリー日付
- get_entry_count_from_db - 新機能: 実際のエントリー数を取得
- パラメータ: journal (オプションのフィルター)
- 戻り値: データベースからの実際のエントリー数
- get_entries_by_date - 新機能: 過去の年の "On This Day" エントリーを取得
- パラメータ: target_date (MM - DD または YYYY - MM - DD), years_back (デフォルト 5)
- 戻り値: 複数の年にわたる同じ日付のエントリーの完全な内容
📋 旧バージョンのツール (CLIの制限)
- list_journals - CLIの制限に関するガイダンスを提供
- get_entry_count - CLIのカウント制限を説明
開発
uv sync --dev
uv run python -m mcp_dayone.server
uv run pytest
トラブルシューティング
Day One CLIが見つからない場合
- Day One CLIがインストールされていることを確認:
dayone2 --version
dayone2 がPATHに含まれていることを確認
- Day OneアプリとCLIを以下からインストール: https://dayoneapp.com/guides/tips-and-tutorials/command-line-interface-cli
Claude Desktopの接続問題
claude_desktop_config.json の絶対パスを確認
- Claude DesktopのログでMCPサーバーのエラーを確認
- 設定変更後にClaude Desktopを再起動
権限問題
- Day One CLIがジャーナルにアクセスするための適切な権限を持っていることを確認
- 必要に応じてDay Oneアプリを一度実行して初期化
CLIの制限
- Day One CLIはエントリーの作成 (
new コマンド) のみをサポート
- ジャーナルの一覧表示とエントリー数のカウントはCLIではサポートされていません
- ジャーナルとエントリー数を表示するにはDay Oneアプリのインターフェイスを使用
- すべてのエントリー作成機能(添付ファイル、位置情報など)は完全に動作します
📄 ライセンス
MIT