
How to add Google Tasks MCP Server to Windsurf
Manage Google Tasks from your AI assistant — list, search, create, update, and delete tasks. Paste the config into ~/.codeium/windsurf/mcp_config.json and restart Windsurf.
Last updated June 14, 2026 · 142★ · stdio · oauth
Windsurf config for Google Tasks MCP Server
npx -y @smithery/cli install @zcaceres/gtasks --client claude{
"mcpServers": {
"google-tasks-mcp-server": {
"command": "/opt/homebrew/bin/node",
"args": [
"{ABSOLUTE PATH TO FILE HERE}/dist/index.js"
]
}
}
}Setup steps
- 1Open Windsurf → Cascade → the hammer/MCP icon → Configure (or edit ~/.codeium/windsurf/mcp_config.json).
- 2Paste the Google Tasks MCP Server config below.
- 3Fill in placeholder secrets, then save.
- 4Click Refresh in the MCP panel.
- 5Google Tasks MCP Server's tools become available to Cascade.
Before you start
- Node.js
- A Google Cloud project with the Google Tasks API enabled
- An OAuth consent screen configured with the scope https://www.googleapis.com/auth/tasks
- An OAuth Client ID for application type "Desktop App", with the key file saved as gcp-oauth.keys.json in the repo root
- Build the server with `npm run build` (or `npm run watch`)
What Google Tasks MCP Server can do in Windsurf
searchSearch for tasks in Google Tasks. Input: query (string). Returns matching tasks with details.
listList all tasks in Google Tasks. Optional input: cursor (string) for pagination. Returns a list of all tasks.
createCreate a new task. Inputs: taskListId (string, optional), title (string, required), notes (string, optional), due (string, optional). Returns confirmation of task creation.
updateUpdate an existing task. Inputs: taskListId (string, optional), id (string, required), uri (string, required), title (string, optional), notes (string, optional), status (string, optional: "needsAction" or "completed"), due (string, optional). Returns confirmation of task update.
deleteDelete a task. Inputs: taskListId (string, required), id (string, required). Returns confirmation of task deletion.
clearClear completed tasks from a Google Tasks task list. Input: taskListId (string, required). Returns confirmation of cleared tasks.
Security
Requires Google OAuth credentials with the `https://www.googleapis.com/auth/tasks` scope. You must create your own Google Cloud project and OAuth Client ID (Desktop App). The OAuth key file (`gcp-oauth.keys.json`) and saved credentials (`.gdrive-server-credentials.json`) are stored in the repo root — keep them out of version control. The server has full read/write/delete access to your Google Tasks.
Google Tasks MCP Server + Windsurf FAQ
Where is the Windsurf config file?
Windsurf reads MCP servers from ~/.codeium/windsurf/mcp_config.json. Paste the Google Tasks MCP Server config there under the "mcpServers" key and restart the client.
Is Google Tasks MCP Server safe to use with Windsurf?
Requires Google OAuth credentials with the `https://www.googleapis.com/auth/tasks` scope. You must create your own Google Cloud project and OAuth Client ID (Desktop App). The OAuth key file (`gcp-oauth.keys.json`) and saved credentials (`.gdrive-server-credentials.json`) are stored in the repo root — keep them out of version control. The server has full read/write/delete access to your Google Tasks.
How do I authenticate?
Run the server with the `auth` argument (`npm run start auth`). This opens an authentication flow in your system browser; after completing it, credentials are saved in the repo root as `.gdrive-server-credentials.json`.
Can I install it automatically?
Yes. For Claude Desktop you can install it via Smithery with `npx -y @smithery/cli install @zcaceres/gtasks --client claude`.
What OAuth scope does it need?
It requires the `https://www.googleapis.com/auth/tasks` scope, which grants full read/write access to your Google Tasks.