Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Google Tasks MCP

NPM · MCP-GOOGLE-TASKS · SCANNED SEP 20

MCP server for the Google Tasks API: task lists, subtasks, due dates, complete and move tasks.

Available components

+3 this week 79 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security98
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • No install/post-install scripts declared.Pass
  • 31 of 97 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency45
Schema Quality & AI Usability73
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 3707 tokens (~176/item across 21 items; 21 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management70
  • Stability observed for 21 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • All 3 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 22 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

How do I install the Google Tasks MCP server?

Google Tasks MCP runs locally as an npm package, launched with npx -y mcp-google-tasks. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · mcp-google-tasks

# add to Claude Code
claude mcp add a1-x-tech-mcp-google-tasks -- npx -y mcp-google-tasks
// .cursor/mcp.json
{
  "mcpServers": {
    "a1-x-tech-mcp-google-tasks": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-google-tasks"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "a1-x-tech-mcp-google-tasks": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-google-tasks"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add a1-x-tech-mcp-google-tasks -- npx -y mcp-google-tasks
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "a1-x-tech-mcp-google-tasks": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "mcp-google-tasks"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add a1-x-tech-mcp-google-tasks --command npx --arg -y --arg mcp-google-tasks
# ~/.hermes/config.yaml
mcp_servers:
  a1-x-tech-mcp-google-tasks:
    command: "npx"
    args: ["-y", "mcp-google-tasks"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "a1-x-tech-mcp-google-tasks": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "mcp-google-tasks"
      ]
    }
  }
}
# add to Vellum
assistant mcp add a1-x-tech-mcp-google-tasks -t stdio -c npx -a -y mcp-google-tasks
// mcp.json
{
  "mcpServers": {
    "a1-x-tech-mcp-google-tasks": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-google-tasks"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 20 Sept 26 +1
    • Tool safety: pass → unverified security
    • Stability: 0.67 → unverified security
    • Capabilities: pass → unverified functional
    • Tool coverage: 100 → unverified functional
    • Schema quality: 206 → 176 functional
    • First check of Schema quality: unverified functional
    • Package version: 0.1.0 → 0.2.0 functional
  • 18 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 60 to 63. That category is still filling its 30-day observation window: 18 days of observed history at the previous scan, 19 at this one. The score rises as the window fills, whether or not the server changes.

  • 16 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 53 to 57. That category is still filling its 30-day observation window: 16 days of observed history at the previous scan, 17 at this one. The score rises as the window fills, whether or not the server changes.

  • 13 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 43 to 47. That category is still filling its 30-day observation window: 13 days of observed history at the previous scan, 14 at this one. The score rises as the window fills, whether or not the server changes.

  • 11 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 37 to 40. That category is still filling its 30-day observation window: 11 days of observed history at the previous scan, 12 at this one. The score rises as the window fills, whether or not the server changes.

  • 9 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 30 to 33. That category is still filling its 30-day observation window: 9 days of observed history at the previous scan, 10 at this one. The score rises as the window fills, whether or not the server changes.

  • 7 Sept 26 +4
    • Stability: unverified → 0.27 functional
  • 31 Aug 26 +15
    • Malware scan: unverified → pass security
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 20 Sept 2026 · Analysed npm/mcp-google-tasks@0.2.0

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem npm

Background: How many MCP packages publish verified provenance →

Dependencies 97 packages
Packages resolved 97
Stale 31
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 21 exposed · ~3,319 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
auth_status ~81

Shows whether this server is connected to Google: token presence and source (env variables or a stored in-chat login), expiry, the Google account email, granted vs missing OAuth scopes, where the credentials file lives and where the OAuth client comes from. Makes no network calls and never returns the token itself. Call it first when other tools report the server is not connected.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

clear_completed_tasks ~146

Clears ALL completed tasks from one list in a single call: they are flagged hidden and vanish from default listings (the Google Tasks UI does this as "Delete all completed"). The tasks are not deleted — list_tasks with show_completed=true and show_hidden=true still returns them, and reopen_task can restore any of them individually — but there is no single call to un-clear a whole list, so treat it as destructive. Open (needsAction) tasks are untouched. Returns {cleared:true} with the tasklist_id echoed.

NameTypeReqDescription
tasklist_idstringyesThe task list id — from list_tasklists or create_tasklist output. "@default" addresses the user's default list.

No output schema declared.

No examples provided.

complete_task ~172

Marks a task completed (status=completed; the API stamps the completed timestamp). This is REVERSIBLE — reopen_task undoes it — and is the right call for "done", unlike delete_task which erases the task. The API call touches only the addressed task: completing a parent does NOT cascade to its subtasks — complete them individually if the whole tree is done. A completed task stays listed until cleared: list_tasks still returns it with show_completed=true (+ show_hidden=true after a clear). Returns the updated task with status and completed.

NameTypeReqDescription
task_idstringyesThe task id — from list_tasks, get_task or create_task output.
tasklist_idstringyesThe task list id — from list_tasklists or create_tasklist output. "@default" addresses the user's default list.

No output schema declared.

No examples provided.

create_task ~306

Creates a task in a list and returns it (id, title, position, webViewLink, ...). due accepts YYYY-MM-DD or an RFC3339 timestamp, but Google Tasks stores only the DATE — any time of day is discarded and never returned. notes is plain text (max 8192 chars); title max 1024 chars. Hierarchy and order are set at creation via parent (the id of an existing task in the same list — the new task becomes its subtask; Google Tasks supports one level of nesting reliably) and previous (the sibling to insert after; omit both to land at the top of the list). New tasks start as needsAction — use complete_task to complete. Recurrence cannot be created or read through the API.

NameTypeReqDescription
duestringDue date: YYYY-MM-DD or RFC3339. Only the date is stored — the time part is discarded.
notesstringFree-text notes shown under the title (max 8192 chars).
parentstringParent task id in the same list — makes the new task a subtask.
previousstringSibling task id to insert after (same parent). Omit to insert at the first position.
tasklist_idstringyesThe task list id — from list_tasklists or create_tasklist output. "@default" addresses the user's default list.
titlestringyesThe task title (max 1024 chars).

No output schema declared.

No examples provided.

create_tasklist ~93

Creates a new task list and returns it (id, title, updated). The API accepts only a title — there are no other list-level settings. The returned id is the tasklist_id every task tool needs. Google caps the number of lists per account; a quota failure surfaces as an HTTP error, not silence.

NameTypeReqDescription
titlestringyesThe list title shown in Google Tasks (max 1024 chars).

No output schema declared.

No examples provided.

delete_task ~152

Deletes a task permanently — this is NOT the same as completing it. To mark work done (reversibly), use complete_task instead. A deleted task disappears from default listings immediately; for a while it remains visible to list_tasks with show_deleted=true (deleted:true) so sync clients can observe the deletion, then it is gone for good. Deleting a parent task also deletes its subtasks. Returns {deleted:true} with the ids echoed.

NameTypeReqDescription
task_idstringyesThe task id — from list_tasks, get_task or create_task output.
tasklist_idstringyesThe task list id — from list_tasklists or create_tasklist output. "@default" addresses the user's default list.

No output schema declared.

No examples provided.

delete_tasklist ~107

Deletes a task list AND every task in it, permanently — there is no undo and no trash. The user's default task list cannot be deleted (the API rejects it). To empty a list but keep it, use clear_completed_tasks or delete tasks one by one instead. Returns {deleted:true} with the tasklist_id echoed.

NameTypeReqDescription
tasklist_idstringyesThe task list id — from list_tasklists or create_tasklist output. "@default" addresses the user's default list.

No output schema declared.

No examples provided.

finish_login ~116

Second step: confirms the browser consent finished, saves the tokens to an owner-only file and verifies the login with a read-only identity call, returning the account email and the granted scopes. After success every tool works immediately — no client restart. If the user granted only part of the requested permissions, the login is still saved and missingScopes lists what will not work. Logging in under a different Google account replaces the previous login (its refresh token is revoked best-effort) and the response carries previousAccountEmail so the change never goes unnoticed.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_task ~120

Fetches one task by id: title, notes, status, due (date only), completed timestamp, parent, position, updated, deleted/hidden flags, links and webViewLink. Also the safe way to verify state after an ambiguous write failure — writes are never retried automatically.

NameTypeReqDescription
task_idstringyesThe task id — from list_tasks, get_task or create_task output.
tasklist_idstringyesThe task list id — from list_tasklists or create_tasklist output. "@default" addresses the user's default list.

No output schema declared.

No examples provided.

get_tasklist ~91

Fetches one task list by id: id, title, updated, selfLink. Accepts "@default" for the user's default list — useful to resolve its real id. The list resource carries only metadata; the tasks themselves come from list_tasks.

NameTypeReqDescription
tasklist_idstringyesThe task list id — from list_tasklists or create_tasklist output. "@default" addresses the user's default list.

No output schema declared.

No examples provided.

list_tasklists ~152

Lists the user's task lists: id, title, updated (RFC3339). Every task lives in exactly one list, so this is the entry point — task tools need a tasklist_id from here (or the "@default" alias for the default list). Paginate with page_token from nextPageToken; page_size caps a page at 1000 and the API's default is already 1000, so one call usually returns everything. The API has no search or ordering — filter client-side.

NameTypeReqDescription
page_sizeintegerMax task lists per page (1..1000; the API's default is 1000).
page_tokenstringnextPageToken from the previous page.

No output schema declared.

No examples provided.

list_tasks ~456

Lists tasks in one list: id, title, notes, status (needsAction|completed), due (date only — the API never stores a time of day), completed timestamp, parent (subtask's parent id), position (opaque sort key within siblings — sort by it client-side; change it only via move_task), updated, deleted/hidden flags, webViewLink. IMPORTANT: tasks completed in Google's own apps are also flagged hidden — pass show_completed=true AND show_hidden=true to reliably see all completed tasks. For incremental sync poll with updated_min plus show_deleted=true and show_hidden=true, so deletions and clears are not missed (the API has no push notifications). due_min/due_max bound the due date; completed_min/completed_max the completion time. Paginate with page_token; page_size caps at 100 (API default 20). Filtering by due/completed dates implies those fields exist — tasks without a due date never match due bounds.

NameTypeReqDescription
completed_maxstringUpper bound on the completion date (RFC3339).
completed_minstringLower bound on the completion date (RFC3339).
due_maxstringUpper bound on the due date (RFC3339).
due_minstringLower bound on the due date (RFC3339).
page_sizeintegerMax tasks per page (1..100; the API's default is 20).
page_tokenstringnextPageToken from the previous page.
show_assignedbooleanInclude tasks assigned to the user from Google Docs / Chat spaces (API default false).
show_completedbooleanInclude completed tasks (API default true; needs show_hidden=true to catch tasks completed in Google's UI).
show_deletedbooleanInclude deleted tasks (API default false; for sync).
show_hiddenbooleanInclude hidden tasks (API default false).
tasklist_idstringyesThe task list id — from list_tasklists or create_tasklist output. "@default" addresses the user's default list.
updated_minstringOnly tasks modified after this RFC3339 UTC timestamp (updatedMin) — the sync filter.

No output schema declared.

No examples provided.

logout ~62

Revokes the stored token at Google (oauth2.googleapis.com/revoke) and deletes the local credentials file. Tokens supplied via env variables are NOT touched — remove them from the MCP client config manually; envTokenStillSet in the response says whether any are still in effect.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

move_task ~255

Moves a task: under a parent (subtask), after a sibling (previous), and/or into another list (destination_tasklist). Omitting parent puts it at the top level; omitting previous puts it first among its siblings — so calling with neither moves the task to the very top of its list. This is the ONLY way to change hierarchy or order (parent/position are read-only fields; positions are opaque strings maintained by the API). Constraints: parent and previous must be in the task's (destination) list; assigned tasks and recurrent tasks cannot be moved between lists. Returns the task with its new position.

NameTypeReqDescription
destination_taskliststringMove the task into this other task list.
parentstringNew parent task id — the task becomes its subtask. Omit for the top level.
previousstringSibling task id to place the task after (same parent). Omit for the first position.
task_idstringyesThe task id — from list_tasks, get_task or create_task output.
tasklist_idstringyesThe task list id — from list_tasklists or create_tasklist output. "@default" addresses the user's default list.

No output schema declared.

No examples provided.

raw_request ~208

Escape hatch to call any Google Tasks API v1 path directly, for requests the typed tools don't cover — e.g. a full-resource PUT ("tasks/v1/lists/<listId>/tasks/<taskId>", method PUT, body with the complete task), or a query combination the typed filters don't expose. The path is relative to https://tasks.googleapis.com and may carry a query string (e.g. "tasks/v1/lists/<listId>/tasks?showDeleted=true"). The Bearer token is added automatically; the method defaults to GET. PATCH/PUT/POST/DELETE hit live data with no confirmation — prefer the typed tools when one fits.

NameTypeReqDescription
bodyobjectJSON request body — sent for POST/PATCH/PUT/DELETE, ignored for GET.
methodstringHTTP method. Defaults to GET.
pathstringyesAPI path relative to https://tasks.googleapis.com, e.g. "tasks/v1/users/@me/lists".

No output schema declared.

No examples provided.

reopen_task ~116

Reverts a completed task to needsAction and clears its completed timestamp — the undo for complete_task. Works on hidden tasks too (tasks cleared with clear_completed_tasks): reopening un-hides them. Cannot resurrect a deleted task — deletion is permanent. Returns the updated task.

NameTypeReqDescription
task_idstringyesThe task id — from list_tasks, get_task or create_task output.
tasklist_idstringyesThe task list id — from list_tasklists or create_tasklist output. "@default" addresses the user's default list.

No output schema declared.

No examples provided.

set_client ~111

Saves the OAuth client credentials from the JSON file downloaded from Google Cloud Console ('Download JSON' on a Desktop-app client). Pass the file PATH — the secret must never be pasted into the chat. The client is stored once in the shared ~/.config/mcp-google-auth/client.json (owner-only) and reused by every mcp-google-* server; tokens stay per-server. After this, call start_login.

NameTypeReqDescription
pathstringyesAbsolute path to the client_secret_*.json file downloaded from Google Cloud Console.

No output schema declared.

No examples provided.

setup_instructions ~109

Step-by-step checklist for connecting this server to Google: creating a Google Cloud project and a Desktop-app OAuth client, publishing the consent screen (mandatory — Testing-mode refresh tokens die after 7 days), downloading the client JSON and handing its PATH to set_client. Works without any credentials; the checklist shortens to 'enable the API + log in' when an OAuth client is already configured (one client serves the whole mcp-google-* line). Never asks the user to paste secrets into the chat.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

start_login ~114

First step of connecting from the chat, without editing config files or restarting the client. Returns authorizeUrl — show it to the user as a clickable link and ask them to open it in the browser ON THIS MACHINE, pick the Google account and approve access. A one-shot listener on 127.0.0.1 catches Google's redirect; the code is exchanged locally and never passes through the chat. Does not open the browser itself. The attempt lives 10 minutes; when the browser shows the success page, call finish_login.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

update_task ~257

Changes a task's title, notes and/or due date (PATCH — only the provided fields change, at least one is required). clear_due=true / clear_notes=true erase the field entirely (you cannot clear by sending an empty string a Google API would keep). This tool does NOT change completion status (use complete_task / reopen_task), and cannot re-parent or reorder (use move_task) — parent and position are read-only in the task resource. Returns the updated task.

NameTypeReqDescription
clear_duebooleantrue removes the due date entirely (do not combine with due).
clear_notesbooleantrue removes the notes entirely (do not combine with notes).
duestringNew due date: YYYY-MM-DD or RFC3339 (only the date is stored).
notesstringNew notes text (max 8192 chars; replaces the old notes).
task_idstringyesThe task id — from list_tasks, get_task or create_task output.
tasklist_idstringyesThe task list id — from list_tasklists or create_tasklist output. "@default" addresses the user's default list.
titlestringNew task title (max 1024 chars).

No output schema declared.

No examples provided.

update_tasklist ~95

Renames a task list (PATCH — the title is the only field the API lets you change). Tasks, their order and their completion state are untouched. Returns the updated list resource.

NameTypeReqDescription
tasklist_idstringyesThe task list id — from list_tasklists or create_tasklist output. "@default" addresses the user's default list.
titlestringyesThe new list title (max 1024 chars).

No output schema declared.

No examples provided.

Common questions

What is the Google Tasks MCP server?

Google Tasks MCP is listed in the public MCP registry as io.github.A1-x-Tech/mcp-google-tasks. MCP server for the Google Tasks API: task lists, subtasks, due dates, complete and move tasks. This page covers its npm package (mcp-google-tasks).

Is the Google Tasks MCP server safe to use?

Google Tasks MCP scores 79 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the Google Tasks MCP server expose?

Google Tasks MCP exposes 21 tools: auth_status, setup_instructions, set_client, start_login, finish_login, and 16 more. Their descriptions and schemas cost roughly 3,319 tokens of context every time the server is loaded.

Is the Google Tasks MCP server still maintained?

Google Tasks MCP is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the Google Tasks MCP server under?

Google Tasks MCP declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.