关于 LogBook MCP
LogBook MCP 是为开发者设计的持久化工作日志 MCP 服务,可记录笔记、TODO 和提醒,并扫描代码注释中的 TODO。当前版本支持 Obsidian 存储,提供全文搜索和批量操作。
主要功能
- 01记录笔记与管理 TODO
- 02创建一次性和重复提醒
- 03扫描代码中的 TODO 注释
- 04全文搜索与批量操作
- 05按 Git 项目自动划分记录
适用场景
- 01记录项目决策与进度阻碍
- 02按项目整理并跟踪 TODO
- 03定期提醒自己检查任务
- 04搜索过往笔记和待办事项
MCP 相关
作为 MCP 服务,它向兼容客户端提供日志、待办、提醒、搜索和项目记录管理工具,并暴露提醒资源。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
@cocaxcode/logbook-mcp
你的开发者日志簿,随时只需一句话。
笔记 · TODO · 提醒 · 代码扫描 · 全文搜索 · 原生 CLI · 仅支持 Obsidian
⚠️ v2.0 重大变更: 已移除 SQLite。v2 仅支持 Obsidian 后端。
~/.logbook/logbook.db(v1)中的数据不会自动迁移,仍会原样保留在磁盘上。如果需要访问这些数据,请继续使用@cocaxcode/[email protected]。工具数量从 10 个减少到 5 个(另有兼容垫片标记为已弃用)。详情请参阅 CHANGELOG.md。
概览 · 用法 · 安装 · 功能 · 工具参考 · 存储 · 架构
快速概览
logbook-mcp 是一个 MCP 服务,可将你的 AI 助手变成持久化的开发者日志簿。记录决策、跟踪 TODO、设置提醒、扫描代码中的 TODO,并通过全文搜索查找所有内容,无需离开编辑器。
它会自动检测你的 git 项目,在本地存储所有内容,并兼容任何支持 MCP 的客户端:Claude Code、Claude Desktop、Cursor、Windsurf、VS Code、Codex CLI 或 Gemini CLI。所有数据都留在你的设备上——不会同步、不会跟踪,也不会离开你的磁盘。 笔记会自动按项目归类,但你也可以随时跨所有项目进行全局搜索。
两种存储模式:SQLite(默认,无需配置)或 Obsidian(带 frontmatter 的 Markdown 文件,可在你的 Obsidian 库中使用 Graph View、Dataview、Tasks 和 Calendar 查看)。从 SQLite 切换到 Obsidian 时,启动后会自动迁移数据。
直接告诉它
无需记忆命令,只需说出你的需求。
记录笔记
"I decided to use JWT instead of sessions for scalability"
→ Saved as a decision — retrievable months from now
"The CI is failing due to a timeout in integration tests"
→ Captured as a blocker — shows up when you review activity
跟踪 TODO
"TODO: implement email validation"
→ Created with auto-inferred topic
"Add these: fix token refresh. update deps. add rate limiting"
→ 3 TODOs created at once, each categorized
"Mark 5 and 8 as done"
→ Both completed
"What's pending across all projects?"
→ Global view of everything, including code TODOs
设置提醒
"Remind me tomorrow to deploy"
→ One-time reminder
"Remind me every Tuesday to review PRs"
→ Recurring weekly — auto-acknowledged after each session
"Remind me on weekdays to check the CI"
→ Monday to Friday
搜索任何内容
"Why did we choose JWT?"
→ Finds the decision note, even months later
"Search everything about auth"
→ FTS5 search across all notes and TODOs
安装
Claude Code(推荐)
claude mcp add --scope user logbook -- npx -y @cocaxcode/logbook-mcp@latest --mcp
使用 Obsidian 模式:
claude mcp add --scope user logbook -- npx -y @cocaxcode/logbook-mcp@latest --mcp --storage obsidian --dir "/path/to/vault/logbook"
Claude Desktop
将以下内容添加到你的 claude_desktop_config.json:
{
"mcpServers": {
"logbook-mcp": {
"command": "npx",
"args": ["-y", "@cocaxcode/logbook-mcp@latest", "--mcp"]
}
}
}
使用 Obsidian 模式:
{
"mcpServers": {
"logbook-mcp": {
"command": "npx",
"args": [
"-y", "@cocaxcode/logbook-mcp@latest", "--mcp",
"--storage", "obsidian",
"--dir", "/path/to/vault/logbook"
]
}
}
}
配置文件位置
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
Cursor、Windsurf、VS Code、Codex CLI、Gemini CLI
Cursor — 添加到 .cursor/mcp.json:
{
"mcpServers": {
"logbook-mcp": {
"command": "npx",
"args": ["-y", "@cocaxcode/logbook-mcp@latest", "--mcp"]
}
}
}
Windsurf — 添加到 .windsurf/mcp.json:
{
"mcpServers": {
"logbook-mcp": {
"command": "npx",
"args": ["-y", "@cocaxcode/logbook-mcp@latest", "--mcp"]
}
}
}
VS Code — 添加到 .vscode/mcp.json:
{
"servers": {
"logbook-mcp": {
"command": "npx",
"args": ["-y", "@cocaxcode/logbook-mcp@latest", "--mcp"]
}
}
}
Codex CLI:
codex mcp add logbook-mcp -- npx -y @cocaxcode/logbook-mcp@latest --mcp
Gemini CLI — 添加到 .gemini/settings.json:
{
"mcpServers": {
"logbook-mcp": {
"command": "npx",
"args": ["-y", "@cocaxcode/logbook-mcp@latest", "--mcp"]
}
}
}
配置
logbook-mcp 支持三种存储配置方式,优先级如下:
- CLI 参数(优先级最高):
--storage obsidian --dir "/path" --workspace "name" - 环境变量:
LOGBOOK_STORAGE、LOGBOOK_DIR、LOGBOOK_WORKSPACE - 配置文件:
~/.logbook/config.json(首次运行时自动创建)
{
"storage": "sqlite",
"dir": null,
"workspace": null,
"autoMigrate": true
}
从 SQLite 切换到 Obsidian
只需更改配置并重启。如果 autoMigrate 为 true(默认值),现有的 SQLite 数据会在下次启动时自动迁移到 Obsidian。无需手动操作。
也可以使用 logbook_setup action:status 查看当前状态。
功能
7 个内置主题
AI 会自动为每条笔记、TODO 和提醒分类,你也可以明确指定主题。
| 主题 | 用途 | 对应的常规提交类型 |
|---|---|---|
| feature | 新功能 | feat: |
| fix | 修复错误 | fix: |
| chore | 维护、CI/CD、重构 | refactor: docs: ci: build: test: |
| idea | 未来提案 | — |
| decision | 架构选择 | — |
| blocker | 阻碍进展的事项 | — |
| reminder | 定时提醒 | — |
随时可以创建自定义主题——只需说 “创建一个名为 security 的主题”。
支持类型、文件夹和仪表板的自定义主题
主题可以定义自身的行为(kind)、Obsidian 文件夹,以及是否显示在项目仪表板(index.md)中:
- kind:
note(默认)——每条记录都是一个独立的.md文件 - kind:
todo——记录会作为复选框写入一个汇总的.md文件 - show_in_index:
true(默认)——在index.md中添加 Dataview 区块和快捷链接 - show_in_index:
false——主题仍然存在,但会在仪表板中隐藏
"Create a topic called incident with its own folder"
→ logbook_topics action:add name:"incident" kind:"note" folder:"incidents"
→ Entries saved to: project/incidents/2026-03-24-server-down.md
→ Dashboard updated with Incidents section
"Create a topic called sprint-task as todo type"
→ logbook_topics action:add name:"sprint-task" kind:"todo" folder:"sprint"
→ Entries saved to: project/sprint.md (as checkboxes)
"Create a private topic not shown in the dashboard"
→ logbook_topics action:add name:"internal" kind:"note" folder:"internal" show_in_index:false
→ Entries saved to: project/internal/ (not visible in index.md)
如果未设置 folder,记录会写入默认的 notes/ 或 todos/ 目录。创建 show_in_index: true 且设置了 folder 的主题时,会自动重新生成仪表板(index.md)。
扫描代码 TODO
通过 git grep 检测代码中的 TODO、FIXME、HACK 和 BUG 注释,并与手动添加的 TODO 一起显示:
feature (2)
[ ] #12 [manual] Implement email validation
[code] TODO: add OAuth support — src/auth/service.ts:45
fix (3)
[ ] #8 [manual] Token doesn't refresh
[code] FIXME: handle null case — src/users/controller.ts:78
[code] BUG: race condition — src/chat/gateway.ts:112
当代码中的 TODO 从源代码中消失时(因为你已修复它),logbook 会自动检测并将其标记为已解决。
提醒
支持一次性和重复模式:
| 模式 | 示例 | 计划 |
|---|---|---|
| 一次性 | remind_at: "2026-03-25" | 仅限 3 月 25 日 |
daily | 每天 | 每天 |
weekdays | 周一至周五 | 周一至周五 |
weekly:2 | 每周二 | 每周的特定一天 |
weekly:1,3 | 周一和周三 | 每周的多个日期 |
monthly:1 | 每月 1 日 | 每月的特定一天 |
monthly:1,15 | 每月 1 日和 15 日 | 每月的多个日期 |
重复提醒每天显示一次后会自动确认。错过的一次性提醒会显示为逾期。
提示: logbook-mcp 提供了一个 MCP 资源(
logbook://reminders),客户端可以在会话开始时加载。在 Claude Code 和 Claude Desktop 中,提醒会自动显示,无需询问。在其他客户端中,只需说 “有什么提醒吗?”。
全文搜索(FTS5)
由 SQLite FTS5 提供支持,可即时搜索所有笔记和 TODO。可按主题、类型、项目筛选,也可以跨所有项目全局搜索。
批量操作
"Add: validate email. fix token. update deps" → 3 TODOs created
"Mark 5, 8, and 12 as done" → 3 TODOs completed
"Delete TODOs 3 and 7" → 2 TODOs removed
智能项目检测
logbook-mcp 通过 git rev-parse 自动检测你所在的 git 项目。无需配置——默认将查询范围限定为当前项目,也可以使用 global 选项查看所有内容。
工具参考
| 工具 | 操作 | 说明 |
|---|---|---|
logbook_note | — | 添加带可选主题的笔记 |
logbook_todo | add list done edit rm | 完整的 TODO 管理 |
logbook_entry | list edit delete standup decision debug | 结构化条目(ADR、调试会话、每日站会) |
logbook_query | search log timeline | 全文搜索、活动日志、跨项目时间线 |
logbook_topics | list add | 管理主题(自定义类型、文件夹、仪表板可见性) |
logbook_tags | — | 列出标签及其计数 |
logbook_reminders | — | 查看待处理提醒 |
logbook_review | — | 每周/每月回顾及统计数据 |
logbook_inbox | list process | 快速笔记收件箱(Obsidian 模式) |
logbook_setup | init migrate status | 管理:初始化 vault、迁移数据、检查状态 |
| 10 个工具 + 1 个资源 |
logbook_note — 添加笔记
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
content | string | 是 | 笔记内容(最多 5000 个字符) |
topic | string | 否 | 主题名称 — AI 会推断主题;如果是新主题,则自动创建 |
logbook_todo — 完整的 TODO 管理
操作:add — 创建 TODO
| 参数 | 类型 | 说明 |
|---|---|---|
content | string | 单条 TODO 内容(最多 2000 个字符) |
items | array | 多条 TODO:[{content, topic?, priority?, remind_at?, remind_pattern?}](最多 50 条) |
topic | string | 主题 — 自动推断或自动创建 |
priority | low normal high urgent | 优先级(默认:normal) |
remind_at | YYYY-MM-DD | 一次性提醒日期 |
remind_pattern | string | 重复提醒:daily、weekdays、weekly:N、monthly:N |
操作:list — 按主题分组列出 TODO
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
status | pending done all | pending | 按状态筛选 |
topic | string | — | 按主题筛选 |
priority | low normal high urgent | — | 按优先级筛选 |
source | all manual code | all | 手动数据库记录或代码注释 |
scope | project global | project | 当前项目或所有项目 |
操作:done — 标记为完成/撤销
| 参数 | 类型 | 说明 |
|---|---|---|
ids | number 或 number[] | 要标记的 ID |
undo | boolean | 如果为 true,则恢复为待处理状态(默认:false) |
操作:edit — 编辑 TODO
| 参数 | 类型 | 说明 |
|---|---|---|
id | number | 要编辑的 TODO ID |
content | string | 新内容 |
topic | string | 新主题 |
priority | low normal high urgent | 新优先级 |
操作:rm — 删除 TODO
| 参数 | 类型 | 说明 |
|---|---|---|
ids | number 或 number[] | 要永久删除的 ID |
logbook_entry — 结构化条目
操作:standup — 每日站会
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
yesterday | string | 是 | 昨天完成的工作 |
today | string | 是 | 今天将要完成的工作 |
blockers | string | 否 | 当前阻碍 |
topic | string | 否 | 主题 |
操作:decision — 架构决策记录(ADR)
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
title | string | 是 | 决策标题 |
context | string | 是 | 做出此决策的原因 |
options | string[] | 是 | 考虑过的选项 |
decision | string | 是 | 最终决策 |
consequences | string | 是 | 决策的后果 |
topic | string | 否 | 主题(默认:decision) |
操作:debug — 调试会话
action: list — 按类型列出条目
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
type | note decision debug standup review | — | 条目类型(必填) |
scope | project global | project | 当前项目或全部项目 |
limit | number | 20 | 最大结果数 |
action: edit / action: delete — 按 ID 修改或删除条目
logbook_query — 搜索与活动记录
action: search — 全文搜索
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
query | string | — | 搜索文本(必填) |
type | all notes todos | all | 搜索范围 |
topic | string | — | 按主题筛选 |
scope | project global | project | 项目或全局范围 |
limit | number | 20 | 最大结果数 |
action: log — 查看某个时间段的活动记录
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
period | today yesterday week month | today | 快速日期筛选 |
from / to | YYYY-MM-DD | — | 自定义日期范围 |
type | all notes todos | all | 按类型筛选 |
scope | project global | project | 当前项目或全部项目 |
action: timeline — 跨项目时间线
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
period | today yesterday week month | week | 时间范围 |
workspace | string | — | 按工作区筛选 |
logbook_setup — 管理工具
action: status — 显示当前配置和迁移状态
action: init — 初始化 Obsidian 仓库(仪表板、模板、收件箱)
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
force | boolean | false | 即使文件已存在也重新生成 |
action: migrate — 手动将 SQLite 数据迁移到 Obsidian(需要 obsidian 模式)
存储
SQLite 模式(默认)
所有数据都存储在 ~/.logbook/logbook.db 这一个 SQLite 数据库中。无需配置。
- WAL 模式支持并发读取
- FTS5 虚拟表支持即时全文搜索
- 触发器自动保持搜索索引同步
- 代码 TODO 快照——追踪现有的代码 TODO,并检测它们何时消失
Obsidian 模式
直接向 Obsidian 仓库写入带 YAML frontmatter 的 Markdown 文件。
通过 CLI 参数(推荐)、配置文件或环境变量进行配置:
# CLI args (most reliable, especially on Windows)
claude mcp add logbook -- npx -y @cocaxcode/logbook-mcp@latest --mcp --storage obsidian --dir "/path/to/vault/logbook"
// Config file: ~/.logbook/config.json
{
"storage": "obsidian",
"dir": "/path/to/vault/logbook",
"autoMigrate": true
}
文件按工作区、项目和类型组织:
vault/logbook/
├── cocaxcode/
│ ├── cocaxcode-api/
│ │ ├── notes/ ← logbook_note
│ │ ├── todos/ ← logbook_todo
│ │ ├── decisions/ ← logbook_entry action:decision
│ │ ├── debug/ ← logbook_entry action:debug
│ │ ├── standups/ ← logbook_entry action:standup
│ │ └── attachments/ ← copied files
│ └── cocaxcode-web/
├── optimus/
│ └── optimus-hub/
每个文件都带有 YAML frontmatter,Obsidian 插件可以对其进行查询:
---
type: todo
date: 2026-03-21
project: cocaxcode-api
workspace: cocaxcode
status: pending
priority: high
due: 2026-03-25
tags: [auth, urgent]
---
- [ ] Fix JWT refresh token
推荐的 Obsidian 插件: Dataview(类似 SQL 的查询)、Calendar(日期视图)、Tasks(复选框管理)、Graph View(内置,可通过 [[wikilinks]] 显示关联)。
自动迁移: 从 SQLite 切换到 Obsidian 时,现有数据会在启动时自动迁移(如果 autoMigrate: true)。你也可以手动运行 logbook_setup action:migrate。
提示: 搭配 Self-hosted LiveSync 和 VPS 上的 CouchDB,即可在 PC、Android 和 iOS 设备之间免费同步你的仓库。
架构
src/
├── index.ts # Entry: --mcp → server, else CLI
├── server.ts # createServer() — 10 tools + 1 resource
├── config.ts # Config resolution (args > env > file > defaults)
├── auto-migrate.ts # Auto SQLite → Obsidian migration on startup
├── cli.ts # CLI (help, version)
├── types.ts # Shared interfaces
├── storage/
│ ├── types.ts # StorageBackend interface
│ ├── index.ts # getStorage() factory (uses resolveConfig)
│ ├── sqlite/ # SQLite backend (wraps db/)
│ └── obsidian/ # Obsidian backend (markdown + frontmatter)
├── db/ # SQLite internals
├── git/ # Git repo detection + code TODO scanning
├── resources/ # MCP Resource: logbook://reminders
└── tools/ # 10 MCP tools (one file each)
技术栈: TypeScript · MCP SDK · better-sqlite3 · Zod · tsup
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。