{"_id":"@alvincrave/gtasks-mcp","_rev":"4-acee85c8535a01692315d085d1c0771a","name":"@alvincrave/gtasks-mcp","dist-tags":{"latest":"0.2.0"},"versions":{"0.1.0":{"name":"@alvincrave/gtasks-mcp","version":"0.1.0","author":{"name":"@alvinjchoi"},"license":"MIT","_id":"@alvincrave/gtasks-mcp@0.1.0","maintainers":[{"name":"alvincrave","email":"alvin@craveup.com"}],"homepage":"https://github.com/alvinjchoi/gtasks-mcp","bugs":{"url":"https://github.com/alvinjchoi/gtasks-mcp/issues"},"bin":{"gtasks-mcp":"dist/index.js"},"dist":{"shasum":"c935efa4d5994d5d15f067d3dd2a6892c9fc1199","tarball":"https://registry.npmjs.org/@alvincrave/gtasks-mcp/-/gtasks-mcp-0.1.0.tgz","fileCount":5,"integrity":"sha512-FmWFHmcGw1/72JVYkLP7AGwSFyCI3ZvrXR2QZdQpTHAlIPwGUxU6UIFDHAO/4SLXkBJ+IR381MVm+utF0AMUsw==","signatures":[{"sig":"MEYCIQDJTvtWY2eYYxRt5RLI0QUzmGYEW9P62zzXkbVIAe9oAgIhAKoOIRygUNtPWQ2fDkJLfPh67Rf6T0LVMpmbLoyNHc3N","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35820},"type":"module","gitHead":"49ce4a70fabd6fbc40abe85cf5ac766dd0020a0a","scripts":{"dev":"tsc --watch","build":"tsc && shx chmod +x dist/*.js","start":"node dist/index.js","prepare":"npm run build"},"_npmUser":{"name":"alvincrave","email":"alvin@craveup.com"},"_npmVersion":"10.2.4","description":"MCP server for interacting with Google Tasks","directories":{},"_nodeVersion":"20.11.0","dependencies":{"googleapis":"^144.0.0","google-auth-library":"^9.4.1","@google-cloud/local-auth":"^3.0.1","@modelcontextprotocol/sdk":"1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.3.4","typescript":"^5.6.2","@types/node":"^22.9.3"},"_npmOperationalInternal":{"tmp":"tmp/gtasks-mcp_0.1.0_1744790096612_0.019260928233611585","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@alvincrave/gtasks-mcp","version":"0.1.1","author":{"name":"@alvinjchoi"},"license":"MIT","_id":"@alvincrave/gtasks-mcp@0.1.1","maintainers":[{"name":"alvincrave","email":"alvin@craveup.com"}],"homepage":"https://github.com/alvinjchoi/gtasks-mcp","bugs":{"url":"https://github.com/alvinjchoi/gtasks-mcp/issues"},"bin":{"gtasks-mcp":"dist/index.js"},"dist":{"shasum":"81f9f2930b55617229771f378a9a822fb8a76fa8","tarball":"https://registry.npmjs.org/@alvincrave/gtasks-mcp/-/gtasks-mcp-0.1.1.tgz","fileCount":5,"integrity":"sha512-9Ndm0iNynUFkerq5u7yCcuKa0ESWKtDRHzedVmYgAGysNkSnetmS9cZGTKfPl88bJ4ww6Rpp1TeWuAHBagK+4w==","signatures":[{"sig":"MEUCIE7l7stakIR8LfFrnobvb8paE1bL+u4K+dYqTliwqYU7AiEAvD0OYEAJGw1+NWKY1pR0EkLvp9orUuLJSAp+zwaMjUk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35646},"type":"module","gitHead":"9f09d0ff85a515c6c357a0c050ec5bfa7f1c9d29","scripts":{"dev":"tsc --watch","build":"tsc && shx chmod +x dist/*.js","start":"node dist/index.js","prepare":"npm run build"},"_npmUser":{"name":"alvincrave","email":"alvin@craveup.com"},"_npmVersion":"10.2.4","description":"MCP server for interacting with Google Tasks","directories":{},"_nodeVersion":"20.11.0","dependencies":{"googleapis":"^144.0.0","google-auth-library":"^9.4.1","@google-cloud/local-auth":"^3.0.1","@modelcontextprotocol/sdk":"1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.3.4","typescript":"^5.6.2","@types/node":"^22.9.3"},"_npmOperationalInternal":{"tmp":"tmp/gtasks-mcp_0.1.1_1744790895013_0.37970927339470895","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@alvincrave/gtasks-mcp","version":"0.1.2","author":{"name":"@alvinjchoi"},"license":"MIT","_id":"@alvincrave/gtasks-mcp@0.1.2","maintainers":[{"name":"alvincrave","email":"alvin@craveup.com"}],"homepage":"https://github.com/alvinjchoi/gtasks-mcp","bugs":{"url":"https://github.com/alvinjchoi/gtasks-mcp/issues"},"bin":{"gtasks-mcp":"dist/index.js"},"dist":{"shasum":"3ae48db5bc0539d1062733231a51ed50dc62e096","tarball":"https://registry.npmjs.org/@alvincrave/gtasks-mcp/-/gtasks-mcp-0.1.2.tgz","fileCount":5,"integrity":"sha512-bK1JlxDs2xtR25GoMombGoMTCB8QfAuLC7fidHSmURuO5zDAyHAc2yAs+ieDr/e6lXink6Yrl+YqOMQFe6Zckg==","signatures":[{"sig":"MEQCIGITCaCUZPhHhAFrQCNle1hAnEg7l/TQd201M/I1GGCqAiAbFIkUfGpiRg1dNbR6KAZYBjLVHUg/9Ly4RXusTxuWEA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36006},"type":"module","gitHead":"3292bdbe2cf37f86d0ba963080e3a87a361e938e","scripts":{"dev":"tsc --watch","build":"tsc && shx chmod +x dist/*.js","start":"node dist/index.js","prepare":"npm run build"},"_npmUser":{"name":"alvincrave","email":"alvin@craveup.com"},"_npmVersion":"10.2.4","description":"MCP server for interacting with Google Tasks","directories":{},"_nodeVersion":"20.11.0","dependencies":{"googleapis":"^144.0.0","google-auth-library":"^9.4.1","@google-cloud/local-auth":"^3.0.1","@modelcontextprotocol/sdk":"1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.3.4","typescript":"^5.6.2","@types/node":"^22.9.3"},"_npmOperationalInternal":{"tmp":"tmp/gtasks-mcp_0.1.2_1744791945401_0.9885426197146412","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@alvincrave/gtasks-mcp","version":"0.2.0","description":"MCP server for interacting with Google Tasks","license":"MIT","author":{"name":"@alvinjchoi"},"mcpName":"io.github.alvinjchoi/gtasks-mcp","homepage":"https://github.com/alvinjchoi/gtasks-mcp","bugs":{"url":"https://github.com/alvinjchoi/gtasks-mcp/issues"},"repository":{"type":"git","url":"git+https://github.com/alvinjchoi/gtasks-mcp.git"},"keywords":["mcp","model-context-protocol","google-tasks","claude","ai"],"type":"module","bin":{"gtasks-mcp":"dist/index.js"},"scripts":{"build":"tsc && shx chmod +x dist/*.js","prepare":"npm run build","dev":"tsc --watch","start":"node dist/index.js","test":"tsc -p tsconfig.test.json && node --test dist-test/Tasks.test.js","e2e":"node scripts/e2e.mjs"},"dependencies":{"@google-cloud/local-auth":"^3.0.1","@modelcontextprotocol/sdk":"1.0.1","google-auth-library":"^9.4.1","googleapis":"^144.0.0"},"devDependencies":{"@types/node":"^22.9.3","shx":"^0.3.4","typescript":"^5.6.2"},"_id":"@alvincrave/gtasks-mcp@0.2.0","gitHead":"28afcec48facfe216ce66be91cd65b4eec3626cf","_nodeVersion":"22.22.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-/lbo8BNRm964ScAdXYjRQ1y5ezf84Cn/+EKfkRAt3rddjVU34PZDi/FGBKTGA//Z6Q4cTeVDIxRm+RPBYPUxZA==","shasum":"1ef3bbfc326806f829abf096fb785c966b061fb7","tarball":"https://registry.npmjs.org/@alvincrave/gtasks-mcp/-/gtasks-mcp-0.2.0.tgz","fileCount":5,"unpackedSize":50287,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQD/yNl07JG8TKZ0yLeTd15YzJkVakl5saJ9jAvHp4wCEwIhAOeppbh+dkBO+KF+x3b2MaN6Qpy0EaAaJukx1eY4/HMp"}]},"_npmUser":{"name":"alvincrave","email":"alvin@craveup.com"},"directories":{},"maintainers":[{"name":"alvincrave","email":"alvin@craveup.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/gtasks-mcp_0.2.0_1784436060409_0.8455655749646145"},"_hasShrinkwrap":false}},"time":{"created":"2025-04-16T07:54:56.540Z","modified":"2026-07-19T04:41:00.719Z","0.1.0":"2025-04-16T07:54:56.786Z","0.1.1":"2025-04-16T08:08:15.195Z","0.1.2":"2025-04-16T08:25:45.573Z","0.2.0":"2026-07-19T04:41:00.561Z"},"bugs":{"url":"https://github.com/alvinjchoi/gtasks-mcp/issues"},"author":{"name":"@alvinjchoi"},"license":"MIT","homepage":"https://github.com/alvinjchoi/gtasks-mcp","description":"MCP server for interacting with Google Tasks","maintainers":[{"name":"alvincrave","email":"alvin@craveup.com"}],"readme":"# 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","readmeFilename":"README.md","keywords":["mcp","model-context-protocol","google-tasks","claude","ai"],"repository":{"type":"git","url":"git+https://github.com/alvinjchoi/gtasks-mcp.git"}}