Labsco
MCP SERVER

Google Tasks MCP

by ebmurha

Keep another system in step with Google Tasks by harvesting every change since a timestamp — including the completions Google hides the moment you tick them off in its own app.

Project & Task Management
Summary
The tool worth the install is `diff_tasks`, and it exists because of a Google behaviour that quietly breaks naive syncs.

Ticking a task off in the Google Tasks app makes it hidden rather than merely completed, so a client listing with the defaults sees the task vanish instead of complete; `diff_tasks` queries with showCompleted, showHidden and showDeleted together and groups results per list so that distinction survives the round trip. The costs are stated rather than discovered: you keep the `since` timestamp yourself because the API issues no sync tokens, `create_task` discards any time component on a due date, and `delete_tasklist` takes every task in the list with it.

What it is

A Google Tasks client of 13 tools covering task lists, tasks, subtask parenting, reordering and cross-list moves, plus a change-harvesting call built around the fact that the Tasks API issues no sync tokens.

What you get
  • A change feed the API does not itself provide: `diff_tasks` returns everything updated after a `since` timestamp, grouped per list into completed, active and deleted, sweeping every list when `tasklist` is omitted, and querying with showCompleted, showHidden and showDeleted together so completions made in the Google Tasks apps are not lost.
  • Reads that account for what Google hides by default: `list_tasks` returns only needsAction tasks unless the show flags are set, and narrows by `dueMin`, `dueMax` and `updatedMin`.
  • Task lists managed as objects: `list_tasklists` returns id, title and updated for each, `get_tasklist` fetches one, `create_tasklist` takes a `title` that may carry emoji, `update_tasklist` renames, and `delete_tasklist` removes the list and every task in it irreversibly.
  • Task writing with Google's date rule stated up front: `create_task` takes `title`, `notes`, `due`, `parent` and `previous`, and documents that due dates are date-only — any time portion is discarded and YYYY-MM-DD is normalised safely.
  • Status handled from either direction: `update_task` changes title, notes, due date or status between needsAction and completed, and `complete_task` is the shorthand for the completed case.
  • Position changed where it is otherwise read-only: `move_task` reorders a task, re-parents it as a subtask, or sends it to another list through `destinationTasklist`, and its own description states this is the only way to reorder.
  • Single-record access for the rest: `get_task` returns one task by id and `delete_task` removes one.
Requirements

A Google account whose task lists the server is to reach. `diff_tasks` also needs something from you rather than from Google: your own stored snapshot timestamp to pass as `since`, because the Tasks API has no sync tokens to hand you one.

Setup effort

One command plus a key — npx -y google-tasks-mcp, then supply credentials