ebmurha avatar

Google Tasks MCP Server

ebmurha/google-tasks-mcp

Connects your MCP client to Google Tasks through a self-hosted server you control with your own OAuth credentials. You get 19 tools covering tasklists and tasks: create, read, update, delete, move, complete, plus specialized views like today, overdue, upcoming, search, and digest. Runs over stdio for local client launches or streamable HTTP for VPS hosting with bearer token auth. Supports multi-account routing so you can point one client at your personal Tasks and another at work. Responses are compact for low-context workflows. Reach for this when you want an AI assistant to read your agenda, add tasks during conversations, or query overdue items without opening the Google Tasks UI.

GitHub stars
1
tools
14
auth
Secret needed
transport
STDIO
env vars
5
last updated
May 22, 2026

Tools

14 tools

Public tool metadata for what this MCP can expose to an agent.

GOOGLETASKS_CLEAR_TASKSPermanently clears all completed tasks from a specified Google Tasks list; this action is destructive and idempotent.1 params

Permanently clears all completed tasks from a specified Google Tasks list; this action is destructive and idempotent.

Parameters* required
taskliststring
The identifier of the task list from which to clear completed tasks. Use '@default' for the default task list.
GOOGLETASKS_CREATE_TASK_LISTCreates a new task list with the specified title.1 params

Creates a new task list with the specified title.

Parameters* required
tasklist_titlestring
Title for the new task list. The maximum allowed length is 1024 characters.
GOOGLETASKS_DELETE_TASKDeletes a specified task from a given task list in Google Tasks.2 params

Deletes a specified task from a given task list in Google Tasks.

Parameters* required
task_idstring
The unique identifier of the Google Task to be deleted.
tasklist_idstring
The unique identifier of the Google Task list from which the task will be deleted.
GOOGLETASKS_DELETE_TASK_LISTPermanently deletes an existing Google Task list, identified by `tasklist_id`, along with all its tasks; this operation is irreversible.1 params

Permanently deletes an existing Google Task list, identified by `tasklist_id`, along with all its tasks; this operation is irreversible.

Parameters* required
tasklist_idstring
Unique identifier of the Google Task list to be deleted.
GOOGLETASKS_GET_TASKUse to retrieve a specific Google Task if its `task_id` and parent `tasklist_id` are known.2 params

Use to retrieve a specific Google Task if its `task_id` and parent `tasklist_id` are known.

Parameters* required
task_idstring
Unique identifier of the Google Task to retrieve.
tasklist_idstring
Unique identifier of the Google Tasks list containing the task.
GOOGLETASKS_GET_TASK_LISTRetrieves a specific task list from the user's Google Tasks if the `tasklist_id` exists for the authenticated user.1 params

Retrieves a specific task list from the user's Google Tasks if the `tasklist_id` exists for the authenticated user.

Parameters* required
tasklist_idstring
The unique identifier of the task list to retrieve, assigned by Google Tasks when the list is created.
GOOGLETASKS_INSERT_TASKCreates a new task in a given `tasklist_id`, optionally as a subtask of an existing `task_parent` or positioned after an existing `task_previous` sibling, where both `task_parent` and `task_previous` must belong to the same `tasklist_id` if specified. IMPORTANT: Date fields (d...12 params

Creates a new task in a given `tasklist_id`, optionally as a subtask of an existing `task_parent` or positioned after an existing `task_previous` sibling, where both `task_parent` and `task_previous` must belong to the same `tasklist_id` if specified. IMPORTANT: Date fields (d...

Parameters* required
completedstring
Date/time when the task was marked as completed. Only applicable when status='completed'. Unlike 'due', this field preserves the time component. Google Tasks API requires dates in RFC3339 format (...
deletedboolean
Whether the task has been deleted. Deleted tasks are marked but not immediately removed, allowing for recovery. Default: false
duestring
Due date for the task (optional). NOTE: Google Tasks only stores the date portion - any time provided will be normalized to midnight UTC by the API. Google Tasks API requires dates in RFC3339 form...
etagstring
ETag of the resource for concurrency control. Prevents accidental overwrites when multiple clients modify the same task. Auto-generated by the API.
hiddenboolean
Whether the task is hidden from the default view. Hidden tasks can still be accessed via API but won't show in UI. Default: false
idstring
Unique identifier for the task. Generated by Google Tasks API when creating a task. Used for updating or deleting existing tasks.
notesstring
Additional details or description for the task. Supports plain text only (no HTML/markdown). Maximum 8192 characters. Example: 'Include Q3 sales data and projections'
statusstring
Current status of the task (REQUIRED). Must be either 'needsAction' (task is pending) or 'completed' (task is done). Default: 'needsAction'one of needsAction · completed
task_parentstring
Identifier of an existing task to serve as parent; if provided, creates a subtask, otherwise a top-level task in the specified list.
task_previousstring
Identifier of an existing task after which the new task will be placed, at the same hierarchical level (as a sibling).
tasklist_idstring
Identifier for the Google Task list where the new task will be created. Use actual task list IDs, not '@default'. You can get list IDs using 'List Task Lists' action.
titlestring
Title/name of the task (REQUIRED). This is the main text displayed for the task. Maximum 1024 characters. Example: 'Complete quarterly report'
GOOGLETASKS_LIST_TASK_LISTSFetches the authenticated user's task lists from Google Tasks; results may be paginated.2 params

Fetches the authenticated user's task lists from Google Tasks; results may be paginated.

Parameters* required
maxResultsinteger
Maximum number of task lists to return per page.default: 20
pageTokenstring
Token for the page of results to return; omit for the first page, use `nextPageToken` from a previous response for subsequent pages.
GOOGLETASKS_LIST_TASKSRetrieves tasks from a Google Tasks list; all date/time strings must be RFC3339 UTC, and `showCompleted` must be true if `completedMin` or `completedMax` are specified.11 params

Retrieves tasks from a Google Tasks list; all date/time strings must be RFC3339 UTC, and `showCompleted` must be true if `completedMin` or `completedMax` are specified.

Parameters* required
completedMaxstring
Exclude tasks completed after this date. Google Tasks API requires dates in RFC3339 format (e.g., 2025-09-22T13:48:27Z). We automatically convert various human-readable formats to RFC3339: Accept...
completedMinstring
Exclude tasks completed before this date. Google Tasks API requires dates in RFC3339 format (e.g., 2025-09-22T13:48:27Z). We automatically convert various human-readable formats to RFC3339: Accep...
dueMaxstring
Exclude tasks due after this date. Google Tasks API requires dates in RFC3339 format (e.g., 2025-09-22T13:48:27Z). We automatically convert various human-readable formats to RFC3339: Accepted for...
dueMinstring
Exclude tasks due before this date. Google Tasks API requires dates in RFC3339 format (e.g., 2025-09-22T13:48:27Z). We automatically convert various human-readable formats to RFC3339: Accepted fo...
maxResultsinteger
Maximum number of tasks to return. API default: 20, maximum: 100.
pageTokenstring
Token from a previous list operation for fetching a specific page; if omitted, retrieves the first page.
showCompletedboolean
Include completed tasks. Defaults to true. (See action docstring for interaction with `completedMin`/`Max`).
showDeletedboolean
Include deleted tasks. Defaults to false.
showHiddenboolean
Include hidden tasks. Defaults to false.
tasklist_idstring
Identifier of the task list. Use '@default' for the user's primary task list.
updatedMinstring
Lower bound for task's last modification time (for syncing). Google Tasks API requires dates in RFC3339 format (e.g., 2025-09-22T13:48:27Z). We automatically convert various human-readable formats...
GOOGLETASKS_MOVE_TASKMoves the specified task to another position in the destination task list.5 params

Moves the specified task to another position in the destination task list.

Parameters* required
destinationTaskliststring
Destination task list identifier. If set, the task is moved to this list; otherwise, it remains in its current list.
parentstring
New parent task identifier. If not provided, the task is moved to the top level.
previousstring
New previous sibling task identifier. If not provided, the task is moved to the first position among its siblings.
taskstring
Task identifier.
taskliststring
Task list identifier.
GOOGLETASKS_PATCH_TASKPartially updates an existing task (identified by `task_id`) within a specific Google Task list (identified by `tasklist_id`), modifying only the provided attributes from `TaskInput` (e.g., `title`, `notes`, `due` date, `status`) and requiring both the task and list to exist.11 params

Partially updates an existing task (identified by `task_id`) within a specific Google Task list (identified by `tasklist_id`), modifying only the provided attributes from `TaskInput` (e.g., `title`, `notes`, `due` date, `status`) and requiring both the task and list to exist.

Parameters* required
completedstring
Date/time when the task was marked as completed. Only applicable when status='completed'. Unlike 'due', this field preserves the time component. Google Tasks API requires dates in RFC3339 format (...
deletedboolean
Whether the task has been deleted. Deleted tasks are marked but not immediately removed, allowing for recovery. Default: false
duestring
Due date for the task (optional). NOTE: Google Tasks only stores the date portion - any time provided will be normalized to midnight UTC by the API. Google Tasks API requires dates in RFC3339 form...
etagstring
ETag of the resource for concurrency control. Prevents accidental overwrites when multiple clients modify the same task. Auto-generated by the API.
hiddenboolean
Whether the task is hidden from the default view. Hidden tasks can still be accessed via API but won't show in UI. Default: false
idstring
Unique identifier for the task. Generated by Google Tasks API when creating a task. Used for updating or deleting existing tasks.
notesstring
Additional details or description for the task. Supports plain text only (no HTML/markdown). Maximum 8192 characters. Example: 'Include Q3 sales data and projections'
statusstring
Current status of the task (REQUIRED). Must be either 'needsAction' (task is pending) or 'completed' (task is done). Default: 'needsAction'one of needsAction · completed
task_idstring
Identifier of the Google Task to be updated within the specified task list.
tasklist_idstring
Identifier of the Google Task list that contains the task to be updated.
titlestring
Title/name of the task (REQUIRED). This is the main text displayed for the task. Maximum 1024 characters. Example: 'Complete quarterly report'
GOOGLETASKS_PATCH_TASK_LISTUpdates the title of an existing Google Tasks task list.2 params

Updates the title of an existing Google Tasks task list.

Parameters* required
tasklist_idstring
The unique identifier of the task list to be updated.
updated_titlestring
The new title for the task list.
GOOGLETASKS_UPDATE_TASKUpdates the specified task.6 params

Updates the specified task.

Parameters* required
duestring
Due date of the task (RFC 3339 timestamp).
notesstring
Notes describing the task.
statusstring
Status of the task ("needsAction" or "completed").
taskstring
Task identifier.
taskliststring
Task list identifier.
titlestring
Title of the task.
GOOGLETASKS_UPDATE_TASK_LISTUpdates the authenticated user's specified task list.2 params

Updates the authenticated user's specified task list.

Parameters* required
tasklist_idstring
Task list identifier.
titlestring
Title of the task list. Maximum length allowed: 1024 characters.

Sponsors

Configuration

GOOGLE_CLIENT_ID*secret

Google OAuth client ID from the user's Google Cloud project.

GOOGLE_CLIENT_SECRET*secret

Google OAuth client secret from the user's Google Cloud project.

GOOGLE_REDIRECT_URI*

OAuth callback URL for the user's local or hosted server.

DB_PATH

Persistent SQLite database path for tokens and cache.

DEFAULT_TASKLIST

Optional default tasklist title or ID.

Readme

Google Tasks MCP Server

Connect an MCP-compatible client to Google Tasks through a private server you run yourself. The server exposes compact tools for reading, searching, summarizing, creating, completing, updating, deleting, and moving Google Tasks.

This project is for self-hosted use. You provide your own Google Cloud OAuth credentials, connect your own Google account, and keep tokens in your own SQLite database.

What You Get

  • 19 MCP tools for Google Tasks.
  • Local stdio mode for desktop/client-launched setups.
  • Streamable HTTP mode for local HTTP or VPS hosting.
  • Bearer-token HTTP auth, plus optional OAuth 2.0 gateway mode for MCP clients that support OAuth.
  • Compact responses designed for low-context assistant workflows.
  • Optional operator-managed multi-account bearer-token routing, for familiar setups such as one personal account and one work account.

Choose A Transport


View the full README on GitHub

Details

Repository
github.com/ebmurha/google-tasks-mcp
Package
google-tasks-mcp
Transport
STDIO
Auth
Required
Registry
MCP registry, active