项目简介
LifeOS MCP 服务器是一款基于 Model Context Protocol (MCP) 的应用后端,专为管理和增强Obsidian个人知识库而设计。它使AI助手能够以标准化的、合规的方式访问和操作您的笔记,支持在Obsidian中进行创建、阅读、搜索、编辑和组织信息。通过深度集成自定义YAML规则和PARA方法论(Projects, Areas, Resources, Archives),服务器确保了知识库的整洁和一致性,极大地提升了AI助手的知识管理能力。
主要功能点
- 通用搜索 ('search'): 智能路由多达六种搜索模式(高级、快速、内容类型、最近、模式等),支持自然语言查询和YAML属性筛选。它能高效地在您的Obsidian知识库中查找相关笔记和信息,并提供可点击的Obsidian链接。
- 智能笔记创建 ('create_note'): 自动检测和应用预设模板(如餐厅、文章、人物、日常等),确保新建笔记遵循LifeOS的YAML规范,并智能放置到正确的PARA结构文件夹中。
- 通用列表 ('list'): 统一列出和管理您的Obsidian知识库中的资源,包括文件夹结构、日常笔记、可用模板以及所有YAML属性。支持简洁和详细两种显示格式,方便快速浏览。
- 笔记管理: 提供完善的笔记生命周期管理功能,包括读取现有笔记内容、编辑笔记(支持Frontmatter字段合并或替换)、移动笔记和文件夹到新位置,以及在笔记特定位置插入内容(支持通过标题、块引用或文本模式定位)。
- 日常笔记管理 ('get_daily_note'): 支持获取或创建特定日期的日常笔记。您可以查询“今天”、“昨天”、“下周一”等日期,服务器会自动创建缺失的日常笔记。
- YAML合规性: 强制执行自定义的LifeOS YAML规则,例如确保URL使用'source'字段而不是'url',以及遵循特定的位置格式。这有助于维护知识库元数据的一致性。
- Obsidian集成: 服务器生成的响应中包含可点击的Obsidian URL,可以直接在Obsidian应用程序中打开相应的笔记或进行搜索,实现AI与Obsidian之间的无缝衔接。
- HTTP传输: 支持通过HTTP协议进行网络访问,允许远程MCP客户端通过安全隧道(如Cloudflare Tunnel)与服务器通信。
- 分析仪表盘: 包含一个轻量级分析系统,用于跟踪工具使用模式、性能洞察和缓存命中率,以优化AI助手的交互体验。
安装步骤
在您的本地机器上部署LifeOS MCP服务器:
- 克隆仓库:
在命令行中执行以下命令,将GitHub仓库克隆到您的本地机器:
git clone https://github.com/shayonpal/mcp-for-lifeos.git cd mcp-for-lifeos - 自动化安装 (推荐):
此脚本将自动安装所有必要的依赖项、生成初始配置文件并构建应用程序。
chmod +x scripts/setup.sh ./scripts/setup.sh - 手动安装:
如果您偏好手动控制,可以逐一执行以下命令:
完成上述步骤后,服务器代码将被编译到 'dist/src/index.js'。npm install npm run build
📖 更多详细部署说明,请参阅仓库中的 'docs/guides/DEPLOYMENT-GUIDE.md' 文件。
服务器配置
MCP客户端需要配置LifeOS MCP服务器的启动命令及其参数才能建立连接。以下是一个标准的JSON配置示例及其参数说明,请根据您的实际环境进行调整:
{ "mcpServers": { "lifeos": { "command": "node", "args": ["/absolute/path/to/mcp-for-lifeos/dist/src/index.js"], "env": { "LIFEOS_VAULT_PATH": "/path/to/your/obsidian/vault", "LIFEOS_TEMPLATES_PATH": "/path/to/your/obsidian/vault/00 - Meta/Templates", "LIFEOS_DAILY_NOTES_PATH": "/path/to/your/obsidian/vault/20 - Areas/21 - Myself/Journals/Daily", "LIFEOS_YAML_RULES_PATH": "/path/to/your/obsidian/vault/00 - Meta/System/YAML Rules for LifeOS Vault.md", "TOOL_MODE": "consolidated-with-aliases", "ENABLE_WEB_INTERFACE": "false", "WEB_PORT": "19831", "DEBUG": "true", "DISABLE_USAGE_ANALYTICS": "false" } } } }
- 'command': 启动LifeOS MCP服务器的命令行命令。通常是 'node'。
- 'args': 传递给 'command' 的参数列表。请将 '/absolute/path/to/mcp-for-lifeos/dist/src/index.js' 替换为您的LifeOS MCP服务器构建后入口文件的绝对路径。
- 'env': 一个环境变量键值对对象,用于配置服务器的行为:
- 'LIFEOS_VAULT_PATH': 必填。您的Obsidian仓库的根目录绝对路径。
- 'LIFEOS_TEMPLATES_PATH': 必填。您的Obsidian仓库中模板文件夹的绝对路径。
- 'LIFEOS_DAILY_NOTES_PATH': 必填。您的Obsidian仓库中日常笔记文件夹的绝对路径。
- 'LIFEOS_YAML_RULES_PATH': 可选。您的Obsidian仓库中自定义YAML规则文件的绝对路径。如果提供,服务器将强制执行这些规则。
- 'TOOL_MODE': 可选。控制服务器暴露的工具集:
- 'consolidated-only' (默认): 仅暴露现代的、经过优化的合并工具(推荐)。
- 'consolidated-with-aliases': 暴露合并工具及其遗留工具的别名(最大兼容性)。
- 'legacy-only': 仅暴露遗留工具。
- 'ENABLE_WEB_INTERFACE': 可选。设置为 'true' 可以启用内置的Web界面,通过HTTP访问服务器功能。默认端口为 'WEB_PORT' 指定的值(默认为19831)。设置为 'false' 则禁用。
- 'WEB_PORT': 可选。当 'ENABLE_WEB_INTERFACE' 为 'true' 时,指定Web界面监听的端口(默认为19831)。
- 'DEBUG': 可选。设置为 'true' 可以启用调试日志输出到 'stderr'。
- 'DISABLE_USAGE_ANALYTICS': 可选。设置为 'true' 可以禁用服务器的匿名使用数据分析收集。默认不禁用。
⚙️ 更多完整的配置选项和指南,请参阅仓库中的 'docs/guides/CONFIGURATION.md' 文件。
基本使用方法
一旦您的MCP客户端(例如Claude Desktop、Raycast或Cursor IDE)成功配置了LifeOS MCP服务器,您就可以直接在AI助手的对话界面中调用其工具来管理您的Obsidian笔记。
以下是一些使用示例:
- 搜索笔记:
- “搜索所有关于‘魁北克烧烤餐厅’的笔记。” (使用 'search' 工具,'mode: "advanced"')
- “列出过去7天内修改过的所有文章。” (使用 'search' 工具,'mode: "recent"')
- “查找所有内容类型为‘参考’的笔记。” (使用 'search' 工具,'mode: "content_type"')
- “使用模式'**/旅行计划.md'查找所有笔记。” (使用 'search' 工具,'mode: "pattern"')
- 创建笔记:
- “创建一个名为‘Pizza Palace’的新餐厅笔记。” (使用 'create_note' 工具,服务器将自动选择餐厅模板并填写YAML)
- “创建一个新的文章笔记,标题为‘AI在PM中的应用’。” (使用 'create_note' 工具,服务器将自动选择文章模板)
- “创建一个名为‘我的新想法’的快速笔记,内容是‘这是一个临时想法,稍后处理’。” (使用 'create_note' 工具,无需模板)
- 列表功能:
- “列出所有可用的笔记模板。” (使用 'list' 工具,'type: "templates"')
- “显示我的Obsidian知识库中‘Projects’文件夹下的所有子文件夹。” (使用 'list' 工具,'type: "folders"', 'path: "Projects"')
- “列出所有日常笔记。” (使用 'list' 工具,'type: "daily_notes"')
- “列出所有YAML属性及其使用次数。” (使用 'list' 工具,'type: "yaml_properties"', 'includeCount: true')
- 编辑笔记:
- “更新标题为‘项目A’的笔记,添加标签‘[进行中, 优先级高]’。” (使用 'edit_note' 工具)
- “在今天的日常笔记中,在‘Day's Notes’标题下插入任务‘- [ ] 发送周报’。” (使用 'insert_content' 工具,'target: { heading: "Day's Notes" }', 'position: "end-of-section"')
服务器将通过AI助手的对话界面返回结构化的响应,包括可点击的Obsidian链接、格式化的笔记内容或列表信息。
信息
分类
生产力应用