Skip to main content
Glama

google-tasks-mcp

MCP server that lets Claude read, create and complete Google Tasks.

Tools

Tool

Purpose

tasks_context

Open tasks from all lists, grouped: overdue, due soon, no due date, later, created by Claude. Meant to be loaded at the start of a conversation.

list_task_lists

Task lists.

list_tasks

Tasks in one list, filtered by text, due date, completion or creator.

create_task

New task: title, notes, due date (YYYY-MM-DD), list, parent task.

update_task

Change title, notes or due date.

complete_task, reopen_task

Change status.

Tasks created through the server get [created-by: claude] appended to their notes. Claude completes such tasks on its own when the work is done; any other task is completed only with user_requested=true, which the server enforces.

Related MCP server: Things MCP Server

Requirements

  • Python 3.10+

  • A Google Cloud project with the Google Tasks API enabled and an OAuth client of type Desktop app (download its JSON). Add your account as a test user on the OAuth consent screen. While the app is in Testing, the token expires after 7 days; publish the app to avoid that.

Setup

python3 -m venv .venv
.venv/bin/pip install .
.venv/bin/google-tasks-mcp auth --client-secret client_secret.json

auth opens a browser for Google sign-in and stores a Tasks-only token in ~/.config/google-tasks-mcp/token.json (mode 0600; override the directory with GOOGLE_TASKS_MCP_HOME). The client JSON is deleted afterwards unless --keep-client-secret is passed.

Other commands: status checks the token, logout revokes and deletes it.

Register with Claude Code:

claude mcp add google-tasks --scope user -- /path/to/.venv/bin/google-tasks-mcp

or in Claude Desktop's claude_desktop_config.json:

{ "mcpServers": { "google-tasks": { "command": "/path/to/.venv/bin/google-tasks-mcp" } } }

Tests

.venv/bin/pip install -e '.[test]' && .venv/bin/pytest

Available Tools

7 tools
complete_taskA

Mark a task completed. Without user_requested=true only tasks created by Claude can be completed; set it only when the user explicitly asked to complete this task.

Inputs: task_id (required), tasklist, user_requested. Returns: object

create_taskA

Create a task (marked as created by Claude). due is YYYY-MM-DD; tasklist is a list id or title; parent_task_id makes it a subtask.

Inputs: title (required), due, notes, tasklist, +1 more. Returns: object

list_task_listsA

List the user's Google Tasks lists (id and title).

Inputs: no named parameters. Returns: result

list_tasksA

List tasks in one list. tasklist is a list id or title (default list if omitted). query filters by text in title/notes; due_before (YYYY-MM-DD) keeps tasks due on or before that date.

Inputs: limit, query, tasklist, due_before, +2 more. Returns: result

reopen_taskC

Mark a completed task as not done again (same ownership rule as complete_task).

Inputs: task_id (required), tasklist, user_requested. Returns: object

tasks_contextB

Snapshot of all open tasks across every list for use as conversation context: overdue, due within days_ahead days, without a due date, later, and the open tasks Claude created earlier (candidates for automatic completion).

Inputs: days_ahead. Returns: object

update_taskA

Change a task's title, notes or due date (YYYY-MM-DD; empty string clears it). Only fields that are passed are changed.

Inputs: task_id (required), due, notes, title, +1 more. Returns: object

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.5/5.0

    Scored across 7 tools

    Disambiguation4/5

    Most tools have clearly distinct actions (create, update, complete, reopen), and list_task_lists is unique. The only potential overlap is list_tasks versus tasks_context, since both return task data, but their descriptions clearly distinguish single-list filtered listing from a cross-list contextual snapshot.

    Naming Consistency4/5

    Six of seven tools follow a clear verb_noun pattern (create_task, update_task, complete_task, reopen_task, list_task_lists, list_tasks). The outlier tasks_context is a noun phrase rather than an action, which is a minor inconsistency but remains understandable.

    Tool Count5/5

    Seven tools is well-scoped for a Google Tasks integration, covering task creation, modification, completion lifecycle, and listing. No tool feels redundant or extraneous.

    Completeness3/5

    Core task lifecycle operations are covered, but there is no delete_task or get_task operation, and list management only supports listing rather than creating, renaming, or deleting task lists. These are notable gaps for full Google Tasks coverage, though common assistant workflows can mostly work around them.

    Related MCP Connectors

    Related MCP Servers