Skip to main content
Glama
google-tasks-mcp-server

google-tasks-mcp-server

by Kouta-i5

google-tasks-mcp-server

An MCP server (stdio) for operating Google Tasks. It provides CRUD for task lists and tasks, completion toggling, reordering/moving, and batch-hiding of completed tasks.

Google's official Workspace MCP servers (Gmail / Calendar / Drive, etc.) do not include Tasks, so I built this to fill that gap.

Design principles

  • Credentials are passed via a file. You specify the path to the client_secret_*.json downloaded from GCP in an environment variable, so you do not have to write the client secret in plain text in the MCPconfiguration file.

  • First-time authentication is done in a separate CLI. Because the MCP server occupies stdout with JSON-RPC, mixing in browser launches or logs would break the protocol. Pulling authentication into npm run auth avoids that conflict and makes failures easier to isolate.

  • Tasks-Only scope. It only requests https://www.googleapis.com/auth/tasks.

  • Updates use patch. update would erase unspecified fields, so partial updates always use patch.

Related MCP server: Mini Task MCP Server

Setup

1. Prepare GCP

  1. Enable Google Tasks API in APIs & Services → Library

  2. Create an OAuth 2.0 Clientes ID in Credentials, and use Desktop app as the application type.

    • Because a Desktop app can use any loopback port as its configured redirect target, you do not need to register a redirect URI.

  3. Downloade the JSON (client_secreat_xxx.json).

  4. If the OAuth consent screen is in “Testing” status, add your own Google account as a test user.

2. Build

npm install
npm run build

3. First-time authentication

Authenticate by specifying the path to the client_secret_*.json. A browser will open, so approve it.

GOOGLE_TASKS_CLIENT_SECRET_PATH=~/path/to/client_secret_xxx.json npm run auth

The token are saved to ~/.config/google-tasks-mcp-server/token.json with permissions 0600. From then on, the refresh token refreshes it automatically, so this step is required only the first time.

4. Register with the MCP client

For Claude Code:

claude mcp add google-tasks \
  -e GOOGLE_TASKS_CLIENT_SECRET_PATH=$HOME/path/to/client_secret_xxx.json \
  -- node /absolute/path/to/google-tasks-mcp-server/dist/index.js

If you write it directly in .mcp.json:

{
  "mcpServers": {
    "google-tasks": {
      "command": "node",
      "args": ["/absolute/path/to/google-tasks-mcp-server/dist/index.js"],
      "env": {
        "GOOGLE_TASKS_CLIENT_SECRET_PATH": "/absolute/path/to/client_secret_xxx.json"
      }
    }
  }
}

Environment variables

Variable

Required

Default

Description

=GOOGLE_TASKS_CLIENT_SECRET_PATH`

Yes

—

Path to the client_secret_*.json downloaded from GCP

GOOGLE_TASKS_TOKEN_PATH

~/.config/google-tasks-mcp-server/server.json

Location where auth token is saved

Tools

When omitted, the tasklist defaults to @not (the default task list).

Tasks lists

Tool

Description

list-tasklists

Lists task lists. Get the IDs to pass to other tools from here.

get-task...

Gets a single task list.

create-tasks

Creates a task list.

update-tasks

Renames a task list.

delete-tasks

Deletes a task list (and its tasks).

Tasks

Tool

Description

list-tasks

Lists tasks. Supports by due date and update timestamp.

get-ask

Gets a single task.

create-ask

Creates a task. When parent is specified, it becomes a subtask.

update-ask

Partially updates a task (only the specified items are changed).

complete-ask

Tooggle between complete/incomplete.

move-ask

Reorders, turns into a subtask, or moves to another list.

delete-ask

Deletes a task.

clear-completed-tasks

Batch-hides completed tasks.

Notes on usage

  • No time is stored in the due value. due is passed as RFC 3339, but Google Tasks retains only the date portion.

  • Retrieving completed tasks requires showHidden. showCompleted: true alone does not return tasks completed by other clients, so this server automatically adds showHidden when showCompleted: true is used.

  • clear-completed-tasks is not a deletion. It only hides them, and they can be retrieved with showHidden: true.

  • Due-date filters are corrected to be inclusive of the specified date. Google Tasks API’s dueMax is exclusive on date basis; even if you pass the day at 23:59:59, zero tasks due that day are returned (you need to pass the next day at 0:00). Because that is counterintuitive, this server normalizes dueMin and dueMax to date boundaries so both filters include the specified date.

Development

npm run typecheck   # 型チェックのみ
npm run build       # dist/ に出力
npm run auth        # 初回認証

License

MIT

Setup script

After completing the GCP console steps (enabling Google Tasks API, creating an OAuth 2.0 desktop app client, and downloadeing the JSON), you can run everything else at once.

./scripts/setup.sh

It automatically searches ~/Downloads for client_secret*.json , verifies its type, places it in ~/.config/google-tasks-mcp-server/ with permission 600, then runs to build, authenticates the first time, and registers the MCP server. If the file is elsewhere, pass its path.

./scripts/setup.sh /path/to/client_secret.json

Available Tools

13 tools
clear-completed-tasks完了タスクの一括非表示A
Destructive

タスクリスト内の完了済みタスクをまとめて非表示にする。一覧には出なくなるが、showHidden: true を指定すれば取得できる。

Inputs: tasklist.

complete-taskタスクを完了にするC

タスクを完了にする。completed を false にすると未完了に戻す。

Inputs: task (required), tasklist, completed.

create-taskタスク作成A

タスクを作成する。parent を指定するとサブタスクになる。

Inputs: title (required), due, notes, parent, +2 more.

create-tasklistタスクリスト作成B

新しいタスクリストを作成する。

Inputs: title (required).

delete-taskタスク削除B
Destructive

タスクを削除する。取り消せない。

Inputs: task (required), tasklist.

delete-tasklistタスクリスト削除A
Destructive

タスクリストを削除する。中のタスクもすべて消える。取り消せない。

Inputs: tasklist (required).

get-taskタスク取得B
Read-only

タスク 1 件の詳細を取得する。

Inputs: task (required), tasklist.

get-tasklistタスクリスト取得B
Read-only

指定したタスクリストの情報を取得する。

Inputs: tasklist.

list-tasklistsタスクリスト一覧A
Read-only

認証中のアカウントが持つタスクリストを一覧する。他ツールに渡す tasklist ID はここで得る。

Inputs: pageToken, maxResults.

list-tasksタスク一覧A
Read-only

タスクリスト内のタスクを一覧する。期限や更新日時での絞り込みができる。API 経由で完了にしたタスクは既定でも一覧に含まれる(clear-completed-tasks で非表示にできる)。

Inputs: dueMax, dueMin, tasklist, pageToken, +7 more.

move-taskタスクの移動・並べ替えA

タスクの位置を変える。parent でサブタスク化、previous で並び順、destinationTasklist で別のタスクリストへ移動できる。

Inputs: task (required), parent, previous, tasklist, +1 more.

update-taskタスク更新A

タスクの内容を部分更新する。指定した項目だけが変わり、他は保持される。完了にするだけなら complete-task を使う。

Inputs: task (required), due, notes, title, +2 more.

update-tasklistタスクリスト名の変更B

タスクリストの名前を変更する。

Inputs: title (required), tasklist.

Tool Schema Changelog

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

Loading tool schema changelog…

    TDQS

    A3.9/5.0

    Scored across 13 tools

    Disambiguation5/5

    Every tool has a clearly distinct purpose: tasklist CRUD, task CRUD, and specific actions (complete, move, clear). No two tools overlap in functionality, and the descriptions reinforce their boundaries.

    Naming Consistency5/5

    All tool names follow a consistent verb_noun pattern in lowercase with hyphens (e.g., list-tasklists, get-task, delete-task). The naming is uniform and predictable across both tasklists and tasks.

    Tool Count5/5

    With 13 tools, the set is well-scoped for a Google Tasks server. It covers both tasklists and tasks with CRUD operations plus useful extras (complete, move, clear-completed) without unnecessary bloat.

    Completeness5/5

    The tool surface is complete for the domain: full CRUD for tasklists and tasks, plus lifecycle operations like completion and moving. There are no missing essential operations or dead ends.

    Maintenance

    ActivityStale
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers