list-tasklistsLABSCO SUMMARY
Authenticate once and stop thinking about it.
Tokens persist to disk with restricted permissions and refresh themselves when the access token expires, so you are not re-doing the browser dance every session — which is the difference between a task server you use and one you abandon. The tool set covers the awkward operations too: moving a task between lists and clearing completed items are the ones that are tedious in the Google Tasks UI.
What it is
A Node MCP server bridging an MCP client and Google Tasks. It runs the Google OAuth flow once, saves the tokens to disk with restricted permissions, and refreshes them automatically from then on.
What you get
- Task lists:
list-tasklists,get-tasklist,create-tasklist,update-tasklist,delete-tasklist - Tasks:
list-taskswith pagination,get-task,create-task,update-task,delete-task complete-task— mark one done without editing its other fieldsmove-task— reorder, change parent, or move a task to a different listclear-completed-tasks— clear the finished items out of a list in one call- Input validation covering id formats, string lengths and RFC 3339 dates, so a malformed due date fails clearly
Requirements
Node.js 20+ and a Google Cloud project with the Google Tasks API enabled. Create an OAuth client and put GOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET in a .env file; GOOGLE_REDIRECT_URI is optional and defaults to a localhost callback that must also be registered in Google Cloud. Build the server, then authenticate once from the client — the credentials are written under your config directory and reused after restarts.
Setup effort
Build from source
USE CASES
Capturing a task without breaking focus
Create it in the right list with a due date, straight from the conversation you were already having.
Ticking things off after a working session
Mark the finished tasks complete, then clear them out of the list in one call.
Reorganising a list that grew sideways
Move tasks under a parent or across to another list rather than deleting and retyping them.
Reviewing what is outstanding
List the task lists, then page through the tasks in the one you care about.
15 tools
Listed in project docs. Your client may show a different list.
get-tasklistcreate-tasklistupdate-tasklistdelete-tasklistlist-tasksget-taskcreate-taskupdate-taskdelete-taskcomplete-taskmove-taskclear-completed-tasksauthenticateset-auth-codeBEFORE YOU INSTALL
What to know first
Tools you get
15 tools named in the project's documentation.
Requires
- Node.js 20+
- GOOGLE_CLIENT_ID in your environment
- GOOGLE_CLIENT_SECRET in your environment
Where it runs
Both documented clients run the server on your machine.
INSTALLATION
Connect your client
Server setup
git clone https://github.com/arpitbatra123/mcp-googletasks
cd mcp-googletasksInstall dependencies:
npm installBuild the server:
npm run buildMCP Clients
Codex
[mcp_servers.google-tasks]
command = "zsh"
args = ["-lc", "cd <YOUR_PATH_TO_MCP_GOOGLETASKS> && exec node build/index.js"]<YOUR_PATH_TO_MCP_GOOGLETASKS> is the full path of your clone. Restart Codex.
Claude Desktop
{
"mcpServers": {
"google-tasks": {
"command": "node",
"args": [
"<YOUR_PATH_TO_MCP_GOOGLETASKS>/build/index.js"
]
}
}
}<YOUR_PATH_TO_MCP_GOOGLETASKS> is the full path of your clone, so the path ends in mcp-googletasks/build/index.js. Restart Claude Desktop.
The configuration on this page does not set GOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET; the project's instructions put them in a .env file. Check which folder the server reads that file from before you rely on it.