The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Logbook MCP listing page.
Your developer logbook, always one sentence away.
Notes · TODOs · Reminders · Code scanning · Full-text search · Native CLI · Obsidian-only
⚠️ v2.0 breaking change: SQLite eliminado. v2 sólo soporta backend Obsidian. Datos en
~/.logbook/logbook.db(v1) no se migran automáticamente — quedan intactos en disco. Si necesitas acceso a ellos, mantente en@cocaxcode/logbook-mcp@0.4. Tools 10→5 (con shims deprecated). Ver CHANGELOG.md para detalles.
Overview · Usage · Installation · Features · Tool Reference · Storage · Architecture
logbook-mcp is an MCP server that turns your AI assistant into a persistent developer logbook. Capture decisions, track TODOs, set reminders, scan code TODOs, and search everything with full-text search — without leaving your editor.
It auto-detects your git project, stores everything locally, and works with any MCP-compatible client: Claude Code, Claude Desktop, Cursor, Windsurf, VS Code, Codex CLI, or Gemini CLI. All data stays on your machine — nothing is synced, nothing is tracked, nothing leaves your disk. Notes are scoped per-project automatically, but you can search globally across all your projects at any time.
Two storage modes: SQLite (default, zero config) or Obsidian (markdown files with frontmatter, visible in your Obsidian vault with Graph View, Dataview, Tasks, and Calendar). Switching from SQLite to Obsidian auto-migrates your data on startup.
No commands to memorize. Just say what you need.
With Obsidian mode:
Add to your claude_desktop_config.json:
With Obsidian mode:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.json~/.config/Claude/claude_desktop_config.jsonCursor — add to .cursor/mcp.json:
Windsurf — add to .windsurf/mcp.json:
VS Code — add to .vscode/mcp.json:
Codex CLI:
Gemini CLI — add to .gemini/settings.json:
logbook-mcp supports three ways to configure storage, with this priority order:
--storage obsidian --dir "/path" --workspace "name"LOGBOOK_STORAGE, LOGBOOK_DIR, LOGBOOK_WORKSPACE~/.logbook/config.json (auto-created on first run)Just change the config and restart. If autoMigrate is true (default), your existing SQLite data is automatically migrated to Obsidian on the next startup. No manual steps needed.
You can also check the current status with logbook_setup action:status.
Every note, TODO, and reminder is categorized automatically by your AI, or you can specify a topic explicitly.
| Topic | Purpose | Mapped from conventional commits |
|---|---|---|
| feature | New functionality | feat: |
| fix | Bug fixes | fix: |
| chore | Maintenance, CI/CD, refactoring | refactor: docs: ci: build: test: |
| idea | Future proposals | — |
| decision | Architecture choices | — |
| blocker | Things blocking progress | — |
| reminder | Time-based reminders | — |
Custom topics can be created at any time — just say "create a topic called security".
Topics can define their own behavior (kind), Obsidian folder, and whether they appear in the project dashboard (index.md):
note (default) — each entry is an individual .md filetodo — entries are checkboxes in a consolidated .md filetrue (default) — adds a Dataview section and quick link to index.mdfalse — topic exists but is hidden from the dashboardWithout a folder, entries go to the default notes/ or todos/ directory. The dashboard (index.md) is auto-regenerated when a topic with show_in_index: true and folder is created.
Your TODO, FIXME, HACK, and BUG comments are detected via git grep and shown alongside manual TODOs:
When a code TODO disappears from source (because you fixed it), logbook detects it automatically and marks it as resolved.
Both one-time and recurring patterns are supported:
| Pattern | Example | Schedule |
|---|---|---|
| One-time | remind_at: "2026-03-25" | March 25 only |
daily | Every day | Every day |
weekdays | Monday to Friday | Mon–Fri |
weekly:2 | Every Tuesday | Specific day of week |
weekly:1,3 | Monday and Wednesday | Multiple days |
monthly:1 | 1st of each month | Specific day of month |
monthly:1,15 | 1st and 15th | Multiple days |
Recurring reminders auto-acknowledge after being shown once per day. One-time reminders that were missed show as overdue.
Tip: logbook-mcp exposes an MCP Resource (
logbook://reminders) that clients can load on session start. In Claude Code and Claude Desktop, reminders appear automatically without asking. In other clients, just say "any reminders?".
Search across all notes and TODOs instantly, powered by SQLite FTS5. Filter by topic, type, project, or search globally across all projects.
logbook-mcp auto-detects which git project you're in via git rev-parse. No config needed — it scopes queries to the current project by default, with a global option to see everything.
| Tool | Actions | Description |
|---|---|---|
logbook_note | — | Add a note with optional topic |
logbook_todo | add list done edit rm | Full TODO management |
logbook_entry | list edit delete standup decision debug | Structured entries (ADRs, debug sessions, standups) |
logbook_query | search log timeline | Full-text search, activity log, cross-project timeline |
logbook_topics | list add | Manage topics (custom kind, folder, dashboard visibility) |
logbook_tags | — | List tags with counts |
logbook_reminders | — | View pending reminders |
logbook_review | — | Weekly/monthly review with stats |
logbook_inbox | list process | Quick notes inbox (Obsidian mode) |
logbook_setup | init migrate status | Admin: init vault, migrate data, check status |
| 10 tools + 1 resource |
logbook_note — Add a note| Param | Type | Required | Description |
|---|---|---|---|
content | string | Yes | Note content (max 5000 chars) |
topic | string | No | Topic name — AI infers it, or auto-created if new |
logbook_todo — Full TODO managementaction: add — Create TODOs
| Param | Type | Description |
|---|---|---|
content | string | Single TODO content (max 2000 chars) |
items | array | Multiple TODOs: [{content, topic?, priority?, remind_at?, remind_pattern?}] (max 50) |
topic | string | Topic — auto-inferred or auto-created |
priority | low normal high urgent | Priority (default: normal) |
remind_at | YYYY-MM-DD | One-time reminder date |
remind_pattern | string | Recurring: daily, weekdays, weekly:N, monthly:N |
action: list — List TODOs grouped by topic
| Param | Type | Default | Description |
|---|---|---|---|
status | pending done all | pending | Filter by status |
topic | string | — | Filter by topic |
priority | low normal high urgent | — | Filter by priority |
source | all manual code | all | Manual DB or code comments |
scope | project global | project | Current project or all |
action: done — Mark as done / undo
| Param | Type | Description |
|---|---|---|
ids | number or number[] | ID(s) to mark |
undo | boolean | If true, sets back to pending (default: false) |
action: edit — Edit a TODO
| Param | Type | Description |
|---|---|---|
id | number | TODO ID to edit |
content | string | New content |
topic | string | New topic |
priority | low normal high urgent | New priority |
action: rm — Delete TODOs
| Param | Type | Description |
|---|---|---|
ids | number or number[] | ID(s) to delete permanently |
logbook_entry — Structured entriesaction: standup — Daily standup
| Param | Type | Required | Description |
|---|---|---|---|
yesterday | string | Yes | What was done yesterday |
today | string | Yes | What will be done today |
blockers | string | No | Current blockers |
topic | string | No | Topic |
action: decision — Architecture Decision Record (ADR)
| Param | Type | Required | Description |
|---|---|---|---|
title | string | Yes | Decision title |
context | string | Yes | Why this decision is needed |
options | string[] | Yes | Options considered |
decision | string | Yes | Decision taken |
consequences | string | Yes | Consequences of the decision |
topic | string | No | Topic (default: decision) |
action: debug — Debug session
| Param | Type | Required | Description |
|---|---|---|---|
title | string | Yes | Bug/error title |
error | string | Yes | Error description |
cause | string | Yes | Root cause |
fix | string | Yes | Solution applied |
file | string | No | Attachment path |
topic | string | No | Topic (default: fix) |
action: list — List entries by type
| Param | Type | Default | Description |
|---|---|---|---|
type | note decision debug standup review | — | Entry type (required) |
scope | project global | project | Current project or all |
limit | number | 20 | Max results |
action: edit / action: delete — Modify or remove entries by ID
logbook_query — Search and activityaction: search — Full-text search
| Param | Type | Default | Description |
|---|---|---|---|
query | string | — | Search text (required) |
type | all notes todos | all | Search scope |
topic | string | — | Filter by topic |
scope | project global | project | Project or global |
limit | number | 20 | Max results |
action: log — Activity for a period
| Param | Type | Default | Description |
|---|---|---|---|
period | today yesterday week month | today | Quick date filter |
from / to | YYYY-MM-DD | — | Custom date range |
type | all notes todos | all | Filter by type |
scope | project global | project | Current project or all |
action: timeline — Cross-project timeline
| Param | Type | Default | Description |
|---|---|---|---|
period | today yesterday week month | week | Time range |
workspace | string | — | Filter by workspace |
logbook_setup — Admin toolsaction: status — Show current configuration and migration state
action: init — Initialize Obsidian vault (dashboard, templates, inbox)
| Param | Type | Default | Description |
|---|---|---|---|
force | boolean | false | Regenerate even if files exist |
action: migrate — Manually migrate SQLite data to Obsidian (requires obsidian mode)
All data lives in a single SQLite database at ~/.logbook/logbook.db. Zero config.
Writes markdown files with YAML frontmatter directly to your Obsidian vault.
Configure via CLI args (recommended), config file, or env vars:
Files are organized by workspace, project, and type:
Each file has YAML frontmatter that Obsidian plugins can query:
Recommended Obsidian plugins: Dataview (SQL-like queries), Calendar (date view), Tasks (checkbox management), Graph View (built-in, shows connections via [[wikilinks]]).
Auto-migration: When switching from SQLite to Obsidian, existing data is migrated automatically on startup (if autoMigrate: true). You can also run logbook_setup action:migrate manually.
Tip: Combine with Self-hosted LiveSync + CouchDB on your VPS to sync your vault across PC, Android, and iOS for free.
Stack: TypeScript · MCP SDK · better-sqlite3 · Zod · tsup