@cocaxcode/logbook-mcp 0.4.9 → 0.4.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +124 -335
- package/dist/{cli-LHRPHO2C.js → cli-FULNDCWB.js} +1 -1
- package/dist/index.js +2 -2
- package/dist/{server-SU6V6LNU.js → server-WQ6ILBUZ.js} +1 -1
- package/package.json +1 -1
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 cocaxcode
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
<h1 align="center">@cocaxcode/logbook-mcp</h1>
|
|
3
3
|
<p align="center">
|
|
4
4
|
<strong>Your developer logbook, always one sentence away.</strong><br/>
|
|
5
|
-
Notes · TODOs · Reminders · Code
|
|
5
|
+
Notes · TODOs · Reminders · Code scanning · Full-text search · Zero config
|
|
6
6
|
</p>
|
|
7
7
|
</p>
|
|
8
8
|
|
|
@@ -12,45 +12,80 @@
|
|
|
12
12
|
<a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/license-MIT-blue.svg?style=flat-square" alt="License" /></a>
|
|
13
13
|
<img src="https://img.shields.io/badge/node-%3E%3D20-339933?style=flat-square&logo=node.js&logoColor=white" alt="Node" />
|
|
14
14
|
<img src="https://img.shields.io/badge/tools-9-blueviolet?style=flat-square" alt="9 tools" />
|
|
15
|
-
<img src="https://img.shields.io/badge/tests-63-brightgreen?style=flat-square" alt="63 tests" />
|
|
16
15
|
</p>
|
|
17
16
|
|
|
18
17
|
<p align="center">
|
|
19
|
-
<a href="#
|
|
20
|
-
<a href="#installation">Installation</a> ·
|
|
18
|
+
<a href="#quick-overview">Overview</a> ·
|
|
21
19
|
<a href="#just-talk-to-it">Usage</a> ·
|
|
20
|
+
<a href="#installation">Installation</a> ·
|
|
22
21
|
<a href="#features">Features</a> ·
|
|
23
|
-
<a href="#reminders">Reminders</a> ·
|
|
24
22
|
<a href="#tool-reference">Tool Reference</a> ·
|
|
25
23
|
<a href="#storage">Storage</a> ·
|
|
26
|
-
<a href="#
|
|
24
|
+
<a href="#architecture">Architecture</a>
|
|
27
25
|
</p>
|
|
28
26
|
|
|
29
27
|
---
|
|
30
28
|
|
|
31
|
-
##
|
|
29
|
+
## Quick Overview
|
|
32
30
|
|
|
33
|
-
|
|
31
|
+
logbook-mcp is an MCP server that turns your AI assistant into a persistent developer logbook. Capture decisions, track TODOs, set reminders, and search everything — without leaving your editor.
|
|
34
32
|
|
|
35
|
-
|
|
33
|
+
It auto-detects your git project, stores everything in a local SQLite database, and works with any MCP-compatible client: Claude Code, Claude Desktop, Cursor, Windsurf, VS Code, Codex CLI, or Gemini CLI.
|
|
36
34
|
|
|
37
|
-
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## Just Talk to It
|
|
38
38
|
|
|
39
|
-
|
|
39
|
+
No commands to memorize. Just say what you need.
|
|
40
40
|
|
|
41
|
-
###
|
|
41
|
+
### Capture notes
|
|
42
|
+
|
|
43
|
+
```
|
|
44
|
+
"I decided to use JWT instead of sessions for scalability"
|
|
45
|
+
→ Saved as a decision — retrievable months from now
|
|
46
|
+
|
|
47
|
+
"The CI is failing due to a timeout in integration tests"
|
|
48
|
+
→ Captured as a blocker — shows up when you review activity
|
|
49
|
+
```
|
|
42
50
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
51
|
+
### Track TODOs
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
"TODO: implement email validation"
|
|
55
|
+
→ Created with auto-inferred topic
|
|
56
|
+
|
|
57
|
+
"Add these: fix token refresh. update deps. add rate limiting"
|
|
58
|
+
→ 3 TODOs created at once, each categorized
|
|
59
|
+
|
|
60
|
+
"Mark 5 and 8 as done"
|
|
61
|
+
→ Both completed
|
|
62
|
+
|
|
63
|
+
"What's pending across all projects?"
|
|
64
|
+
→ Global view of everything, including code TODOs
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### Set reminders
|
|
68
|
+
|
|
69
|
+
```
|
|
70
|
+
"Remind me tomorrow to deploy"
|
|
71
|
+
→ One-time reminder
|
|
72
|
+
|
|
73
|
+
"Remind me every Tuesday to review PRs"
|
|
74
|
+
→ Recurring weekly — auto-acknowledged after each session
|
|
75
|
+
|
|
76
|
+
"Remind me on weekdays to check the CI"
|
|
77
|
+
→ Monday to Friday
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### Search anything
|
|
81
|
+
|
|
82
|
+
```
|
|
83
|
+
"Why did we choose JWT?"
|
|
84
|
+
→ Finds the decision note, even months later
|
|
85
|
+
|
|
86
|
+
"Search everything about auth"
|
|
87
|
+
→ FTS5 search across all notes and TODOs
|
|
88
|
+
```
|
|
54
89
|
|
|
55
90
|
---
|
|
56
91
|
|
|
@@ -85,9 +120,10 @@ Add to your `claude_desktop_config.json`:
|
|
|
85
120
|
- **Linux**: `~/.config/Claude/claude_desktop_config.json`
|
|
86
121
|
</details>
|
|
87
122
|
|
|
88
|
-
|
|
123
|
+
<details>
|
|
124
|
+
<summary>Cursor, Windsurf, VS Code, Codex CLI, Gemini CLI</summary>
|
|
89
125
|
|
|
90
|
-
|
|
126
|
+
**Cursor** — add to `.cursor/mcp.json`:
|
|
91
127
|
|
|
92
128
|
```json
|
|
93
129
|
{
|
|
@@ -100,9 +136,7 @@ Add to `.cursor/mcp.json` in your project:
|
|
|
100
136
|
}
|
|
101
137
|
```
|
|
102
138
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
Add to `.windsurf/mcp.json`:
|
|
139
|
+
**Windsurf** — add to `.windsurf/mcp.json`:
|
|
106
140
|
|
|
107
141
|
```json
|
|
108
142
|
{
|
|
@@ -115,9 +149,7 @@ Add to `.windsurf/mcp.json`:
|
|
|
115
149
|
}
|
|
116
150
|
```
|
|
117
151
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
Add to `.vscode/mcp.json`:
|
|
152
|
+
**VS Code** — add to `.vscode/mcp.json`:
|
|
121
153
|
|
|
122
154
|
```json
|
|
123
155
|
{
|
|
@@ -130,15 +162,13 @@ Add to `.vscode/mcp.json`:
|
|
|
130
162
|
}
|
|
131
163
|
```
|
|
132
164
|
|
|
133
|
-
|
|
165
|
+
**Codex CLI**:
|
|
134
166
|
|
|
135
167
|
```bash
|
|
136
168
|
codex mcp add logbook-mcp -- npx @cocaxcode/logbook-mcp@latest --mcp
|
|
137
169
|
```
|
|
138
170
|
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
Add to `.gemini/settings.json`:
|
|
171
|
+
**Gemini CLI** — add to `.gemini/settings.json`:
|
|
142
172
|
|
|
143
173
|
```json
|
|
144
174
|
{
|
|
@@ -151,125 +181,67 @@ Add to `.gemini/settings.json`:
|
|
|
151
181
|
}
|
|
152
182
|
```
|
|
153
183
|
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
## Just Talk to It
|
|
157
|
-
|
|
158
|
-
No commands to memorize. Just tell your AI what you need:
|
|
159
|
-
|
|
160
|
-
### Notes — capture what matters
|
|
161
|
-
|
|
162
|
-
| You say | What happens |
|
|
163
|
-
|---------|-------------|
|
|
164
|
-
| *"I decided to use JWT instead of sessions for scalability"* | Saved as **decision** — retrievable months from now |
|
|
165
|
-
| *"Note: Redis doesn't support nested JSON queries natively"* | Saved as a note for future reference |
|
|
166
|
-
| *"The CI is failing due to a timeout in integration tests"* | Captured as **blocker** — shows up in standups |
|
|
167
|
-
| *"We could add WebSocket support for real-time updates"* | Saved as **idea** — won't get lost in Slack |
|
|
168
|
-
|
|
169
|
-
### TODOs — your checklist, always at hand
|
|
170
|
-
|
|
171
|
-
| You say | What happens |
|
|
172
|
-
|---------|-------------|
|
|
173
|
-
| *"TODO: implement email validation"* | Created with topic **feature** (AI infers it) |
|
|
174
|
-
| *"Add these: fix token refresh. update deps. add rate limiting"* | **3 TODOs** created at once, each categorized |
|
|
175
|
-
| *"Mark 5 and 8 as done"* | Both marked as completed |
|
|
176
|
-
| *"What's pending?"* | All TODOs grouped by topic, including code TODOs |
|
|
177
|
-
| *"What's pending across all projects?"* | Global view of everything |
|
|
178
|
-
|
|
179
|
-
### Reminders — never forget
|
|
180
|
-
|
|
181
|
-
| You say | What happens |
|
|
182
|
-
|---------|-------------|
|
|
183
|
-
| *"Remind me tomorrow to deploy"* | One-time reminder for tomorrow |
|
|
184
|
-
| *"Remind me every Tuesday to review PRs"* | Recurring weekly reminder |
|
|
185
|
-
| *"Remind me the 1st of each month to renew certificates"* | Monthly recurring reminder |
|
|
186
|
-
| *"Remind me on weekdays to check the CI"* | Monday to Friday reminder |
|
|
187
|
-
|
|
188
|
-
### Search — find anything, instantly
|
|
189
|
-
|
|
190
|
-
| You say | What happens |
|
|
191
|
-
|---------|-------------|
|
|
192
|
-
| *"What did I do yesterday?"* | Notes + completed TODOs from yesterday |
|
|
193
|
-
| *"Search everything about auth"* | FTS5 search across all notes and TODOs |
|
|
194
|
-
| *"Show me all decisions this month"* | Filtered by topic **decision** and date range |
|
|
195
|
-
| *"Why did we choose JWT?"* | Finds the decision note, even months later |
|
|
184
|
+
</details>
|
|
196
185
|
|
|
197
186
|
---
|
|
198
187
|
|
|
199
188
|
## Features
|
|
200
189
|
|
|
201
|
-
### Smart project detection
|
|
202
|
-
|
|
203
|
-
logbook-mcp auto-detects which git project you're in. No setup, no config files:
|
|
204
|
-
|
|
205
|
-
```
|
|
206
|
-
You're in ~/projects/my-api/
|
|
207
|
-
→ "What's pending?" shows only my-api TODOs
|
|
208
|
-
|
|
209
|
-
You're in ~/projects/my-frontend/
|
|
210
|
-
→ Same question shows only my-frontend TODOs
|
|
211
|
-
|
|
212
|
-
You ask "all projects"
|
|
213
|
-
→ Global view across everything
|
|
214
|
-
```
|
|
215
|
-
|
|
216
190
|
### 7 built-in topics
|
|
217
191
|
|
|
218
|
-
Every note, TODO, and reminder is categorized
|
|
192
|
+
Every note, TODO, and reminder is categorized automatically by your AI, or you can specify a topic explicitly.
|
|
219
193
|
|
|
220
|
-
| Topic | Purpose |
|
|
221
|
-
|
|
222
|
-
| **feature** | New functionality | `feat:` |
|
|
223
|
-
| **fix** | Bug fixes | `fix:` |
|
|
224
|
-
| **chore** | Maintenance, CI/CD, refactoring | `refactor:` `docs:` `ci:` `build:` `test:` |
|
|
225
|
-
| **idea** | Future proposals | — |
|
|
226
|
-
| **decision** | Architecture choices | — |
|
|
227
|
-
| **blocker** | Things blocking progress | — |
|
|
228
|
-
| **reminder** | Time-based reminders | — |
|
|
194
|
+
| Topic | Purpose | Mapped from conventional commits |
|
|
195
|
+
|-------|---------|:--------------------------------:|
|
|
196
|
+
| **feature** | New functionality | `feat:` |
|
|
197
|
+
| **fix** | Bug fixes | `fix:` |
|
|
198
|
+
| **chore** | Maintenance, CI/CD, refactoring | `refactor:` `docs:` `ci:` `build:` `test:` |
|
|
199
|
+
| **idea** | Future proposals | — |
|
|
200
|
+
| **decision** | Architecture choices | — |
|
|
201
|
+
| **blocker** | Things blocking progress | — |
|
|
202
|
+
| **reminder** | Time-based reminders | — |
|
|
229
203
|
|
|
230
|
-
|
|
204
|
+
Custom topics can be created at any time — just say *"create a topic called security"*.
|
|
231
205
|
|
|
232
|
-
|
|
233
|
-
"Create a topic called 'security'"
|
|
234
|
-
→ Done. Now you can tag notes and TODOs with 'security'.
|
|
235
|
-
```
|
|
206
|
+
### Code TODO scanning
|
|
236
207
|
|
|
237
|
-
|
|
208
|
+
Your `TODO`, `FIXME`, `HACK`, and `BUG` comments are detected via `git grep` and shown alongside manual TODOs:
|
|
238
209
|
|
|
239
|
-
|
|
210
|
+
```
|
|
211
|
+
feature (2)
|
|
212
|
+
[ ] #12 [manual] Implement email validation
|
|
213
|
+
[code] TODO: add OAuth support — src/auth/service.ts:45
|
|
240
214
|
|
|
215
|
+
fix (3)
|
|
216
|
+
[ ] #8 [manual] Token doesn't refresh
|
|
217
|
+
[code] FIXME: handle null case — src/users/controller.ts:78
|
|
218
|
+
[code] BUG: race condition — src/chat/gateway.ts:112
|
|
241
219
|
```
|
|
242
|
-
📋 feature (3)
|
|
243
|
-
☐ #12 Implement email validation
|
|
244
|
-
☐ #15 [HIGH] Dynamic permissions endpoint
|
|
245
|
-
☑ #9 Google OAuth login (completed Mar 17)
|
|
246
220
|
|
|
247
|
-
|
|
248
|
-
☐ #8 [URGENT] Token doesn't refresh
|
|
221
|
+
When a code TODO disappears from source (because you fixed it), logbook detects it automatically and marks it as resolved.
|
|
249
222
|
|
|
250
|
-
|
|
251
|
-
☐ #20 Resolve CI timeout
|
|
252
|
-
```
|
|
223
|
+
### Reminders
|
|
253
224
|
|
|
254
|
-
|
|
225
|
+
Both one-time and recurring patterns are supported:
|
|
255
226
|
|
|
256
|
-
|
|
227
|
+
| Pattern | Example | Schedule |
|
|
228
|
+
|---------|---------|----------|
|
|
229
|
+
| One-time | `remind_at: "2026-03-25"` | March 25 only |
|
|
230
|
+
| `daily` | Every day | Every day |
|
|
231
|
+
| `weekdays` | Monday to Friday | Mon–Fri |
|
|
232
|
+
| `weekly:2` | Every Tuesday | Specific day of week |
|
|
233
|
+
| `weekly:1,3` | Monday and Wednesday | Multiple days |
|
|
234
|
+
| `monthly:1` | 1st of each month | Specific day of month |
|
|
235
|
+
| `monthly:1,15` | 1st and 15th | Multiple days |
|
|
257
236
|
|
|
258
|
-
|
|
259
|
-
📋 feature (2)
|
|
260
|
-
☐ #12 [manual] Implement email validation
|
|
261
|
-
📄 [code] TODO: add OAuth support — src/auth/service.ts:45
|
|
237
|
+
Recurring reminders auto-acknowledge after being shown once per day. One-time reminders that were missed show as overdue.
|
|
262
238
|
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
📄 [code] FIXME: handle null case — src/users/controller.ts:78
|
|
266
|
-
📄 [code] BUG: race condition — src/chat/gateway.ts:112
|
|
239
|
+
> [!TIP]
|
|
240
|
+
> 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?"*.
|
|
267
241
|
|
|
268
|
-
|
|
269
|
-
📄 [code] HACK: proxy workaround — src/middleware/cors.ts:23
|
|
270
|
-
```
|
|
242
|
+
### Full-text search (FTS5)
|
|
271
243
|
|
|
272
|
-
|
|
244
|
+
Search across all notes and TODOs instantly, powered by SQLite FTS5. Filter by topic, type, project, or search globally across all projects.
|
|
273
245
|
|
|
274
246
|
### Batch operations
|
|
275
247
|
|
|
@@ -279,179 +251,9 @@ Your `TODO`, `FIXME`, `HACK`, and `BUG` comments appear alongside manual TODOs:
|
|
|
279
251
|
"Delete TODOs 3 and 7" → 2 TODOs removed
|
|
280
252
|
```
|
|
281
253
|
|
|
282
|
-
###
|
|
283
|
-
|
|
284
|
-
Instant search across all notes and TODOs, powered by SQLite FTS5:
|
|
285
|
-
|
|
286
|
-
```
|
|
287
|
-
"Search auth"
|
|
288
|
-
→ Finds notes about JWT decisions, TODOs about auth endpoints,
|
|
289
|
-
and anything mentioning "auth" — across all projects if you want
|
|
290
|
-
```
|
|
291
|
-
|
|
292
|
-
---
|
|
293
|
-
|
|
294
|
-
## Reminders
|
|
295
|
-
|
|
296
|
-
logbook-mcp supports both one-time and recurring reminders.
|
|
297
|
-
|
|
298
|
-
### One-time reminders
|
|
299
|
-
|
|
300
|
-
```
|
|
301
|
-
"Remind me tomorrow to deploy to production"
|
|
302
|
-
→ remind_at: "2026-03-20", topic: "reminder"
|
|
303
|
-
|
|
304
|
-
"Remind me on March 25 to review the quarterly report"
|
|
305
|
-
→ remind_at: "2026-03-25", topic: "reminder"
|
|
306
|
-
```
|
|
307
|
-
|
|
308
|
-
### Recurring reminders
|
|
309
|
-
|
|
310
|
-
| You say | Pattern | When it fires |
|
|
311
|
-
|---------|---------|---------------|
|
|
312
|
-
| *"Remind me every day to check CI"* | `daily` | Every day |
|
|
313
|
-
| *"Remind me on weekdays to do standup"* | `weekdays` | Monday to Friday |
|
|
314
|
-
| *"Remind me every Tuesday to review PRs"* | `weekly:2` | Every Tuesday |
|
|
315
|
-
| *"Remind me Mondays and Wednesdays to sync"* | `weekly:1,3` | Mon + Wed |
|
|
316
|
-
| *"Remind me the 1st of each month to renew certs"* | `monthly:1` | 1st of month |
|
|
317
|
-
| *"Remind me the 1st and 15th to check billing"* | `monthly:1,15` | 1st + 15th |
|
|
318
|
-
|
|
319
|
-
### How reminders behave
|
|
320
|
-
|
|
321
|
-
```
|
|
322
|
-
Tuesday 9:00 — you open Claude
|
|
323
|
-
⏰ Reminder: review PRs (weekly, every Tuesday)
|
|
324
|
-
→ Shows once, auto-acknowledged for today
|
|
325
|
-
|
|
326
|
-
Tuesday 14:00 — you open Claude again
|
|
327
|
-
→ Nothing. Already shown today.
|
|
328
|
-
|
|
329
|
-
Wednesday — you open Claude
|
|
330
|
-
→ Nothing. Not a Tuesday.
|
|
331
|
-
|
|
332
|
-
Next Tuesday — you open Claude
|
|
333
|
-
→ ⏰ Reminder: review PRs (shows again)
|
|
334
|
-
```
|
|
335
|
-
|
|
336
|
-
**To stop a recurring reminder permanently:** delete it with `logbook_todo_rm`.
|
|
337
|
-
|
|
338
|
-
### Overdue reminders
|
|
339
|
-
|
|
340
|
-
One-time reminders that weren't completed show as overdue:
|
|
341
|
-
|
|
342
|
-
```
|
|
343
|
-
⏰ Reminders for today (Mar 19)
|
|
344
|
-
my-api: deploy to production
|
|
345
|
-
|
|
346
|
-
⚠️ Overdue
|
|
347
|
-
my-frontend: fix dark mode (was due Mar 17 — 2 days late)
|
|
348
|
-
```
|
|
349
|
-
|
|
350
|
-
### MCP Resource: automatic reminder delivery
|
|
351
|
-
|
|
352
|
-
logbook-mcp exposes a **Resource** (`logbook://reminders`) that MCP clients can load automatically when starting a session. This means your AI tells you about pending reminders **without you asking**.
|
|
353
|
-
|
|
354
|
-
#### Resource compatibility
|
|
355
|
-
|
|
356
|
-
| Client | Resources support | Reminders behavior |
|
|
357
|
-
|--------|:-----------------:|-------------------|
|
|
358
|
-
| **Claude Code** | ✅ Yes | Reminders shown automatically on session start |
|
|
359
|
-
| **Claude Desktop** | ✅ Yes | Reminders shown automatically on session start |
|
|
360
|
-
| **Cursor** | ❌ No | Ask *"any reminders?"* — works via `logbook_todo_list` |
|
|
361
|
-
| **Windsurf** | ❌ No | Ask *"any reminders?"* — works via `logbook_todo_list` |
|
|
362
|
-
| **VS Code + Copilot** | ⚠️ Partial | Depends on MCP extension used |
|
|
363
|
-
| **Codex CLI** | ❌ No | Ask *"any reminders?"* — works via `logbook_todo_list` |
|
|
364
|
-
| **Gemini CLI** | ❌ No | Ask *"any reminders?"* — works via `logbook_todo_list` |
|
|
365
|
-
|
|
366
|
-
> **Important:** Even without Resource support, reminders always work. You just need to ask for them instead of getting them automatically. All 9 tools work identically across all MCP clients.
|
|
367
|
-
|
|
368
|
-
---
|
|
369
|
-
|
|
370
|
-
## A Day With logbook-mcp
|
|
371
|
-
|
|
372
|
-
Here's what a typical day looks like:
|
|
373
|
-
|
|
374
|
-
### Morning — start your day
|
|
375
|
-
|
|
376
|
-
```
|
|
377
|
-
You: "What did I do yesterday?"
|
|
378
|
-
|
|
379
|
-
Claude: Yesterday on my-api:
|
|
380
|
-
📝 [decision] Chose sliding window for rate limiting over fixed window
|
|
381
|
-
☑ #8 Fixed token refresh bug
|
|
382
|
-
☑ #12 Implemented email validation
|
|
383
|
-
📄 [resolved] FIXME in src/users/controller.ts (handle null case)
|
|
384
|
-
|
|
385
|
-
You: "What's pending?"
|
|
386
|
-
|
|
387
|
-
Claude: my-api — 4 pending:
|
|
388
|
-
📋 feature
|
|
389
|
-
☐ #15 [HIGH] Dynamic permissions endpoint
|
|
390
|
-
📄 TODO: add OAuth — src/auth/service.ts:45
|
|
391
|
-
📋 chore
|
|
392
|
-
☐ #21 Update dependencies
|
|
393
|
-
📋 reminder
|
|
394
|
-
⏰ #25 Review PRs (recurring: every Tuesday)
|
|
395
|
-
```
|
|
396
|
-
|
|
397
|
-
### Working — capture as you go
|
|
398
|
-
|
|
399
|
-
```
|
|
400
|
-
You: "I decided to use Redis for session cache because
|
|
401
|
-
Memcached doesn't support key expiration callbacks"
|
|
402
|
-
|
|
403
|
-
Claude: ✅ Note saved [decision] in my-api
|
|
404
|
-
|
|
405
|
-
You: "TODO: add rate limit headers to API responses.
|
|
406
|
-
TODO: document the new permissions endpoint.
|
|
407
|
-
TODO: fix CORS for mobile app"
|
|
408
|
-
|
|
409
|
-
Claude: ✅ 3 TODOs created:
|
|
410
|
-
☐ #26 [feature] Add rate limit headers
|
|
411
|
-
☐ #27 [chore] Document permissions endpoint
|
|
412
|
-
☐ #28 [fix] Fix CORS for mobile app
|
|
413
|
-
|
|
414
|
-
You: "Remind me Friday to deploy the permissions update"
|
|
415
|
-
|
|
416
|
-
Claude: ✅ Reminder set for 2026-03-21 [reminder]
|
|
417
|
-
```
|
|
418
|
-
|
|
419
|
-
### End of day — wrap up
|
|
420
|
-
|
|
421
|
-
```
|
|
422
|
-
You: "Mark 15, 26, and 28 as done"
|
|
423
|
-
|
|
424
|
-
Claude: ✅ 3 TODOs completed
|
|
425
|
-
|
|
426
|
-
You: "What did I do today?"
|
|
427
|
-
|
|
428
|
-
Claude: Today on my-api:
|
|
429
|
-
📝 [decision] Redis for session cache (expiration callbacks)
|
|
430
|
-
☑ #15 Dynamic permissions endpoint
|
|
431
|
-
☑ #26 Rate limit headers
|
|
432
|
-
☑ #28 CORS fix for mobile
|
|
433
|
-
📄 [resolved] HACK in src/middleware/cors.ts (removed workaround)
|
|
434
|
-
```
|
|
435
|
-
|
|
436
|
-
### Weekly review — see the big picture
|
|
437
|
-
|
|
438
|
-
```
|
|
439
|
-
You: "Summary of this week across all projects"
|
|
440
|
-
|
|
441
|
-
Claude:
|
|
442
|
-
my-api: 3 notes, 8 TODOs completed, 4 pending
|
|
443
|
-
my-frontend: 1 note, 3 TODOs completed, 2 pending
|
|
444
|
-
my-docs: 0 notes, 1 TODO completed, 0 pending
|
|
445
|
-
|
|
446
|
-
You: "Search everything about auth across all projects"
|
|
254
|
+
### Smart project detection
|
|
447
255
|
|
|
448
|
-
|
|
449
|
-
[note] my-api — Decided JWT over sessions (Mar 12)
|
|
450
|
-
[note] my-api — Redis for session cache (Mar 19)
|
|
451
|
-
[todo] my-api — ☐ Add OAuth support
|
|
452
|
-
[todo] my-frontend — ☑ Auth redirect fix (completed Mar 15)
|
|
453
|
-
...
|
|
454
|
-
```
|
|
256
|
+
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.
|
|
455
257
|
|
|
456
258
|
---
|
|
457
259
|
|
|
@@ -464,10 +266,10 @@ Claude: 12 results:
|
|
|
464
266
|
| **TODOs** | `logbook_todo_add` `logbook_todo_list` `logbook_todo_done` `logbook_todo_edit` `logbook_todo_rm` | 5 |
|
|
465
267
|
| **Config** | `logbook_topics` | 1 |
|
|
466
268
|
| **Resource** | `logbook://reminders` | — |
|
|
467
|
-
|
|
|
269
|
+
| | | **9 tools + 1 resource** |
|
|
468
270
|
|
|
469
271
|
<details>
|
|
470
|
-
<summary><
|
|
272
|
+
<summary><code>logbook_log</code> — Activity for a period</summary>
|
|
471
273
|
|
|
472
274
|
Shows notes, completed TODOs, and resolved code TODOs for a time range.
|
|
473
275
|
|
|
@@ -482,7 +284,7 @@ Shows notes, completed TODOs, and resolved code TODOs for a time range.
|
|
|
482
284
|
</details>
|
|
483
285
|
|
|
484
286
|
<details>
|
|
485
|
-
<summary><
|
|
287
|
+
<summary><code>logbook_note</code> — Add a note</summary>
|
|
486
288
|
|
|
487
289
|
| Param | Type | Required | Description |
|
|
488
290
|
|-------|------|----------|-------------|
|
|
@@ -491,7 +293,7 @@ Shows notes, completed TODOs, and resolved code TODOs for a time range.
|
|
|
491
293
|
</details>
|
|
492
294
|
|
|
493
295
|
<details>
|
|
494
|
-
<summary><
|
|
296
|
+
<summary><code>logbook_todo_add</code> — Create TODOs</summary>
|
|
495
297
|
|
|
496
298
|
| Param | Type | Description |
|
|
497
299
|
|-------|------|-------------|
|
|
@@ -504,7 +306,7 @@ Shows notes, completed TODOs, and resolved code TODOs for a time range.
|
|
|
504
306
|
</details>
|
|
505
307
|
|
|
506
308
|
<details>
|
|
507
|
-
<summary><
|
|
309
|
+
<summary><code>logbook_todo_list</code> — List TODOs</summary>
|
|
508
310
|
|
|
509
311
|
| Param | Type | Default | Description |
|
|
510
312
|
|-------|------|---------|-------------|
|
|
@@ -517,7 +319,7 @@ Shows notes, completed TODOs, and resolved code TODOs for a time range.
|
|
|
517
319
|
</details>
|
|
518
320
|
|
|
519
321
|
<details>
|
|
520
|
-
<summary><
|
|
322
|
+
<summary><code>logbook_todo_done</code> — Mark as done / undo</summary>
|
|
521
323
|
|
|
522
324
|
| Param | Type | Description |
|
|
523
325
|
|-------|------|-------------|
|
|
@@ -528,7 +330,7 @@ For recurring reminders, "done" means acknowledged for today. It will reappear o
|
|
|
528
330
|
</details>
|
|
529
331
|
|
|
530
332
|
<details>
|
|
531
|
-
<summary><
|
|
333
|
+
<summary><code>logbook_todo_edit</code> — Edit a TODO</summary>
|
|
532
334
|
|
|
533
335
|
| Param | Type | Description |
|
|
534
336
|
|-------|------|-------------|
|
|
@@ -539,7 +341,7 @@ For recurring reminders, "done" means acknowledged for today. It will reappear o
|
|
|
539
341
|
</details>
|
|
540
342
|
|
|
541
343
|
<details>
|
|
542
|
-
<summary><
|
|
344
|
+
<summary><code>logbook_todo_rm</code> — Delete TODOs</summary>
|
|
543
345
|
|
|
544
346
|
| Param | Type | Description |
|
|
545
347
|
|-------|------|-------------|
|
|
@@ -549,7 +351,7 @@ Use this to stop recurring reminders permanently.
|
|
|
549
351
|
</details>
|
|
550
352
|
|
|
551
353
|
<details>
|
|
552
|
-
<summary><
|
|
354
|
+
<summary><code>logbook_search</code> — Full-text search</summary>
|
|
553
355
|
|
|
554
356
|
| Param | Type | Default | Description |
|
|
555
357
|
|-------|------|---------|-------------|
|
|
@@ -561,7 +363,7 @@ Use this to stop recurring reminders permanently.
|
|
|
561
363
|
</details>
|
|
562
364
|
|
|
563
365
|
<details>
|
|
564
|
-
<summary><
|
|
366
|
+
<summary><code>logbook_topics</code> — Manage topics</summary>
|
|
565
367
|
|
|
566
368
|
| Param | Type | Default | Description |
|
|
567
369
|
|-------|------|---------|-------------|
|
|
@@ -574,18 +376,21 @@ Use this to stop recurring reminders permanently.
|
|
|
574
376
|
|
|
575
377
|
## Storage
|
|
576
378
|
|
|
577
|
-
All data lives in a single SQLite database
|
|
379
|
+
All data lives in a single SQLite database at `~/.logbook/logbook.db`.
|
|
578
380
|
|
|
579
381
|
```
|
|
580
382
|
~/.logbook/
|
|
581
|
-
└── logbook.db
|
|
383
|
+
└── logbook.db
|
|
582
384
|
```
|
|
583
385
|
|
|
584
386
|
- **WAL mode** for concurrent reads
|
|
585
387
|
- **FTS5** virtual tables for instant full-text search
|
|
586
388
|
- **Triggers** keep search indexes in sync automatically
|
|
587
389
|
- **Foreign keys** with `ON DELETE SET NULL` — delete a project, notes remain
|
|
588
|
-
- **Code TODO snapshots** — tracks which code TODOs existed, detects when they
|
|
390
|
+
- **Code TODO snapshots** — tracks which code TODOs existed, detects when they disappear
|
|
391
|
+
|
|
392
|
+
> [!NOTE]
|
|
393
|
+
> The database is created automatically on first use. No setup required.
|
|
589
394
|
|
|
590
395
|
---
|
|
591
396
|
|
|
@@ -609,24 +414,8 @@ src/
|
|
|
609
414
|
└── tools/ # 9 MCP tools (one file each)
|
|
610
415
|
```
|
|
611
416
|
|
|
612
|
-
**Stack:** TypeScript · MCP SDK
|
|
613
|
-
|
|
614
|
-
---
|
|
615
|
-
|
|
616
|
-
## Contributing
|
|
617
|
-
|
|
618
|
-
```bash
|
|
619
|
-
git clone https://github.com/cocaxcode/logbook-mcp.git
|
|
620
|
-
cd logbook-mcp
|
|
621
|
-
npm install
|
|
622
|
-
npm test # 60 tests
|
|
623
|
-
npm run build # Build with tsup
|
|
624
|
-
npm run typecheck # TypeScript check
|
|
625
|
-
npm run inspector # Test with MCP Inspector
|
|
626
|
-
```
|
|
417
|
+
**Stack:** TypeScript · MCP SDK · better-sqlite3 · Zod · tsup
|
|
627
418
|
|
|
628
419
|
---
|
|
629
420
|
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
MIT © [cocaxcode](https://github.com/cocaxcode)
|
|
421
|
+
[MIT](./LICENSE) · Built by [cocaxcode](https://github.com/cocaxcode)
|
package/dist/index.js
CHANGED
|
@@ -6,13 +6,13 @@ async function main() {
|
|
|
6
6
|
const hasMcpFlag = argv.includes("--mcp");
|
|
7
7
|
if (hasMcpFlag) {
|
|
8
8
|
const { StdioServerTransport } = await import("@modelcontextprotocol/sdk/server/stdio.js");
|
|
9
|
-
const { createServer } = await import("./server-
|
|
9
|
+
const { createServer } = await import("./server-WQ6ILBUZ.js");
|
|
10
10
|
const server = createServer();
|
|
11
11
|
const transport = new StdioServerTransport();
|
|
12
12
|
await server.connect(transport);
|
|
13
13
|
console.error("logbook-mcp server running on stdio");
|
|
14
14
|
} else {
|
|
15
|
-
const { runCli } = await import("./cli-
|
|
15
|
+
const { runCli } = await import("./cli-FULNDCWB.js");
|
|
16
16
|
await runCli(argv);
|
|
17
17
|
}
|
|
18
18
|
}
|
|
@@ -1139,7 +1139,7 @@ function registerRemindersResource(server) {
|
|
|
1139
1139
|
}
|
|
1140
1140
|
|
|
1141
1141
|
// src/server.ts
|
|
1142
|
-
var VERSION = true ? "0.4.
|
|
1142
|
+
var VERSION = true ? "0.4.10" : "0.0.0";
|
|
1143
1143
|
function createServer() {
|
|
1144
1144
|
const server = new McpServer({
|
|
1145
1145
|
name: "logbook-mcp",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cocaxcode/logbook-mcp",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.10",
|
|
4
4
|
"description": "Developer logbook MCP server. Notes, TODOs, reminders, code TODOs with full-text search. Zero config, auto-detects projects, SQLite-powered. Works with Claude, Cursor, Windsurf, Copilot, Gemini, Codex.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|