日记搜索服务

Day One MCP Server 是一个为 macOS 上的 Day One 日记应用提供的只读模型上下文协议(MCP)服务器,允许用户通过 Claude Desktop 直接访问和搜索日记条目。

  • by benlen10
  • Python
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 benlen10/dayone-mcp

使用说明

第一天MCP服务器

macOS上用于Day One日志的只读模型上下文协议(MCP)服务器。直接从Claude Desktop访问和搜索您的Day One条目。

特性

  • 统一搜索 -使用灵活的过滤器(文本、标签、星号、媒体、位置、设备、日期)查找条目
  • 直接查看照片 -Claude可以通过MCP资源查看和分析您日记中的照片
  • 媒体附件 -使用完整元数据访问照片、视频、音频和PDF
  • 延迟加载 -高效的性能 include_tags 和 include_attachments 旗帜
  • 列出期刊 -查看所有包含统计信息的日记账
  • 浏览最近 -只需搜索,无需过滤器
  • “在这一天” -使用日期过滤器查看历史条目

先决条件

  • macOS 安装了Day One应用程序
  • Python 3.11+
  • 紫外线 包管理器- 从astral.sh安装

安装

1.安装uv(如果尚未安装)

curl -LsSf https://astral.sh/uv/install.sh | sh

2.克隆和设置

git clone <repository-url>
cd dayone-mcp
uv sync

3.配置克劳德桌面

添加到您的Claude桌面配置 ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "dayone": {
      "command": "uv",
      "args": [
        "--directory",
        "/ABSOLUTE/PATH/TO/dayone-mcp",
        "run",
        "python",
        "-m",
        "dayone_mcp.server"
      ]
    }
  }
}

重要提示: 替换 /ABSOLUTE/PATH/TO/dayone-mcp 使用您的实际安装路径。

4.重新启动克劳德桌面

更新配置后,重新启动Claude Desktop以加载MCP服务器。

用法

配置后,您可以通过自然语言与Day One进行交互:

查询示例

  • “显示我最近的日记条目” -浏览最近的(无筛选器)
  • “在我的日记中搜索有关假期的条目” -文本搜索
  • “查找标记为上个月作品的星级条目” -多过滤器搜索
  • “显示我iPhone上的所有照片条目” -媒体+设备过滤器
  • “在过去的几年里,我在10月31日写了什么?” -“On This Day”的日期筛选器
  • “列出我的第一天日记” -查看所有包含统计数据的日记

可用工具

就 2个简单工具:

1. search_entries

一个强大的工具 用于所有输入操作-搜索、浏览和筛选。

退货 完整输入文本 以及所有元数据。

所有参数都是可选的 -使用none进行浏览,使用过滤器缩小结果范围:

  • text -在条目内容中搜索的文本
  • tags -标签列表(条目必须具有所有指定的标签)
  • starred -按星号状态筛选(真/假)
  • has_photos -过滤带有照片附件的条目
  • has_videos -过滤带有视频附件的条目
  • has_audio -过滤带有录音的条目
  • has_location -使用位置数据筛选条目
  • creation_device -设备类型(“iPhone”、“MacBook Pro”、“iPad”、“Apple Watch”)
  • date_from -开始日期(YYYY-MM-DD)
  • date_to -结束日期(YYYY-MM-DD)
  • journal -日志名称筛选器
  • limit -结果数(1-50,默认值:20)
  • include_tags -在结果中包含标签数据(默认值:false,仅在性能需要时设置为true)
  • include_attachments -在结果中包含附件/媒体资源(默认值:false,当您想查看照片/视频/音频时设置为true)

所有过滤器都使用AND逻辑 -结果必须符合所有标准。

示例:

Browse recent: search_entries(limit=10)
Text search: search_entries(text="vacation")
Starred + photos: search_entries(starred=true, has_photos=true)
With attachments: search_entries(has_photos=true, include_attachments=true)
With tags: search_entries(text="vacation", include_tags=true)
"On This Day": search_entries(date_from="2020-10-31", date_to="2025-10-31")
Multi-filter: search_entries(tags=["work"], creation_device="iPhone", date_from="2025-01-01", include_tags=true)

2. list_journals

列出所有包含统计数据的Day One期刊。

退货:

  • 日记帐名称
  • 每个日记账的条目计数
  • 每个日记账的最后录入日期

数据库位置

服务器自动连接到Day One的数据库:

~/Library/Group Containers/5U8NS4GX82.dayoneapp2/Data/Documents/DayOne.sqlite

确保Day One已打开至少一次以创建数据库。

故障排除

找不到数据库

  • 确保Day One已安装并至少打开过一次
  • 数据库是在您首次启动Day One时创建的

权限问题

  • Day One数据库在此服务器上是只读的
  • 不执行写入操作

Claude桌面连接问题

  • 验证中的绝对路径 claude_desktop_config.json
  • 检查Claude Desktop日志是否有错误
  • 配置更改后重新启动Claude Desktop

发展

# Install dependencies
uv sync

# Run server directly (for testing)
uv run python -m dayone_mcp.server

# Run comprehensive test suite
uv run python tests/test_all.py

测试覆盖率

测试套件(tests/test_all.py)验证:

  1. 数据库连接和初始化
  2. 基本操作(读取/搜索)
  3. 从富文本JSON和markdown中提取文本
  4. 条目格式(预览与全文)
  5. 高级搜索过滤器(文本、星号、媒体、位置、日期)
  6. 延迟加载和性能(include_tags、include_attacheds)
  7. 按UUID获取条目(用于资源检索)
  8. 附件文件验证
  9. 显示与资源URI的集成

许可证

麻省理工学院

致谢

与 模型上下文协议 通过Anthropic。