{
  "markdown": "<p align=\"center\">\n  <h1 align=\"center\">@cocaxcode/logbook-mcp</h1>\n  <p align=\"center\">\n    <strong>Your developer logbook, always one sentence away.</strong><br/>\n    Notes &middot; TODOs &middot; Reminders &middot; Code scanning &middot; Full-text search &middot; Native CLI &middot; Obsidian-only\n  </p>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://www.npmjs.com/package/@cocaxcode/logbook-mcp\"><img src=\"https://img.shields.io/npm/v/@cocaxcode/logbook-mcp.svg?style=flat-square&color=cb3837\" alt=\"npm version\" /></a>\n  <a href=\"https://www.npmjs.com/package/@cocaxcode/logbook-mcp\"><img src=\"https://img.shields.io/npm/dm/@cocaxcode/logbook-mcp.svg?style=flat-square\" alt=\"npm downloads\" /></a>\n  <a href=\"https://opensource.org/licenses/MIT\"><img src=\"https://img.shields.io/badge/license-MIT-blue.svg?style=flat-square\" alt=\"License\" /></a>\n  <img src=\"https://img.shields.io/badge/node-%3E%3D20-339933?style=flat-square&logo=node.js&logoColor=white\" alt=\"Node\" />\n  <img src=\"https://img.shields.io/badge/tools-5%20%2B%205%20deprecated-blueviolet?style=flat-square\" alt=\"5 + 5 deprecated\" />\n</p>\n\n> **⚠️ 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](./CHANGELOG.md) para detalles.\n\n<p align=\"center\">\n  <a href=\"#quick-overview\">Overview</a> &middot;\n  <a href=\"#just-talk-to-it\">Usage</a> &middot;\n  <a href=\"#installation\">Installation</a> &middot;\n  <a href=\"#features\">Features</a> &middot;\n  <a href=\"#tool-reference\">Tool Reference</a> &middot;\n  <a href=\"#storage\">Storage</a> &middot;\n  <a href=\"#architecture\">Architecture</a>\n</p>\n\n---\n\n## Quick Overview\n\nlogbook-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.\n\nIt 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.\n\nTwo 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.\n\n---\n\n## Just Talk to It\n\nNo commands to memorize. Just say what you need.\n\n### Capture notes\n\n```\n\"I decided to use JWT instead of sessions for scalability\"\n→ Saved as a decision — retrievable months from now\n\n\"The CI is failing due to a timeout in integration tests\"\n→ Captured as a blocker — shows up when you review activity\n```\n\n### Track TODOs\n\n```\n\"TODO: implement email validation\"\n→ Created with auto-inferred topic\n\n\"Add these: fix token refresh. update deps. add rate limiting\"\n→ 3 TODOs created at once, each categorized\n\n\"Mark 5 and 8 as done\"\n→ Both completed\n\n\"What's pending across all projects?\"\n→ Global view of everything, including code TODOs\n```\n\n### Set reminders\n\n```\n\"Remind me tomorrow to deploy\"\n→ One-time reminder\n\n\"Remind me every Tuesday to review PRs\"\n→ Recurring weekly — auto-acknowledged after each session\n\n\"Remind me on weekdays to check the CI\"\n→ Monday to Friday\n```\n\n### Search anything\n\n```\n\"Why did we choose JWT?\"\n→ Finds the decision note, even months later\n\n\"Search everything about auth\"\n→ FTS5 search across all notes and TODOs\n```\n\n---\n\n## Installation\n\n### Claude Code (recommended)\n\n```bash\nclaude mcp add --scope user logbook -- npx -y @cocaxcode/logbook-mcp@latest --mcp\n```\n\nWith Obsidian mode:\n\n```bash\nclaude mcp add --scope user logbook -- npx -y @cocaxcode/logbook-mcp@latest --mcp --storage obsidian --dir \"/path/to/vault/logbook\"\n```\n\n### Claude Desktop\n\nAdd to your `claude_desktop_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"logbook-mcp\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@cocaxcode/logbook-mcp@latest\", \"--mcp\"]\n    }\n  }\n}\n```\n\nWith Obsidian mode:\n\n```json\n{\n  \"mcpServers\": {\n    \"logbook-mcp\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\", \"@cocaxcode/logbook-mcp@latest\", \"--mcp\",\n        \"--storage\", \"obsidian\",\n        \"--dir\", \"/path/to/vault/logbook\"\n      ]\n    }\n  }\n}\n```\n\n<details>\n<summary>Config file locations</summary>\n\n- **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`\n- **Windows**: `%APPDATA%\\Claude\\claude_desktop_config.json`\n- **Linux**: `~/.config/Claude/claude_desktop_config.json`\n</details>\n\n<details>\n<summary>Cursor, Windsurf, VS Code, Codex CLI, Gemini CLI</summary>\n\n**Cursor** — add to `.cursor/mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"logbook-mcp\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@cocaxcode/logbook-mcp@latest\", \"--mcp\"]\n    }\n  }\n}\n```\n\n**Windsurf** — add to `.windsurf/mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"logbook-mcp\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@cocaxcode/logbook-mcp@latest\", \"--mcp\"]\n    }\n  }\n}\n```\n\n**VS Code** — add to `.vscode/mcp.json`:\n\n```json\n{\n  \"servers\": {\n    \"logbook-mcp\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@cocaxcode/logbook-mcp@latest\", \"--mcp\"]\n    }\n  }\n}\n```\n\n**Codex CLI**:\n\n```bash\ncodex mcp add logbook-mcp -- npx -y @cocaxcode/logbook-mcp@latest --mcp\n```\n\n**Gemini CLI** — add to `.gemini/settings.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"logbook-mcp\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@cocaxcode/logbook-mcp@latest\", \"--mcp\"]\n    }\n  }\n}\n```\n\n</details>\n\n---\n\n## Configuration\n\nlogbook-mcp supports three ways to configure storage, with this priority order:\n\n1. **CLI args** (highest priority): `--storage obsidian --dir \"/path\" --workspace \"name\"`\n2. **Environment variables**: `LOGBOOK_STORAGE`, `LOGBOOK_DIR`, `LOGBOOK_WORKSPACE`\n3. **Config file**: `~/.logbook/config.json` (auto-created on first run)\n\n```json\n{\n  \"storage\": \"sqlite\",\n  \"dir\": null,\n  \"workspace\": null,\n  \"autoMigrate\": true\n}\n```\n\n### Switching from SQLite to Obsidian\n\nJust 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.\n\nYou can also check the current status with `logbook_setup action:status`.\n\n---\n\n## Features\n\n### 7 built-in topics\n\nEvery note, TODO, and reminder is categorized automatically by your AI, or you can specify a topic explicitly.\n\n| Topic | Purpose | Mapped from conventional commits |\n|-------|---------|:--------------------------------:|\n| **feature** | New functionality | `feat:` |\n| **fix** | Bug fixes | `fix:` |\n| **chore** | Maintenance, CI/CD, refactoring | `refactor:` `docs:` `ci:` `build:` `test:` |\n| **idea** | Future proposals | — |\n| **decision** | Architecture choices | — |\n| **blocker** | Things blocking progress | — |\n| **reminder** | Time-based reminders | — |\n\nCustom topics can be created at any time — just say *\"create a topic called security\"*.\n\n### Custom topics with type, folder, and dashboard\n\nTopics can define their own behavior (`kind`), Obsidian folder, and whether they appear in the project dashboard (`index.md`):\n\n- **kind: `note`** (default) — each entry is an individual `.md` file\n- **kind: `todo`** — entries are checkboxes in a consolidated `.md` file\n- **show_in_index: `true`** (default) — adds a Dataview section and quick link to `index.md`\n- **show_in_index: `false`** — topic exists but is hidden from the dashboard\n\n```\n\"Create a topic called incident with its own folder\"\n→ logbook_topics action:add name:\"incident\" kind:\"note\" folder:\"incidents\"\n→ Entries saved to: project/incidents/2026-03-24-server-down.md\n→ Dashboard updated with Incidents section\n\n\"Create a topic called sprint-task as todo type\"\n→ logbook_topics action:add name:\"sprint-task\" kind:\"todo\" folder:\"sprint\"\n→ Entries saved to: project/sprint.md (as checkboxes)\n\n\"Create a private topic not shown in the dashboard\"\n→ logbook_topics action:add name:\"internal\" kind:\"note\" folder:\"internal\" show_in_index:false\n→ Entries saved to: project/internal/ (not visible in index.md)\n```\n\nWithout 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.\n\n### Code TODO scanning\n\nYour `TODO`, `FIXME`, `HACK`, and `BUG` comments are detected via `git grep` and shown alongside manual TODOs:\n\n```\nfeature (2)\n  [ ] #12 [manual] Implement email validation\n      [code]  TODO: add OAuth support — src/auth/service.ts:45\n\nfix (3)\n  [ ] #8  [manual] Token doesn't refresh\n      [code]  FIXME: handle null case — src/users/controller.ts:78\n      [code]  BUG: race condition — src/chat/gateway.ts:112\n```\n\nWhen a code TODO disappears from source (because you fixed it), logbook detects it automatically and marks it as resolved.\n\n### Reminders\n\nBoth one-time and recurring patterns are supported:\n\n| Pattern | Example | Schedule |\n|---------|---------|----------|\n| One-time | `remind_at: \"2026-03-25\"` | March 25 only |\n| `daily` | Every day | Every day |\n| `weekdays` | Monday to Friday | Mon–Fri |\n| `weekly:2` | Every Tuesday | Specific day of week |\n| `weekly:1,3` | Monday and Wednesday | Multiple days |\n| `monthly:1` | 1st of each month | Specific day of month |\n| `monthly:1,15` | 1st and 15th | Multiple days |\n\nRecurring reminders auto-acknowledge after being shown once per day. One-time reminders that were missed show as overdue.\n\n> **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?\"*.\n\n### Full-text search (FTS5)\n\nSearch across all notes and TODOs instantly, powered by SQLite FTS5. Filter by topic, type, project, or search globally across all projects.\n\n### Batch operations\n\n```\n\"Add: validate email. fix token. update deps\"     → 3 TODOs created\n\"Mark 5, 8, and 12 as done\"                       → 3 TODOs completed\n\"Delete TODOs 3 and 7\"                             → 2 TODOs removed\n```\n\n### Smart project detection\n\nlogbook-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.\n\n---\n\n## Tool Reference\n\n| Tool | Actions | Description |\n|------|---------|-------------|\n| `logbook_note` | — | Add a note with optional topic |\n| `logbook_todo` | `add` `list` `done` `edit` `rm` | Full TODO management |\n| `logbook_entry` | `list` `edit` `delete` `standup` `decision` `debug` | Structured entries (ADRs, debug sessions, standups) |\n| `logbook_query` | `search` `log` `timeline` | Full-text search, activity log, cross-project timeline |\n| `logbook_topics` | `list` `add` | Manage topics (custom kind, folder, dashboard visibility) |\n| `logbook_tags` | — | List tags with counts |\n| `logbook_reminders` | — | View pending reminders |\n| `logbook_review` | — | Weekly/monthly review with stats |\n| `logbook_inbox` | `list` `process` | Quick notes inbox (Obsidian mode) |\n| `logbook_setup` | `init` `migrate` `status` | Admin: init vault, migrate data, check status |\n| | | **10 tools + 1 resource** |\n\n<details>\n<summary><code>logbook_note</code> — Add a note</summary>\n\n| Param | Type | Required | Description |\n|-------|------|----------|-------------|\n| `content` | string | Yes | Note content (max 5000 chars) |\n| `topic` | string | No | Topic name — AI infers it, or auto-created if new |\n</details>\n\n<details>\n<summary><code>logbook_todo</code> — Full TODO management</summary>\n\n**action: `add`** — Create TODOs\n\n| Param | Type | Description |\n|-------|------|-------------|\n| `content` | string | Single TODO content (max 2000 chars) |\n| `items` | array | Multiple TODOs: `[{content, topic?, priority?, remind_at?, remind_pattern?}]` (max 50) |\n| `topic` | string | Topic — auto-inferred or auto-created |\n| `priority` | `low` `normal` `high` `urgent` | Priority (default: normal) |\n| `remind_at` | `YYYY-MM-DD` | One-time reminder date |\n| `remind_pattern` | string | Recurring: `daily`, `weekdays`, `weekly:N`, `monthly:N` |\n\n**action: `list`** — List TODOs grouped by topic\n\n| Param | Type | Default | Description |\n|-------|------|---------|-------------|\n| `status` | `pending` `done` `all` | `pending` | Filter by status |\n| `topic` | string | — | Filter by topic |\n| `priority` | `low` `normal` `high` `urgent` | — | Filter by priority |\n| `source` | `all` `manual` `code` | `all` | Manual DB or code comments |\n| `scope` | `project` `global` | `project` | Current project or all |\n\n**action: `done`** — Mark as done / undo\n\n| Param | Type | Description |\n|-------|------|-------------|\n| `ids` | number or number[] | ID(s) to mark |\n| `undo` | boolean | If true, sets back to pending (default: false) |\n\n**action: `edit`** — Edit a TODO\n\n| Param | Type | Description |\n|-------|------|-------------|\n| `id` | number | TODO ID to edit |\n| `content` | string | New content |\n| `topic` | string | New topic |\n| `priority` | `low` `normal` `high` `urgent` | New priority |\n\n**action: `rm`** — Delete TODOs\n\n| Param | Type | Description |\n|-------|------|-------------|\n| `ids` | number or number[] | ID(s) to delete permanently |\n</details>\n\n<details>\n<summary><code>logbook_entry</code> — Structured entries</summary>\n\n**action: `standup`** — Daily standup\n\n| Param | Type | Required | Description |\n|-------|------|----------|-------------|\n| `yesterday` | string | Yes | What was done yesterday |\n| `today` | string | Yes | What will be done today |\n| `blockers` | string | No | Current blockers |\n| `topic` | string | No | Topic |\n\n**action: `decision`** — Architecture Decision Record (ADR)\n\n| Param | Type | Required | Description |\n|-------|------|----------|-------------|\n| `title` | string | Yes | Decision title |\n| `context` | string | Yes | Why this decision is needed |\n| `options` | string[] | Yes | Options considered |\n| `decision` | string | Yes | Decision taken |\n| `consequences` | string | Yes | Consequences of the decision |\n| `topic` | string | No | Topic (default: decision) |\n\n**action: `debug`** — Debug session\n\n| Param | Type | Required | Description |\n|-------|------|----------|-------------|\n| `title` | string | Yes | Bug/error title |\n| `error` | string | Yes | Error description |\n| `cause` | string | Yes | Root cause |\n| `fix` | string | Yes | Solution applied |\n| `file` | string | No | Attachment path |\n| `topic` | string | No | Topic (default: fix) |\n\n**action: `list`** — List entries by type\n\n| Param | Type | Default | Description |\n|-------|------|---------|-------------|\n| `type` | `note` `decision` `debug` `standup` `review` | — | Entry type (required) |\n| `scope` | `project` `global` | `project` | Current project or all |\n| `limit` | number | 20 | Max results |\n\n**action: `edit`** / **action: `delete`** — Modify or remove entries by ID\n</details>\n\n<details>\n<summary><code>logbook_query</code> — Search and activity</summary>\n\n**action: `search`** — Full-text search\n\n| Param | Type | Default | Description |\n|-------|------|---------|-------------|\n| `query` | string | — | Search text (required) |\n| `type` | `all` `notes` `todos` | `all` | Search scope |\n| `topic` | string | — | Filter by topic |\n| `scope` | `project` `global` | `project` | Project or global |\n| `limit` | number | 20 | Max results |\n\n**action: `log`** — Activity for a period\n\n| Param | Type | Default | Description |\n|-------|------|---------|-------------|\n| `period` | `today` `yesterday` `week` `month` | `today` | Quick date filter |\n| `from` / `to` | `YYYY-MM-DD` | — | Custom date range |\n| `type` | `all` `notes` `todos` | `all` | Filter by type |\n| `scope` | `project` `global` | `project` | Current project or all |\n\n**action: `timeline`** — Cross-project timeline\n\n| Param | Type | Default | Description |\n|-------|------|---------|-------------|\n| `period` | `today` `yesterday` `week` `month` | `week` | Time range |\n| `workspace` | string | — | Filter by workspace |\n</details>\n\n<details>\n<summary><code>logbook_setup</code> — Admin tools</summary>\n\n**action: `status`** — Show current configuration and migration state\n\n**action: `init`** — Initialize Obsidian vault (dashboard, templates, inbox)\n\n| Param | Type | Default | Description |\n|-------|------|---------|-------------|\n| `force` | boolean | false | Regenerate even if files exist |\n\n**action: `migrate`** — Manually migrate SQLite data to Obsidian (requires obsidian mode)\n</details>\n\n---\n\n## Storage\n\n### SQLite mode (default)\n\nAll data lives in a single SQLite database at `~/.logbook/logbook.db`. Zero config.\n\n- **WAL mode** for concurrent reads\n- **FTS5** virtual tables for instant full-text search\n- **Triggers** keep search indexes in sync automatically\n- **Code TODO snapshots** — tracks which code TODOs existed, detects when they disappear\n\n### Obsidian mode\n\nWrites markdown files with YAML frontmatter directly to your Obsidian vault.\n\nConfigure via CLI args (recommended), config file, or env vars:\n\n```bash\n# CLI args (most reliable, especially on Windows)\nclaude mcp add logbook -- npx -y @cocaxcode/logbook-mcp@latest --mcp --storage obsidian --dir \"/path/to/vault/logbook\"\n```\n\n```json\n// Config file: ~/.logbook/config.json\n{\n  \"storage\": \"obsidian\",\n  \"dir\": \"/path/to/vault/logbook\",\n  \"autoMigrate\": true\n}\n```\n\nFiles are organized by workspace, project, and type:\n\n```\nvault/logbook/\n├── cocaxcode/\n│   ├── cocaxcode-api/\n│   │   ├── notes/          ← logbook_note\n│   │   ├── todos/          ← logbook_todo\n│   │   ├── decisions/      ← logbook_entry action:decision\n│   │   ├── debug/          ← logbook_entry action:debug\n│   │   ├── standups/       ← logbook_entry action:standup\n│   │   └── attachments/    ← copied files\n│   └── cocaxcode-web/\n├── optimus/\n│   └── optimus-hub/\n```\n\nEach file has YAML frontmatter that Obsidian plugins can query:\n\n```yaml\n---\ntype: todo\ndate: 2026-03-21\nproject: cocaxcode-api\nworkspace: cocaxcode\nstatus: pending\npriority: high\ndue: 2026-03-25\ntags: [auth, urgent]\n---\n- [ ] Fix JWT refresh token\n```\n\n**Recommended Obsidian plugins:** Dataview (SQL-like queries), Calendar (date view), Tasks (checkbox management), Graph View (built-in, shows connections via `[[wikilinks]]`).\n\n**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.\n\n> **Tip:** Combine with [Self-hosted LiveSync](https://github.com/vrtmrz/obsidian-livesync) + CouchDB on your VPS to sync your vault across PC, Android, and iOS for free.\n\n---\n\n## Architecture\n\n```\nsrc/\n├── index.ts              # Entry: --mcp → server, else CLI\n├── server.ts             # createServer() — 10 tools + 1 resource\n├── config.ts             # Config resolution (args > env > file > defaults)\n├── auto-migrate.ts       # Auto SQLite → Obsidian migration on startup\n├── cli.ts                # CLI (help, version)\n├── types.ts              # Shared interfaces\n├── storage/\n│   ├── types.ts          # StorageBackend interface\n│   ├── index.ts          # getStorage() factory (uses resolveConfig)\n│   ├── sqlite/           # SQLite backend (wraps db/)\n│   └── obsidian/         # Obsidian backend (markdown + frontmatter)\n├── db/                   # SQLite internals\n├── git/                  # Git repo detection + code TODO scanning\n├── resources/            # MCP Resource: logbook://reminders\n└── tools/                # 10 MCP tools (one file each)\n```\n\n**Stack:** TypeScript &middot; MCP SDK &middot; better-sqlite3 &middot; Zod &middot; tsup\n\n---\n\n[MIT](./LICENSE) &middot; Built by [cocaxcode](https://github.com/cocaxcode)\n",
  "bytes": 20060,
  "sha": "8bdeafc3d46746a6cab8c39e80d7fdfecd7b2c40846eb52163ef9e971e1d9425",
  "repo_slug": "cocaxcode/logbook-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_cocaxcode_logbook_mcp_fe3d6ff0/readme"
}