Mindwtr MCP Server

Read and edit tasks and projects in the Mindwtr GTD app from an MCP client

Official · Dongda Li JavaScript Local · stdio Productivity

54 popularity score ★ 2.4k ↓ 723/wk

Connect your client

Local (npm)

Add in one click

Opens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.

Or add it by command or config

Claude CodeTerminal
claude mcp add mindwtr -- npx -y mindwtr-mcp --db '<ABSOLUTE_PATH_TO_MINDWTR_DB>'
Claude Desktopclaude_desktop_config.json
{
  "mcpServers": {
    "mindwtr": {
      "command": "npx",
      "args": [
        "-y",
        "mindwtr-mcp",
        "--db",
        "<ABSOLUTE_PATH_TO_MINDWTR_DB>"
      ]
    }
  }
}
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "mindwtr": {
      "command": "npx",
      "args": [
        "-y",
        "mindwtr-mcp",
        "--db",
        "<ABSOLUTE_PATH_TO_MINDWTR_DB>"
      ]
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "mindwtr": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "mindwtr-mcp",
        "--db",
        "<ABSOLUTE_PATH_TO_MINDWTR_DB>"
      ]
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.mindwtr]
command = "npx"
args = ["-y", "mindwtr-mcp", "--db", "<ABSOLUTE_PATH_TO_MINDWTR_DB>"]
Gemini CLITerminal
gemini mcp add --scope user mindwtr npx -- -y mindwtr-mcp --db '<ABSOLUTE_PATH_TO_MINDWTR_DB>'

Settings 9

MINDWTR_DB_PATH Optional: Path to mindwtr.db, the same as --db; without it the app's default location is used (MINDWTR_DB also works).
MINDWTR_MCP_API_URL Optional: Desktop Local API address such as http://127.0.0.1:3456; selects Local API mode.
MINDWTR_MCP_API_TOKEN Optional: Bearer token from the desktop app's Local API settings; setting it selects Local API mode.
MINDWTR_MCP_CLOUD_URL Optional: URL of your self-hosted Mindwtr Cloud server; selects Cloud mode.
MINDWTR_MCP_CLOUD_TOKEN Optional: Bearer token for your Mindwtr Cloud server.
MINDWTR_MCP_CLOUD_ALLOW_INSECURE_HTTP Optional: Set to true to allow a plain-HTTP Cloud URL on a trusted private network.
MINDWTR_MCP_HTTP_TOKEN Optional: Bearer token (16+ characters) for HTTP mode; turns on HTTP mode instead of stdio.
MINDWTR_MCP_HTTP_HOST Optional: Address HTTP mode listens on, 127.0.0.1 by default.
MINDWTR_MCP_HTTP_PORT Optional: Port for HTTP mode, 8722 by default.

What it does

Mindwtr is an open-source GTD (Getting Things Done) task manager, and mindwtr-mcp is its MCP helper, published from the same repository by the app's developer. It gives an assistant access to your inbox, next actions, projects, sections, areas and the people you assign tasks to. It can get its data from one of three places: the app's SQLite file (mindwtr.db) opened directly, the desktop app's Local API on 127.0.0.1, or a Mindwtr Cloud server you host yourself. It runs read-only unless started with --write. With --write it can add tasks (including quick-add text such as "Buy milk @errands /due:tomorrow"), update, complete, soft-delete and restore tasks, and manage projects, sections, areas and people.

It talks over stdio by default. With --http it serves a Streamable HTTP endpoint on 127.0.0.1:8722 that needs a bearer token, so you can put it behind your own reverse proxy for remote clients. The desktop app also has its own built-in MCP server, separate from this package (Settings → Integrations → Local MCP server), with its own permission switches and an extra mindwtr_archive_task tool.

In the code (src/index.ts at package version 1.1.12) the backend is picked from what is set: if MINDWTR_MCP_API_TOKEN or --api-url is present, the server switches to Local API mode and refuses to start when --db or a Cloud setting is also given. Without --db it looks for the database in the app's default location for your operating system. In Local API mode the section, people and area-write tools are not registered, and quickAdd is removed from mindwtr_add_task.

What it needs

RuntimeNode.js 20+

Node.js 20 or newer. Node 22+ is advised so the optional better-sqlite3 addon installs from a prebuilt binary; on Node 20 it needs C++ build tools. On npm 12, SQLite mode needs --allow-scripts=better-sqlite3 placed before mindwtr-mcp, or startup fails with a missing native binding. You also need a Mindwtr desktop database (mindwtr.db), or the desktop app running with Local API on and its token, or your own Mindwtr Cloud server URL and token. Mindwtr's mobile apps cannot host it.

Limits

mindwtr_list_tasks returns 200 tasks by default and at most 500; use offset to page through more. Task titles are capped at 500 characters and quick-add text at 2000. In Cloud mode the person write tools and mindwtr_restore_task return an error. Local API mode has no quickAdd, sections, people, area writes, GTD availability view or link-attachment replacement, and some recurring completions have to be done in the app. HTTP mode has no TLS of its own and no rate limit on authenticated requests. A search in mindwtr_list_tasks always leaves out deleted tasks, even when includeDeleted is set. The docs' Claude Desktop example uses a ~ path, which JSON config does not expand; give the full path.

Who it suits

Suits people who already keep their tasks in Mindwtr and want an assistant to review, triage or capture them, especially on desktop where the database or Local API is on the same machine. Leave it read-only for summaries and reviews, and add --write only when you want the assistant to change your task list. If you use the desktop app and your client supports authenticated Streamable HTTP, the app's built-in MCP server needs no Node install and has separate edit, archive and delete permissions. It is no use without Mindwtr data: it does not work with other task apps.

Tools 27

mindwtr_list_tasks
List tasks filtered by status, project, due dates, today's focus, search text or GTD availability, with sorting and paging
mindwtr_get_task
Get one task by its ID
mindwtr_list_projects
List all projects
mindwtr_get_project
Get one project by its ID
mindwtr_list_sections
List project sections, optionally for one project
mindwtr_get_section
Get one section by its ID
mindwtr_list_areas
List all areas
mindwtr_list_people
List the people records used for assignees and waiting-for
mindwtr_get_person
Get one person record by its ID
mindwtr_add_task
Create a task from fields or a quick-add string (needs --write)
mindwtr_update_task
Change a task's fields, dates, focus flag or link attachments (needs --write)
mindwtr_complete_task
Mark a task done (needs --write)
mindwtr_delete_task
Soft-delete a task (needs --write)
mindwtr_restore_task
Bring back a soft-deleted task (needs --write)
mindwtr_add_project
Create a project (needs --write)
mindwtr_update_project
Change a project's fields, dates or links (needs --write)
mindwtr_delete_project
Soft-delete a project (needs --write)
mindwtr_add_section
Create a section in a project (needs --write)
mindwtr_update_section
Change a project section (needs --write)
mindwtr_delete_section
Soft-delete a section; its tasks move out of the section (needs --write)
mindwtr_add_area
Create an area (needs --write)
mindwtr_update_area
Change an area (needs --write)
mindwtr_delete_area
Soft-delete an area (needs --write)
mindwtr_add_person
Create a person record (needs --write)
mindwtr_update_person
Change a person's note or reference link (needs --write)
mindwtr_rename_person
Rename a person and optionally update matching task assignments (needs --write)
mindwtr_delete_person
Soft-delete a person but keep their task assignments (needs --write)

Similar servers