MewCP LogoAStheTech
MCPs
Use Cases

Use cases by category

Productivity & InboxInbox, calendar, and daily flowEngineering & DevOpsShip, debug, and run on-callSales & CRMPipeline, outreach, and dealsMarketing & GrowthCampaigns, SEO, and growthSupport & SuccessTriage tickets, keep customers happyFinance & OpsClose, reconcile, and expensesCreative & ContentGenerate assets and contentPeople & HiringHiring, onboarding, and HRResearch & DataSynthesize data and insights
See all use cases
BlogsPricingDocsSign in
MewCP Logo

Infrastructure You Can Trust for Agentic Products

X

Categories

  • Productivity & Docs
  • Developer Tools
  • CRM & Sales
  • Finance & Commerce
  • Data & Analytics
  • Marketing & SEO
  • Search & Web
  • Communication
  • View All Servers →

Resources

  • Blog
  • Docs
  • Privacy Policy
  • Terms of Service

Blogs

  • View All Blogs →
Browse Servers|Pricing|Contact

Browse by Category

Productivity & Docs

  • Gmail
  • Google Drive
  • Google Classroom
  • Google Calendar
  • Google People
  • YouTube
  • Notion
  • ClickUp
  • Figma
  • Google Tasks

Developer Tools

  • Gemini
  • Veo
  • ClickUp
  • Firecrawl
  • Vercel
  • Apify
  • Github
  • HTTP
  • Chef
  • Scientific Calculator
  • Figma
  • Perplexity

CRM & Sales

  • Google People

Finance & Commerce

  • Razorpay
  • Polymarket
  • Kite
  • Stripe
  • Binance

Marketing & SEO

  • Mailchimp
  • Google Business
  • YouTube
  • Google Search Console

Search & Web

  • Web Scrapper
  • Firecrawl
  • Apify
  • Perplexity
  • Context.dev

Communication

  • Gmail
  • Google Meet
  • Mailchimp
  • Google Calendar
  • WhatsApp
  • Slack

© 2026 MewCP. All rights reserved.

Google Tasks

Google Tasks

v1.0.00 callsOAuthGitHub
Open in ChatGPTChatGPT
Open in ClaudeClaude

Documentation

Guide

Connect

Gateway URL

https://gateway.mewcp.com/google-tasks/mcp

Integrations

Click a client to view its config snippet and setup steps, or use Connect above to add this server and get your key.

Help Improve This Server

Missing a tool?

Found a bug?

Have an idea for an improvement?

Share your feedback directly with the maintainers - every feedback helps make this server better for everyone.

Open GitHub Issues →

Create, track, and manage Google Tasks and task lists — directly from your AI workflows.

A Model Context Protocol (MCP) server that exposes Google Tasks' API for creating, listing, updating, completing, and deleting tasks and task lists.

Overview

The Google Tasks MCP Server provides full programmatic access to Google Tasks through a stateless, multi-tenant interface:

  • List, create, update, and delete task lists
  • List, create, look up, update, complete, and delete individual tasks
  • Every mutating tool that overwrites state (update_task, update_tasklist) returns both the before and after state of the resource

Perfect for:

  • Automating to-do list management and task tracking from AI agents
  • Building assistants that can create and complete tasks on a user's behalf
  • Integrating Google Tasks actions into LLM-powered pipelines and reminders

Tools

List all task lists accessible by the user. Returns task list IDs, titles, and metadata. Use the task list ID from the response to access tasks within a list.

Inputs:

(none)

output data schema:

{
  count: number;
  tasklists: {
    id: string;
    title: string | null;
    updated: string | null;
    etag: string | null;
    kind: string | null;
    selfLink: string | null;
  }[];
  next_page_token: string |

Create a new task in a specific task list. Provide the task list ID, title, and optional notes and due date. Returns the created task with its assigned ID.

Inputs:

- `tasklist_id` (string, required) — The unique ID of the Google Tasks list.
- `title` (string, required) — The title of the new task.
- `notes` (string, optional, default: "") — Optional details or description for the task.
- `due` (string, optional, default: "") — Optional due date. MUST be an RFC 3339 timestamp (e.g., '2026-06-17T00:00:00.000Z').

output data schema:

Gets the detail of a specific task from the task list. Returns the full task object including title, notes, due date, status, and position.

Inputs:

- `tasklist_id` (string, required) — The unique ID of the Google Tasks list.
- `task_id` (string, required) — The unique ID of the Google Task

output data schema:

{
  id: string;
  title: string | null;
  notes: string | null;












Get the task details from the name of the task. Searches a task list for a task by its title and returns the matching task details.

Inputs:

- `tasklist_id` (string, required) — The unique ID of the Google Tasks list.
- `task_title` (string, required) — The title of the task to search for.

output data schema:

{
  id: string;
  title: string | null;
  notes: string | null;












DESTRUCTIVE — REQUIRES EXPLICIT USER CONFIRMATION BEFORE CALLING. Permanently deletes a specific task from the task list. This action is irreversible — the deleted task and all its data cannot be recovered. NEVER call this tool autonomously or as part of an automated flow. You MUST stop, tell the user exactly what will be deleted and that it is permanent, and wait for their explicit written confirmation before proceeding.

Inputs:

- `tasklist_id` (string, required) — The unique ID of the Google Tasks list.
- `task_id` (string, required) — The unique ID of the Google Task

output data schema:

{
  id: string;
  title: string | null;













Mark a specific task as completed from the task list. Sets the task status to 'completed'. Returns the updated task object.

Inputs:

- `tasklist_id` (string, required) — The unique ID of the Google Tasks list.
- `task_id` (string, required) — The unique ID of the Google Task

output data schema:

{
  id: string;
  title: string | null;
  notes: string | null;












Updates an existing task. Only the fields you provide are changed — others keep their current value. NOTE: this overwrites the current field values — the original state is not stored after the call. The response includes both the before and after state so you have a full record of what changed.

Inputs:

- `tasklist_id` (string, required) — The unique ID of the Google Tasks list.
- `task_id` (string, required) — The unique ID of the Google Task
- `task_title` (string, required) — The title of the task.
- `notes` (string, optional, default: "") — Optional details or description for the task.
- `due` (string, optional, default: "") — Optional due date. MUST be an RFC 3339 timestamp (e.g., '2026-06-17T00:00:00.000Z').

Create a brand new task list. Returns the created task list with its assigned ID and metadata.

Inputs:

- `tasklist_name` (string, required) — The name of the Google Tasks list.

output data schema:

{
  id: string;
  title: string | null;
  updated: string | null;
  etag: string | null


Updates the name of a specific task list. The response includes both the before and after state so you have a full record of what changed.

Inputs:

- `tasklist_id` (string, required) — The unique ID of the Google Tasks list.
- `title` (string, required) — The title or name of the Google Tasks list

output data schema:

{
  before: {
    id: string;
    title: string | null;
    updated: string 












List all the tasks present in the specific task list. Returns task IDs, titles, statuses, and other metadata for all tasks in the list.

Inputs:

- `tasklist_id` (string, required) — The unique ID of the Google Tasks list.

output data schema:

{
  count: number;
  tasks: {
    id: string;
    title: string | null;
    notes: string |














Get the details or metadata of a specific task list. Returns the task list ID, title, and last updated timestamp.

Inputs:

- `tasklist_id` (string, required) — The unique ID of the Google Tasks list.

output data schema:

{
  id: string;
  title: string | null;
  updated: string | null;
  etag: string |


DESTRUCTIVE — REQUIRES EXPLICIT USER CONFIRMATION BEFORE CALLING. Permanently deletes an entire task list with all tasks in it. This action is irreversible — the task list and all its tasks cannot be recovered. NEVER call this tool autonomously or as part of an automated flow. You MUST stop, tell the user exactly what will be deleted and that it is permanent, and wait for their explicit written confirmation before proceeding.

Inputs:

- `tasklist_id` (string, required) — The unique ID of the Google Tasks list.

output data schema:

{
  id: string;
  title: string | null;
  updated: string |



API Parameters Reference

Every tool returns the same top-level envelope. Only data varies per tool.

// Success
{
  "success": true,
  "statusCode": 200,
  "retriable": false,
  "retry_after_seconds": null,
  "error": null,
  "data": { ... }
}
 
// Error







  • tasklist_id — The unique ID of a Google Tasks list. Obtain it from list_task_lists, create_tasklist, or any task list response's id field. Required by every task-level and task-list-level tool.
  • task_id — The unique ID of a Google Task within a task list. Obtain it from list_tasks, add_task, or any task response's id field.
  • next_page_token — Returned by list_task_lists and when the underlying Google Tasks API indicates more results exist. This server currently passes through a single page from the upstream API and does not expose an input parameter to request subsequent pages.

Task List ID (tasklist_id):

opaque identifier assigned by the Google Tasks API, or the literal value `@default` for the user's default task list.
Example: MDAxMjM0NTY3ODkwMTIzNDU2Nzo6MA

task ID (task_id):

opaque identifier assigned by the Google Tasks API when a task is created.
Example: MTIzNDU2Nzg5

Troubleshooting

  • Cause: API key not provided in request headers or incorrect format
  • Solution:
    1. Verify Authorization: Bearer YOUR_API_KEY and X-Mewcp-Credential-Id: CREDENTIAL-ID headers are present
    2. Check API key is active in your MewCP account
  • Cause: API calls have exceeded your request limits
  • Solution:
    1. Check credit usage in your Curious Layer dashboard
    2. Upgrade to a paid plan or add credits for higher limits
    3. Contact support for credit adjustments
  • Cause: No Google Tasks credential linked to your account
  • Solution:
    1. Go to Credentials in your MewCP dashboard
    2. Connect your Google account via OAuth
    3. Retry the request with the correct X-Mewcp-Credential-Id header
  • Cause: JSON payload is invalid or missing required fields
  • Solution:
    1. Validate JSON syntax before sending
    2. Ensure all required tool parameters are included
    3. Check parameter types match expected values
  • Cause: Incorrect server name in the API endpoint
  • Solution:
    1. Verify endpoint format: {server-name}/mcp/{tool-name}
    2. Use correct server name from documentation
    3. Check available servers in your Curious Layer account
  • Cause: Upstream Google Tasks API returned an error
  • Solution:
    1. Check Google service status at Google Workspace Status Page
    2. Verify your credential has the required Google Tasks permissions
    3. Review the error message for specific details

  • Google Tasks API Documentation — Official API reference
  • Google Tasks API Reference — Complete endpoint reference
  • FastMCP Docs — FastMCP specification
  • FastMCP Credentials — FastMCP Credentials package for credential handling
null
;
}
{
  id: string;
  title: string | null;
  notes: string | null;
  due: string | null;
  status: string | null;
  position: string | null;
  parent: string | null;
  links: { [key: string]: any }[] | null;
  webViewLink: string | null;
  hidden: boolean | null;
  completed: string | null;
  deleted: boolean | null;
  etag: string | null;
  kind: string | null;
  selfLink: string | null;
}
due: string | null;
status: string | null;
position: string | null;
parent: string | null;
links: { [key: string]: any }[] | null;
webViewLink: string | null;
hidden: boolean | null;
completed: string | null;
deleted: boolean | null;
etag: string | null;
kind: string | null;
selfLink: string | null;
}
due: string | null;
status: string | null;
position: string | null;
parent: string | null;
links: { [key: string]: any }[] | null;
webViewLink: string | null;
hidden: boolean | null;
completed: string | null;
deleted: boolean | null;
etag: string | null;
kind: string | null;
selfLink: string | null;
}
notes
: string
|
null
;
due: string | null;
status: string | null;
position: string | null;
parent: string | null;
links: { [key: string]: any }[] | null;
webViewLink: string | null;
hidden: boolean | null;
completed: string | null;
deleted: boolean | null;
etag: string | null;
kind: string | null;
selfLink: string | null;
}
due: string | null;
status: string | null;
position: string | null;
parent: string | null;
links: { [key: string]: any }[] | null;
webViewLink: string | null;
hidden: boolean | null;
completed: string | null;
deleted: boolean | null;
etag: string | null;
kind: string | null;
selfLink: string | null;
}

output data schema:

{
  before: {
    id: string;
    title: string | null;
    notes: string | null;
    due: string | null;
    status: string | null;
    position: string | null;
    parent: string | null;
    links: { [key: string]: any }[] | null;
    webViewLink: string | null;
    hidden: boolean | null;
    completed: string | null;
    deleted: boolean | null;
    etag: string | null;
    kind: string | null;
    selfLink: string | null;
  };
  after: {
    id: string;
    title: string | null;
    notes: string | null;
    due: string | null;
    status: string | null;
    position: string | null;
    parent: string | null;
    links: { [key: string]: any }[] | null;
    webViewLink: string | null;
    hidden: boolean | null;
    completed: string | null;
    deleted: boolean | null;
    etag: string | null;
    kind: string | null;
    selfLink: string | null;
  };
}
;
kind: string | null;
selfLink: string | null;
}
|
null
;
etag: string | null;
kind: string | null;
selfLink: string | null;
};
after: {
id: string;
title: string | null;
updated: string | null;
etag: string | null;
kind: string | null;
selfLink: string | null;
};
}
null
;
due: string | null;
status: string | null;
position: string | null;
parent: string | null;
links: { [key: string]: any }[] | null;
webViewLink: string | null;
hidden: boolean | null;
completed: string | null;
deleted: boolean | null;
etag: string | null;
kind: string | null;
selfLink: string | null;
}[];
next_page_token: string | null;
}
null
;
kind: string | null;
selfLink: string | null;
}
null
;
etag: string | null;
kind: string | null;
selfLink: string | null;
}
{
"success": false,
"statusCode": 404,
"retriable": false,
"retry_after_seconds": null,
"error": { "code": "NOT_FOUND", "message": "No task found with the title {task_title}", "details": null },
"data": null
}
  • retriable — true when it is safe to retry (rate limit, network error, 503). false for auth, not-found, and other non-transient errors.
  • retry_after_seconds — seconds to wait before retrying; present only when retriable is true and the upstream specifies a delay.
  • error.code — machine-readable string: NOT_FOUND (get_task_by_name found no match), AUTH_ERROR (no OAuth access token available), UPSTREAM_ERROR (the Google Tasks API returned an HTTP error), SERVER_ERROR (unexpected server-side failure).
list_tasks
MDEyMzQ
1
Njc
4
OTA

due Date (due):

rfc 3339 timestamp.
Example: 2026-06-17T00:00:00.000Z