{
  "markdown": "# Google Tasks MCP Server\n\nA Model Context Protocol (MCP) server for Google Tasks. Manage task lists and tasks through natural language in Claude Desktop and other MCP clients.\n\nForked from [zcaceres/gtasks-mcp](https://github.com/zcaceres/gtasks-mcp) with stronger auth options, multi-list support, pagination, and hierarchy tools.\n\n![](https://badge.mcpx.dev?type=server \"MCP Server\")\n[![npm version](https://img.shields.io/npm/v/@alvincrave/gtasks-mcp)](https://www.npmjs.com/package/@alvincrave/gtasks-mcp)\n[![MCP Registry](https://img.shields.io/badge/MCP-Registry-blue)](https://registry.modelcontextprotocol.io)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n\n**Registry name:** `io.github.alvinjchoi/gtasks-mcp`  \n**npm:** [`@alvincrave/gtasks-mcp`](https://www.npmjs.com/package/@alvincrave/gtasks-mcp)\n\n## Features\n\n- List and search tasks (optionally scoped to one task list)\n- Paginate through all tasks (no silent 100-task cap)\n- Create, update, delete, and clear completed tasks\n- Discover task lists (`list_task_lists`)\n- View parent/child hierarchy (`list_with_tree`)\n- Reorder, nest, or move tasks across lists (`move`)\n- OAuth2 auth via env vars, credential files, or interactive `auth`\n- Docker support\n\n## Installation\n\nRecommended (Claude Desktop / any MCP client) — runs the latest published npm package:\n\n```bash\nnpx -y @alvincrave/gtasks-mcp\n```\n\nOr install globally:\n\n```bash\nnpm install -g @alvincrave/gtasks-mcp\n```\n\n### From source\n\n```bash\ngit clone https://github.com/alvinjchoi/gtasks-mcp.git\ncd gtasks-mcp\nnpm install\nnpm run build\n```\n\n## Setup\n\n### Option A — Environment variables (Claude Desktop)\n\n1. Create a Google Cloud project and enable the **Google Tasks API**.\n2. Create OAuth 2.0 Desktop credentials and obtain a refresh token (OAuth Playground with scope `https://www.googleapis.com/auth/tasks` works).\n3. Configure Claude Desktop (`~/Library/Application Support/Claude/claude_desktop_config.json` on macOS):\n\n```json\n{\n  \"mcpServers\": {\n    \"gtasks\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@alvincrave/gtasks-mcp\"],\n      \"env\": {\n        \"GOOGLE_CLIENT_ID\": \"your_client_id_here\",\n        \"GOOGLE_CLIENT_SECRET\": \"your_client_secret_here\",\n        \"GOOGLE_REFRESH_TOKEN\": \"your_refresh_token_here\"\n      }\n    }\n  }\n}\n```\n\n### Option B — Credential files (local / shared with other Google MCP servers)\n\n1. Download your OAuth client JSON (`gcp-oauth.keys.json`).\n2. Authenticate once:\n\n```bash\nexport GTASKS_CREDENTIALS_PATH=/path/to/gcp-oauth.keys.json\nexport GTASKS_TOKEN_PATH=/path/to/.gtasks-server-credentials.json\nnode dist/index.js auth\n```\n\n3. Run the server with the same env vars set (or place `gcp-oauth.keys.json` in the project root and use the defaults).\n\nAliases also accepted:\n\n| Purpose | Preferred | Alias |\n| --- | --- | --- |\n| OAuth client keys | `GTASKS_CREDENTIALS_PATH` | `GOOGLE_OAUTH_KEYS_PATH` |\n| Saved tokens | `GTASKS_TOKEN_PATH` | `GOOGLE_TASKS_CREDENTIALS_PATH` |\n\n### Option C — Home config file\n\nCreate `~/.gtasks-credentials.json`:\n\n```json\n{\n  \"clientId\": \"your_client_id\",\n  \"clientSecret\": \"your_client_secret\",\n  \"refreshToken\": \"your_refresh_token\"\n}\n```\n\n## Tools\n\n| Tool | Description |\n| --- | --- |\n| `search` | Search tasks by title/notes. Optional `taskListId`. |\n| `list` | List tasks (all lists, or one via `taskListId`). Fully paginated. |\n| `list_task_lists` | List task list names and IDs. |\n| `list_with_tree` | Tree view for one list (parent/child, position order). |\n| `move` | Reorder, nest/un-nest, or move across lists. |\n| `create` | Create a task (`title` required; optional notes/due/`taskListId`). |\n| `update` | Patch a task (only provided fields change). |\n| `delete` | Delete a task. |\n| `clear` | Clear completed tasks from a list. |\n\n## Usage examples\n\n```\nshow my task lists\nlist tasks in list <id>\nsearch for tasks containing \"meeting\"\ncreate a task named \"Prepare presentation\" due 2026-07-20\nshow the task tree for list <id>\nmove task <id> under parent <parentId>\nmark task <id> completed\n```\n\n## Docker\n\n```bash\ndocker build -t gtasks-mcp .\ndocker run -i \\\n  -e GOOGLE_CLIENT_ID=your_client_id \\\n  -e GOOGLE_CLIENT_SECRET=your_client_secret \\\n  -e GOOGLE_REFRESH_TOKEN=your_refresh_token \\\n  gtasks-mcp\n```\n\n## Development\n\n```bash\nnpm install\nnpm run build\nnpm start\n```\n\nAuth check / interactive login:\n\n```bash\nnpm run build\nnode dist/index.js auth\n```\n\n## Security Notes\n\n- Treat refresh tokens like passwords\n- Prefer env vars or ignored credential files — never commit them\n- Rotate credentials if they leak\n\n## Contributors\n\n- [ArtyMcLabin](https://github.com/ArtyMcLabin) — pagination, `taskListId` filtering, `list_task_lists`, `list_with_tree`, `move`, and file-based auth ([#1](https://github.com/alvinjchoi/gtasks-mcp/pull/1))\n- [zcaceres](https://github.com/zcaceres) — original Google Tasks MCP server\n- [alvinjchoi](https://github.com/alvinjchoi) — fork maintenance, Smithery/npm packaging\n\nSee [CONTRIBUTORS.md](./CONTRIBUTORS.md).\n\n## License\n\nMIT\n",
  "bytes": 5051,
  "sha": "01f7e55605455fbb63f1b2acec7205326dc1d36aad8ae73439b79538b3c5c341",
  "repo_slug": "alvinjchoi/gtasks-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_alvinjchoi_gtasks_mcp_ea8ff7a2/readme"
}