mindwtr-mcp 1.1.7 → 1.1.9

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.
Files changed (3) hide show
  1. package/README.md +22 -9
  2. package/dist/index.js +58514 -42614
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -18,13 +18,22 @@ On desktop, the app shows the exact local data path in **Settings -> Sync -> Loc
18
18
 
19
19
  ## Requirements
20
20
 
21
- - Node.js 18+ (for the MCP client that spawns the server)
21
+ - Node.js 20+ to run the helper. Prefer Node.js 22+ for prebuilt SQLite binaries on supported platforms; Node 20 requires a native build toolchain.
22
22
  - npm package installs use better-sqlite3, a native SQLite addon. If no prebuilt binary is available for your platform, npm needs a working C/C++ build toolchain and Python for node-gyp.
23
23
  - Bun (recommended for development in this repo)
24
24
  - A local Mindwtr database (`mindwtr.db`) for local mode, or a self-hosted Mindwtr Cloud URL and bearer token for Cloud mode
25
25
 
26
+ With **npm 12**, approve the SQLite dependency's install script; otherwise a successful install can still fail at startup with a missing native binding. For `npx` or global installs, allow only `better-sqlite3`:
27
+
28
+ ```bash
29
+ npx --allow-scripts=better-sqlite3 -y mindwtr-mcp --db "/path/to/mindwtr.db"
30
+ npm install -g --allow-scripts=better-sqlite3 mindwtr-mcp
31
+ ```
32
+
33
+ In MCP client configurations using `npx`, add `"--allow-scripts=better-sqlite3"` before `"mindwtr-mcp"` in `args`. For an existing project-local install, run `npm install-scripts approve better-sqlite3`, then `npm rebuild better-sqlite3` from that project. Review the dependency before approving; do not enable all dependency scripts.
34
+
26
35
  Default database locations:
27
- - Linux: `~/.local/share/mindwtr/mindwtr.db`
36
+ - Linux: `~/.local/share/mindwtr/mindwtr.db` (Flatpak: `~/.var/app/tech.dongdongbh.mindwtr/data/mindwtr/mindwtr.db`)
28
37
  - macOS: `~/Library/Application Support/mindwtr/mindwtr.db`
29
38
  - Windows: `%APPDATA%\mindwtr\mindwtr.db`
30
39
 
@@ -115,9 +124,9 @@ Flags (all have `MINDWTR_MCP_HTTP*` env var equivalents):
115
124
  - `--http-host <host>` / `MINDWTR_MCP_HTTP_HOST` — bind address, default `127.0.0.1`.
116
125
  - `--http-port <port>` / `MINDWTR_MCP_HTTP_PORT` — bind port, default `8722`.
117
126
 
118
- The MCP endpoint is `POST /mcp` and requires `Authorization: Bearer <token>` on every request; `GET /healthz` returns `200 ok` without auth for reverse-proxy health checks. Requests without a valid token get `401`; bodies over 1 MiB get `413`. When HTTP mode is on, the server does not also connect a stdio transport — it stays alive as long as the HTTP server is listening, not stdin.
127
+ The MCP endpoint is `POST /mcp` and requires `Authorization: Bearer <token>` on every request; `GET /healthz` returns `200 ok` without auth for reverse-proxy health checks. Requests without a valid token get `401`; repeated authentication failures get `429` with a `Retry-After` header. Bodies over 1 MiB get `413`. When HTTP mode is on, the server does not also connect a stdio transport — it stays alive as long as the HTTP server is listening, not stdin.
119
128
 
120
- There is no built-in TLS termination or rate limiting. If you're exposing this beyond localhost, put a reverse proxy (e.g. Caddy, nginx) in front for TLS and put the resulting `https://` URL (plus your token) into the remote MCP client.
129
+ There is no built-in TLS termination or rate limiting for authenticated requests. If you're exposing this beyond localhost, put a reverse proxy (e.g. Caddy, nginx) in front for TLS and put the resulting `https://` URL (plus your token) into the remote MCP client.
121
130
 
122
131
  ### Run directly from the repo
123
132
 
@@ -389,7 +398,8 @@ Any MCP-compatible client can work as long as it can launch a **stdio** server w
389
398
  ## Tools
390
399
 
391
400
  - `mindwtr_list_tasks`
392
- - Input: `{ status?, projectId?, includeDeleted?, limit?, offset?, search?, dueDateFrom?, dueDateTo?, sortBy?, sortOrder? }`
401
+ - Input: `{ status?, projectId?, includeDeleted?, limit?, offset?, search?, dueDateFrom?, dueDateTo?, isFocusedToday?, view?, sortBy?, sortOrder? }`
402
+ - `view` narrows by GTD availability: `available`, `deferred` or `blocked`
393
403
  - `mindwtr_list_projects`
394
404
  - Input: `{}`
395
405
  - `mindwtr_get_project`
@@ -407,10 +417,12 @@ Any MCP-compatible client can work as long as it can launch a **stdio** server w
407
417
  - `mindwtr_get_task`
408
418
  - Input: `{ id, includeDeleted? }`
409
419
  - `mindwtr_add_task` **(requires `--write`)**
410
- - Input: `{ title? | quickAdd?, status?, projectId?, sectionId?, areaId?, dueDate?, startTime?, reviewAt?, recurrence?, contexts?, tags?, description?, priority?, energyLevel?, assignedTo?, timeEstimate?, taskMode?, relativeStartOffset?, showFutureRecurrence?, pushCount?, checklist?, textDirection?, location?, isFocusedToday?, timeSpentMinutes?, suppressMindwtrReminders?, repeatReminderMinutes? }`
420
+ - Input: `{ title? | quickAdd?, status?, projectId?, sectionId?, areaId?, dueDate?, startTime?, cancelledAt?, reviewAt?, recurrence?, contexts?, tags?, description?, priority?, energyLevel?, assignedTo?, timeEstimate?, taskMode?, relativeStartOffset?, showFutureRecurrence?, pushCount?, checklist?, textDirection?, location?, isFocusedToday?, timeSpentMinutes?, suppressMindwtrReminders?, repeatReminderMinutes?, attachments? }`
411
421
  - `mindwtr_update_task` **(requires `--write`)**
412
- - Input: `{ id, title?, status?, projectId?, sectionId?, areaId?, dueDate?, startTime?, reviewAt?, recurrence?, contexts?, tags?, description?, priority?, energyLevel?, assignedTo?, timeEstimate?, taskMode?, relativeStartOffset?, showFutureRecurrence?, pushCount?, checklist?, textDirection?, location?, isFocusedToday?, timeSpentMinutes?, suppressMindwtrReminders?, repeatReminderMinutes?, order?, boardOrder?, focusOrder? }`
422
+ - Input: `{ id, title?, status?, projectId?, sectionId?, areaId?, dueDate?, startTime?, cancelledAt?, reviewAt?, recurrence?, contexts?, tags?, description?, priority?, energyLevel?, assignedTo?, timeEstimate?, taskMode?, relativeStartOffset?, showFutureRecurrence?, pushCount?, checklist?, textDirection?, location?, isFocusedToday?, timeSpentMinutes?, suppressMindwtrReminders?, repeatReminderMinutes?, order?, boardOrder?, focusOrder?, attachments? }`
413
423
  - `recurrence` accepts a recurrence object or an RFC 5545 RRULE string. Pass `null` to clear it.
424
+ - `attachments` holds link attachments only (`{ id?, title?, uri }`, e.g. `obsidian://`, `file://` or `https://`). The list you pass is the complete set of links: links you leave out are removed, file attachments are never touched, and `null` clears every link.
425
+ - `cancelledAt` is an ISO timestamp with timezone. Setting it closes the task as cancelled (`archived`) without counting it as completed or generating its next recurrence. Moving it to an active status or completing it clears cancellation. Update every syncing client before using cancellation; older writers can discard the marker.
414
426
  - `mindwtr_complete_task` **(requires `--write`)**
415
427
  - Input: `{ id }`
416
428
  - `mindwtr_delete_task` **(requires `--write`)**
@@ -418,9 +430,10 @@ Any MCP-compatible client can work as long as it can launch a **stdio** server w
418
430
  - `mindwtr_restore_task` **(requires `--write`)**
419
431
  - Input: `{ id }`
420
432
  - `mindwtr_add_project` **(requires `--write`)**
421
- - Input: `{ title, color?, status?, areaId?, isSequential?, isFocused?, dueDate?, reviewAt?, supportNotes? }`
433
+ - Input: `{ title, color?, status?, areaId?, isSequential?, isFocused?, dueDate?, startDate?, cancelledAt?, reviewAt?, supportNotes?, attachments? }`
422
434
  - `mindwtr_update_project` **(requires `--write`)**
423
- - Input: `{ id, title?, color?, status?, areaId?, isSequential?, isFocused?, dueDate?, reviewAt?, supportNotes? }`
435
+ - Input: `{ id, title?, color?, status?, areaId?, isSequential?, isFocused?, dueDate?, startDate?, cancelledAt?, reviewAt?, supportNotes?, attachments? }`
436
+ - `attachments` follows the same rule as `mindwtr_update_task`: link attachments only, the list is the complete set of links, and `null` clears them.
424
437
  - `mindwtr_delete_project` **(requires `--write`)**
425
438
  - Input: `{ id }`
426
439
  - `mindwtr_add_section` **(requires `--write`)**