项目简介
'obs-dailynotes' 是一个基于Node.js的工具包,旨在自动化Obsidian个人知识管理系统中的日常笔记和GTD(Getting Things Done)工作流。它通过集成Google日历、Apple提醒和Gmail等外部服务,将个人上下文信息整理成结构化的Markdown文件。更重要的是,它包含了MCP (Model Context Protocol) 服务器实现,能够以标准化的方式将这些丰富的个人上下文信息和功能暴露给各种大型语言模型(LLM)客户端,例如Claude桌面版和ChatGPT,从而增强LLM对用户个人信息的理解和应用能力。
主要功能点
- 自动化日常笔记生成: 自动从Google日历拉取事件,创建并格式化当日的Markdown笔记,包含会议链接、地点及参会人员。
- GTD任务管理: 与Apple提醒进行双向同步,支持任务的项目和状态分类,生成全面且组织良好的任务视图和仪表盘。
- 联系人页面管理: 自动链接会议参与者到对应的个人页面,并可根据Apple提醒中的信息生成个性化的会议议程。
- LLM上下文服务(MCP服务器): 作为后端服务,通过标准JSON-RPC协议,安全地向LLM客户端提供个人知识图谱、Gmail邮件记录、日历事件等上下文数据。LLM客户端可以调用这些服务来访问资源、执行外部功能和获取Prompt模板。
- 本地数据控制: 所有生成的数据都以纯Markdown文件的形式存储在您的Obsidian库中,确保您对个人信息拥有完全的控制权。
- 混合编程语言架构: 项目核心逻辑使用JavaScript实现API集成和实时提醒处理,文件操作和测试则利用Python,实现开发效率和系统维护性。
安装步骤
- 安装Homebrew (macOS用户):
打开您的macOS终端应用程序,运行以下命令来安装Homebrew(如果已安装请跳过):
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" - 安装Node.js和reminders-cli:
在终端中运行以下命令安装Node.js(项目主要运行环境)和用于Apple提醒集成的命令行工具:
brew install node brew install keith/formulae/reminders-cli - 克隆仓库:
将'obs-dailynotes' GitHub仓库克隆到您的本地计算机,然后进入项目目录:
git clone https://github.com/Joi/obs-dailynotes cd obs-dailynotes - 安装JavaScript依赖:
使用npm(Node.js包管理器)安装项目所需的所有JavaScript库:
npm install - 配置环境变量 (.env):
在项目根目录('obs-dailynotes')下创建一个名为 '.env' 的文件。根据您的实际情况,配置Google Calendar API凭据路径和Obsidian笔记库路径。示例内容如下:
请将 '/path/to/your/Obsidian/vault/dailynote' 替换为您的Obsidian日常笔记文件夹的实际路径。GCAL_TOKEN_PATH=~/.gcalendar/token.json GCAL_CREDS_PATH=~/.gcalendar/credentials.json DAILY_NOTE_PATH=/path/to/your/Obsidian/vault/dailynote - 设置Google Calendar API凭据: 访问 Google Cloud Console。创建一个新项目,启用“Google Calendar API”服务。然后,创建OAuth2客户端ID凭据,选择“桌面应用”类型。下载生成的JSON文件,并将其放置到您在 '.env' 文件中 'GCAL_CREDS_PATH' 指定的路径。首次运行相关脚本时,会引导您完成授权流程。
- 复制并自定义配置:
复制项目提供的示例配置文件 'config.example.json' 为 'config.json':
您可以编辑 'config.json' 文件以根据您的偏好自定义日历事件过滤、输出格式等。cp config.example.json config.json
服务器配置
本项目包含可以作为MCP服务器运行的脚本,用于向LLM客户端提供个人上下文。要将LLM客户端连接到本项目的MCP服务器,您通常需要在LLM客户端的配置中指定服务器的启动方式。
例如,要配置LLM客户端以使用本项目提供的Gmail/日历MCP服务器功能,您通常需要提供以下信息给您的LLM客户端:
- 服务名称 (Service Name): 自定义一个易于识别的名称,例如“Obsidian个人上下文”或“Gmail日历助手”。
- 启动命令 (Command): 'node'
- 命令参数 (Arguments): 'tools/mcpServers/gmailServer.js' (这是一个示例MCP服务器脚本,可能还有其他如知识图谱MCP服务器)
- 工作目录 (Working Directory): 本项目('obs-dailynotes')根目录的绝对路径,例如 '/Users/yourusername/obs-dailynotes'。
- 环境变量 (Environment Variables):
- 'GMAIL_CREDS_PATH': 您的Google API凭据文件('credentials.json')的绝对路径,例如 '~/.gcalendar/credentials.json'。
- 'GMAIL_TOKEN_PATH': 您的Google API令牌文件('token.json')的绝对路径,例如 '~/.gmail/token.json'。
- 'GMAIL_DEEP': (可选)设置为 '1' 表示启用深度Gmail消息内容访问(LLM可以获取邮件正文片段),否则只提供元数据。
- 'GCAL_CREDS_PATH', 'GCAL_TOKEN_PATH': (可选)如果日历和Gmail使用不同的凭据和令牌路径,请根据实际情况配置。
重要提示: 具体的LLM客户端配置界面和字段名称可能有所不同。请务必查阅您所使用的LLM客户端(如Claude桌面版、Cursor等)的官方文档,了解如何配置外部MCP服务。本项目提供了可作为MCP服务器运行的脚本,而非一个独立的、打包好的服务器应用。
基本使用方法
日常笔记和GTD自动化
- 生成每日笔记:
在项目根目录中运行此命令,将自动拉取您的Google日历事件并生成当日的Markdown格式每日笔记:
npm run daily - GTD早间例程:
运行此命令以更新Apple提醒,处理GTD标签,并生成当日的待办事项优先级列表:
npm run gtd:morning - 任务同步:
此命令用于在Obsidian和Apple提醒之间同步任务的完成状态,并拉取最新的提醒:
npm run gtd:sync
LLM上下文查询(适用于开发者和高级用户)
以下示例演示了如何手动启动一个MCP服务器并通过MCP客户端进行交互。在实际LLM客户端集成中,客户端将直接负责启动和管理服务器进程。
- 启动MCP Gmail/Calendar服务器:
在一个终端窗口中运行以下命令,启动提供Gmail和日历功能的MCP服务器。此服务器会保持运行状态,等待客户端连接:
# 进入项目根目录 cd /path/to/obs-dailynotes # 启动服务器,请确保环境变量已配置 GMAIL_CREDS_PATH=~/.gcalendar/credentials.json \ GMAIL_TOKEN_PATH=~/.gmail/token.json \ node tools/mcpServers/gmailServer.js - 通过MCP客户端调用工具(示例):
在另一个终端窗口中,您可以运行MCP客户端脚本来调用已启动服务器提供的功能,例如查询某个联系人的Gmail上下文:
这个示例演示了MCP客户端如何与MCP服务器通信。您的LLM客户端将以类似的方式直接与MCP服务器交互。# 进入项目根目录 cd /path/to/obs-dailynotes # 调用MCP客户端,请确保环境变量已配置 PERSON_EMAIL="[email protected]" \ MCP_GMAIL_CMD="node" MCP_GMAIL_ARGS="tools/mcpServers/gmailServer.js" \ node tools/mcpClient.js
信息
分类
生产力应用