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: Notion MCP Integration

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYes
tasklistNo
user_requestedNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the full burden; it does disclose a meaningful authorization constraint (Claude-created tasks only, gated by user_requested), which is exactly the kind of context annotations would otherwise provide. However, it does not say what happens on rejection (error vs. silent no-op), whether completion is reversible via reopen_task, or what role tasklist plays.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the action and immediately followed by the constraint that governs correct invocation; nothing is padding. The second sentence is dense and slightly convoluted, but every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described, and the core gating rule is present. Still, for a mutation tool with zero annotation coverage, the undefined tasklist parameter and the unstated failure mode for tasks not created by Claude leave an agent guessing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so extra param meaning must come from the description. It explains user_requested well, including its default-false implication and the condition for setting it, while tasklist is left entirely unexplained and task_id is only implied by the name.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Mark a task completed") that an agent can act on immediately, and the state-change framing distinguishes it from list_tasks or create_task. It does not explicitly contrast with update_task or reopen_task, which are the nearest ambiguous siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a concrete conditional rule: without user_requested=true only Claude-created tasks can be completed, and the flag should be set only when the user explicitly asked. That is real when-to-use guidance, though it doesn't say when to prefer reopen_task or update_task instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dueNo
notesNo
titleYes
tasklistNo
parent_task_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are absent, so the description carries the full load. It usefully discloses the Claude-author attribution side effect and the subtask behavior of parent_task_id, but says nothing about failure modes (e.g., an unknown tasklist title) or whether omitted fields get defaults. Adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, zero filler, and the core action is front-loaded before the per-parameter clarifications. Every clause carries information the schema does not.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described. For a 5-parameter mutation tool with no annotations, the description covers the non-obvious parameters and the attribution behavior; only error/default behavior around `tasklist` and `notes` is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate, and it does for the ambiguous parameters: `due` format is given as YYYY-MM-DD, `tasklist` accepts an id or a title, and `parent_task_id` is explained as making the task a subtask. `notes` and `title` are left implicit but are self-evident given `title` is required.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Create a task") plus a distinguishing side-effect detail: the task is attributed to Claude. It does not name or contrast with siblings like update_task, but the verb is unambiguous enough that an agent can pick it out of the list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to prefer this over update_task or whether a tasklist must exist first (list_task_lists is a sibling). The usage is only implied by the word "Create"; no prerequisites or exclusions are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_task_listsA

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the disclosure burden. It signals a read operation by returning id/title, but does not state pagination behavior, ordering, or whether all lists are returned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single efficient sentence with the resource and return shape front-loaded; nothing wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter read tool with an output schema covering return values, the description is nearly complete. Minor gap: no note on result ordering or whether pagination applies.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Zero parameters, so the baseline of 4 applies. The description's mention of returned fields adds a small amount of value but no parameter semantics are needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('List') and resource ('user's Google Tasks lists'), and the parenthetical specifies the returned fields (id and title). The plural 'lists' distinguishes it from list_tasks, though the description does not explicitly name that distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied — an agent can infer this is used to discover task-list IDs before calling list_tasks or create_task — but there is no explicit when-to-use guidance or named alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryNo
tasklistNo
due_beforeNo
show_completedNo
only_created_by_claudeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It implies a read-only listing and explains filtering semantics, but is silent on the two boolean flags that materially change results (show_completed, only_created_by_claude) and on how `limit` truncates output.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences, front-loaded with the core action and then parameter semantics, with no filler or restatement of the name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return value explanation is not required, and the filtering trio is well covered. But for a 6-parameter tool with zero schema descriptions and no annotations, three undocumented parameters (including both booleans that shape results) leave the agent guessing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description is the only documentation. It usefully clarifies that `tasklist` accepts an id OR a title and that `due_before` is inclusive and YYYY-MM-DD, but leaves `limit`, `show_completed`, and `only_created_by_claude` entirely undefined.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('List tasks') and scopes it to one list, which separates it from write siblings like create_task and update_task. It does not explicitly distinguish itself from list_task_lists, but the resource noun (tasks vs. lists) does most of that work.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied by the read/list framing and the note that the default list is used when `tasklist` is omitted. There is no explicit when-to-use or when-not-to-use guidance, and no mention of when filtering by query/due_before is preferred over fetching and filtering downstream.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reopen_taskC

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

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYes
tasklistNo
user_requestedNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden, but it does useful work by disclosing an ownership/permission constraint via reference to complete_task. It remains silent on side effects, failure modes (already-open task, task with dependents), and whether reopening requires a tasklist. Partial but meaningful disclosure for a mutation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler; the parenthetical adds real information rather than restating. Slightly dense given it compresses an important authorization rule into a cross-reference.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need not be described, but for a mutation with three undocumented parameters and no annotations, the description does not say what gets changed, whether the tasklist param is required to locate the task, or what the user_requested flag does. Too thin for the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% — task_id, tasklist, and user_requested have no descriptions anywhere — and the description supplies nothing about them. The mention of an ownership rule is the only implied gating context, leaving user_requested in particular unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete verb (mark as not done) and resource (a completed task), making the inverse-of-complete relationship clear. It stops short of distinguishing itself from update_task, which could plausibly also change status, so it is not fully sibling-differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only usage guidance is the parenthetical 'same ownership rule as complete_task', which is an authorization hint rather than a when-to-use/when-not rule. It never says to prefer this over update_task for status changes, nor what to do if the task is not currently completed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
days_aheadNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It does disclose the useful behavioral trait of which buckets are included and flags that agent-created open tasks are surfaced as completion candidates, but it says nothing about read-only safety posture, ordering, volume limits, or paging across all lists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense sentence that front-loads the core purpose (snapshot of open tasks across every list) before enumerating buckets. No filler, though the bucket enumeration is compressed into a hard-to-parse list.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return shape needs no explanation, and the description adequately conveys what content is aggregated. The remaining gap is routing: with six sibling tools including list_tasks, the agent is left to infer when this snapshot is preferable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter days_ahead is undocumented in the schema (0% coverage), and the description only implicitly defines it as the window for the 'due within' bucket. It does not state the unit convention beyond 'days' or note that omitting it falls back to the default of 7.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific resource (open tasks across every list) and specifies the exact composition of the snapshot: overdue, due within a window, no due date, later, and agent-created tasks. This makes it distinguishable in substance from list_tasks, though it never explicitly contrasts itself with that sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'for use as conversation context' implies the scenario, and the parenthetical about automatic-completion candidates hints at a downstream action. However, there is no explicit guidance on when to choose this over list_tasks, nor any stated conditions or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dueNo
notesNo
titleNo
task_idYes
tasklistNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Since no annotations are provided, the description carries the full burden of behavioral disclosure. It provides essential non-structural information: the required date format (YYYY-MM-DD) and the functional behavior of passing an empty string to clear a field. This detail is critical.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The definition is exceptionally concise, front-loading the core functionality in the first sentence and clearly stating the crucial constraint of partial updating in the second. There is no wasted language.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description provides complete context regarding the constraints and expected input behavior, which is vital given the lack of formal annotations. The combination of the schema and the description provides everything needed for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description must compensate. It successfully adds meaning to the primary modification parameters by specifying data types and the semantic purpose of 'null' values (to clear the field), significantly helping the agent.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the resource ('a task') and the action ('change'), explicitly listing the fields affected (title, notes, due date). While it doesn't name a sibling tool it isn't, the operation is distinct from siblings like 'complete_task'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides the crucial operational guideline that only passed fields are changed, which governs usage. However, it lacks explicit high-level guidance on when to use this specific update tool versus other potential alternatives or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

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

  1. 7 tool updatesv0.1.0
    • First observedcomplete_task
    • First observedcreate_task
    • First observedlist_task_lists
    • First observedlist_tasks
    • First observedreopen_task
    • First observedtasks_context
    • First observedupdate_task

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.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers