This Model Context Protocol (MCP) server provides a bridge between Claude and Google Tasks, allowing you to manage your task lists and tasks directly through Claude. This MCP server provides the following functionality: - list-tasklists - List all your task lists - get-tasklist - Get details about a specific task list - create-tasklist - Create a new task list - update-tasklist - Update an existin
Add this skill
npx mdskills install arpitbatra123/mcp-googletasksComprehensive MCP server with excellent setup docs, persistent auth, and robust Google Tasks integration
1# Google Tasks MCP Server23This Model Context Protocol (MCP) server provides a bridge between Claude and Google Tasks, allowing you to manage your task lists and tasks directly through Claude.45> [!NOTE]6> All (bar some edits) code in this project was ["vibe coded"](https://en.wikipedia.org/wiki/Vibe_coding) - generated with Claude/Copilot with instructions from me.78## Features910This MCP server provides the following functionality:1112### Task List Management13- `list-tasklists` - List all your task lists14- `get-tasklist` - Get details about a specific task list15- `create-tasklist` - Create a new task list16- `update-tasklist` - Update an existing task list17- `delete-tasklist` - Delete a task list1819### Task Management20- `list-tasks` - List all tasks in a task list21- `get-task` - Get details about a specific task22- `create-task` - Create a new task23- `update-task` - Update an existing task24- `delete-task` - Delete a task25- `complete-task` - Mark a task as completed26- `move-task` - Move a task (reorder or change parent)27- `clear-completed-tasks` - Clear all completed tasks from a list2829## Setup Instructions3031### 1. Create Google Cloud Project & Enable API32331. Go to the [Google Cloud Console](https://console.cloud.google.com/)342. Create a new project353. Navigate to "APIs & Services" > "Library"364. Search for "Google Tasks API" and enable it375. Go to "APIs & Services" > "Credentials"386. Click "Create Credentials" > "OAuth Client ID"397. Configure the OAuth consent screen (External is fine for personal use)408. For Application Type, select "Web application"419. Add "http://localhost:3000/oauth2callback" as an authorized redirect URI4210. Create the client ID and secret4344### 2. Configure Claude for Desktop45461. Install [Claude for Desktop](https://claude.ai/download)472. Open the Claude configuration file:48 - MacOS: `~/Library/Application Support/Claude/claude_desktop_config.json`49 - Windows: `%APPDATA%\Claude\claude_desktop_config.json`503. Add the Google Tasks MCP server configuration:5152```json53{54 "mcpServers": {55 "google-tasks": {56 "command": "node",57 "args": ["/path/to/google-tasks-mcp/build/index.js"],58 "env": {59 "GOOGLE_CLIENT_ID": "your_client_id_here",60 "GOOGLE_CLIENT_SECRET": "your_client_secret_here",61 "GOOGLE_REDIRECT_URI": "http://localhost:3000/oauth2callback"62 }63 }64 }65}66```6768Replace the path and credentials with your own values.6970**Environment Variables:**71- `GOOGLE_CLIENT_ID` (required) - Your Google OAuth Client ID72- `GOOGLE_CLIENT_SECRET` (required) - Your Google OAuth Client Secret73- `GOOGLE_REDIRECT_URI` (optional) - OAuth redirect URI (defaults to `http://localhost:3000/oauth2callback`)7475**Note:** The server validates that `GOOGLE_CLIENT_ID` and `GOOGLE_CLIENT_SECRET` are set at startup and will fail with clear error messages if they are missing or invalid.7677### 3. Build and Run the Server78791. Install dependencies:80```bash81npm install82```83842. Build the server:85```bash86npm run build87```88893. Restart Claude for Desktop9091## Authentication Flow9293When you first use the Google Tasks MCP server:94951. Use the `authenticate` tool to get an authorization URL962. Visit the URL in your browser and sign in with your Google account973. After authorizing, you'll receive a code on the browser page984. Use the `set-auth-code` tool with this code to complete authentication995. You can now use all other tools to interact with Google Tasks100101**Note:** Your authentication tokens (including refresh tokens) are automatically saved to disk at `~/.config/google-tasks-mcp/credentials.json` with restricted permissions (600). This means:102- **You only need to authenticate once** - credentials persist across server restarts103- **Automatic token refresh** - Access tokens are automatically refreshed when they expire (typically after 1 hour) using the saved refresh token104- **No re-authentication needed** - After the initial setup, you won't need to authenticate again unless you revoke access or delete the credentials file105106## Requirements107108- Node.js 20+ (see `package.json` engines)109- Claude for Desktop (latest version)110- Google Cloud Project with Tasks API enabled111112## Implementation Features113114This MCP server includes the following improvements:115- **Persistent token storage** - Authentication credentials are saved to disk (`~/.config/google-tasks-mcp/credentials.json`) with restricted permissions, so you only need to authenticate once116- **Environment variable validation** - Startup validation ensures required credentials are configured with clear error messages117- **Automatic token refresh** - OAuth tokens are automatically refreshed when they expire, eliminating the need to re-authenticate during active sessions or after restarts118- **Enhanced input validation** - Comprehensive validation of all inputs including ID formats, string lengths, and RFC 3339 date formats119- **HTML sanitization** - OAuth callback responses are sanitized to prevent XSS vulnerabilities120- **Graceful shutdown** - Proper cleanup of resources on SIGINT/SIGTERM signals121- **Type safety** - Full TypeScript type safety throughout the codebase with proper interfaces122- **Configurable redirect URI** - The OAuth redirect URI can be customized via the `GOOGLE_REDIRECT_URI` environment variable123124## Screenshots125126### Claude Desktop127128129### Cursor130131132## License133134This project is for demonstration purposes only. Use at your own risk.135
Full transparency — inspect the skill content before installing.