Google Tasks MCP Server
Provides tools for managing Google Tasks, including listing, creating, updating, deleting task lists and tasks, searching tasks, moving tasks, and clearing completed tasks, with OAuth2 authentication.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Google Tasks MCP ServerShow me all my tasks for today"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Google Tasks MCP Server
A Model Context Protocol (MCP) server for Google Tasks, allowing AI assistants to interact with Google Tasks through the MCP protocol.
Features
List, create, update, and delete task lists
List, search, create, update, delete, and move tasks
Task organization with parent-child relationships
View detailed task information
Clear completed tasks
OAuth2 authentication with automatic token refresh
Parallel API requests for improved performance
TypeScript interfaces for type safety
Comprehensive error handling
Integration with AI assistants through MCP
Installation
# Clone the repository
git clone https://github.com/overlay-one/google-tasks-mcp-server.git
cd google-tasks-mcp-server
# Install dependencies
pnpm install
# Build the project
pnpm buildConfiguration
Setting up Google Cloud API Access
Create a project in the Google Cloud Console.
Enable the Google Tasks API:
Navigate to API Library
Search for "Tasks API"
Click "Enable"
Create OAuth 2.0 credentials:
Navigate to "Credentials"
Click "Create Credentials" and select "OAuth client ID"
Choose "Web application" as application type
Add your redirect URI (e.g.,
http://localhost:3000/oauth2callback)After creation, note your Client ID and Client Secret
Environment Configuration
Copy
.env.exampleto.env:
cp .env.example .envEdit the
.envfile with your Google API credentials:
# Required credentials
CLIENT_ID=your-client-id
CLIENT_SECRET=your-client-secret
REDIRECT_URI=http://localhost:3000/oauth2callback
# Optional tokens (if you already have them)
# ACCESS_TOKEN=your-access-token
# REFRESH_TOKEN=your-refresh-token
# Optional server configuration
# LOG_LEVEL=info # Options: error, warn, info, debugAuthentication Methods
The server supports two authentication methods:
Environment Variables: Set ACCESS_TOKEN and REFRESH_TOKEN in your .env file
Credentials File: The server can store tokens in a
.credentials.jsonfile
The server includes automatic token refresh handling. When access tokens expire, the server will:
Automatically use the refresh token to obtain a new access token
Update the credentials in memory
Save the updated tokens to
.credentials.json(if using file-based storage)
Usage
Starting the Server
# Production mode
pnpm start
# Development mode (with auto-reloading)
pnpm devUsing with Claude Desktop
Claude Desktop can integrate with this MCP server to access Google Tasks directly. This integration allows you to manage your tasks through natural language conversations with Claude.
Benefits of Using Claude with Google Tasks
Natural Language Task Management: Create, search, and organize tasks using everyday language
Contextual Understanding: Claude understands what you mean when you say "tomorrow" or "next week" for due dates
Task Prioritization Assistance: Ask Claude for help organizing and prioritizing your tasks
Intelligent Search: Find tasks using context and meaning, not just exact keywords
Bulk Operations: Ask Claude to help you create or modify multiple tasks at once
Scheduling Assistance: Claude can suggest optimal due dates based on your existing tasks
Task Summarization: Get concise summaries of your tasks across multiple lists
Daily Planning: Ask Claude to help you plan your day based on your current tasks
Setup Instructions
Here's how to set up the integration:
Start the Google Tasks MCP server:
pnpm startThe server will run on standard input/output channels (stdio).
Launch Claude Desktop with MCP server connection:
claude mcp --command "node /path/to/google-tasks-mcp-server/dist/index.js"Replace
/path/to/google-tasks-mcp-serverwith the actual path to your installation.Alternative: Create a configuration file: Create a file named
claude.yamlin your home directory or project directory:mcp: command: node /path/to/google-tasks-mcp-server/dist/index.jsThen simply run
claudeto use the configured MCP server.Inside Claude Desktop: Once connected, Claude will have access to your Google Tasks through custom MCP resources and tools. You can ask Claude to:
"Show me my task lists"
"Create a new task called 'Complete project report'"
"Find all tasks related to meetings"
"Mark my 'Review documents' task as completed"
Claude will use the MCP server to access your Google Tasks data according to your requests.
Example Conversations with Claude
Here are some example conversations you can have with Claude once connected:
Listing Tasks:
You: Show me all my tasks
Claude: I'll retrieve your tasks from Google Tasks.
[Claude uses task.list tool]
Here are your current tasks:
- Complete project documentation (Due: 2025-05-10)
- Schedule team meeting (Due: Not set)
- Review quarterly report (Due: 2025-05-15)Creating a Task:
You: Create a new task called "Send follow-up email" due tomorrow at 3 PM
Claude: I'll create that task for you.
[Claude uses task.create tool]
I've created a new task:
Title: Send follow-up email
Due: 2025-05-06T15:00:00Z
Status: needsActionSearching Tasks:
You: Find all tasks related to "meeting"
Claude: I'll search for tasks containing "meeting".
[Claude uses task.search tool]
I found 2 tasks related to "meeting":
- Schedule team meeting (Due: Not set)
- Prepare meeting agenda (Due: 2025-05-08)Managing Task Lists:
You: Create a new task list called "Personal Projects"
Claude: I'll create that task list for you.
[Claude uses tasklist.create tool]
I've created a new task list named "Personal Projects".
Would you like me to add any tasks to this list?Advanced Usage Scenarios
Here are some advanced ways to use Claude with your Google Tasks:
Project Planning
You: I need to plan a website launch. Can you help me create tasks for it?
Claude: I'd be happy to help plan your website launch. Let me create a task list and relevant tasks.
[Claude uses tasklist.create and task.create tools]
I've created a new task list "Website Launch" with the following tasks:
1. Finalize website content (Due: 1 week from now)
2. Complete design review (Due: 10 days from now)
3. Run final QA tests (Due: 2 weeks from now)
4. Prepare marketing materials (Due: 2 weeks from now)
5. Configure analytics (Due: 3 days before launch)
6. Launch website (Due: 3 weeks from now)
Would you like me to add more specific tasks?Task Organization and Prioritization
You: I have too many tasks. Can you help me prioritize them?
Claude: I'll help you organize and prioritize your tasks.
[Claude uses task.list tool]
Based on your current tasks, here's a suggested prioritization:
High Priority (Complete today):
- Submit quarterly report (Due: Today)
- Call client about project delay (Due: Today)
Medium Priority (Complete this week):
- Prepare presentation (Due: In 3 days)
- Review team metrics (Due: In 5 days)
Low Priority (Can be scheduled later):
- Research new tools (Due: Next week)
- Update documentation (Due: In 2 weeks)
Would you like me to update the due dates to reflect these priorities?Regular Task Management
You: What tasks should I focus on today?
Claude: Let me check your tasks due today or overdue.
[Claude uses task.list and task.search tools]
Here are the tasks you should focus on today:
Due Today:
- Prepare client meeting agenda
- Submit expense report
Overdue:
- Follow up on pending approvals (Due yesterday)
Upcoming Soon:
- Project proposal draft (Due tomorrow)
Should I mark any of these as completed?Troubleshooting Claude Desktop Integration
If you encounter issues when connecting Claude Desktop to the Google Tasks MCP server:
Authentication Problems:
Ensure your
.envfile has the correctCLIENT_ID,CLIENT_SECRET, andREDIRECT_URICheck that you have valid refresh tokens in
.envor in.credentials.jsonIf needed, regenerate your tokens through the Google OAuth process
Connection Issues:
Verify the server is running with
pnpm startbefore connecting ClaudeCheck that the path in your
claude mcp --commandis correctIf using a configuration file, ensure the YAML syntax is valid
Command Not Found:
Ensure Claude Desktop CLI is in your PATH
Try using the full path to the Claude executable
MCP Protocol Errors:
These typically appear if the server encounters an internal error
Check server logs for details about the specific error
Ensure you're using compatible versions of Claude Desktop and the MCP SDK
API Reference
Resources
The server provides resources through custom URI schemes:
Task List Resources
gtasklists:///: Lists all task listsgtasklists:///{taskListId}: Access a specific task list by ID
Task Resources
gtasks:///: Lists all tasks across all task listsgtasks:///default: Lists tasks in the default task listgtasks:///{taskId}: Access a specific task by IDgtasks:///{taskListId}/tasks/{taskId}: Access a specific task within a specific task list
Tools
The server supports the following operations through MCP tools:
Task List Management
Tool | Description | Required Parameters | Optional Parameters |
| List all task lists | None |
|
| Get a task list by ID |
| None |
| Create a new task list |
| None |
| Update a task list |
| None |
| Delete a task list |
| None |
Task Management
Tool | Description | Required Parameters | Optional Parameters |
| Search for tasks by title or notes |
|
|
| List all tasks | None |
|
| Get a task by ID |
|
|
| Create a new task |
|
|
| Update an existing task |
|
|
| Move a task (change parent or position) |
|
|
| Delete a task |
|
|
| Clear completed tasks | None |
|
Example Operations
Creating a Task
{
"name": "task.create",
"arguments": {
"title": "Complete project documentation",
"notes": "Include API reference and setup instructions",
"due": "2025-05-10T00:00:00.000Z",
"status": "needsAction"
}
}Searching for Tasks
{
"name": "task.search",
"arguments": {
"query": "documentation",
"taskListId": "MTIzNDU2Nzg5MA"
}
}Development
Project Structure
src/index.ts: Main server implementation and MCP protocol handlerssrc/Tasks.ts: Implementation of task and task list resources and actionssrc/types.ts: TypeScript interfaces for request/response handlingtest/: Unit tests for server components
TypeScript Types
The project uses TypeScript interfaces for type safety. Key interfaces include:
Request Parameter Types: TypeScript interfaces for all tool parameter types
TaskCreateParams,TaskUpdateParams,TaskSearchParams, etc.
Resource Types: Interfaces for resource representations
TaskResource,TaskListResource
Utility Types: Helper types for working with the Google Tasks API
These interfaces help ensure type safety when passing parameters to the Google Tasks API and handling responses.
Error Handling
The server implements a consistent error handling system that:
Maps HTTP error codes to appropriate MCP error codes
Provides detailed error messages with operation context
Handles errors from parallel API calls appropriately
Performance Optimization
The server uses parallel API calls for operations involving multiple task lists:
In
TaskResources.list()andTaskActions._list(), tasks from multiple lists are fetched in parallelResults are combined properly, even if some task list requests fail
This significantly improves performance for users with many task lists
Testing
The project includes a testing framework using Node.js built-in test runner:
# Run all tests (this will first build the TypeScript code)
pnpm test
# Run tests in watch mode for development
pnpm test:watchBefore running tests for the first time, you'll need to make sure dependencies are installed:
pnpm installThe test suite includes:
Authentication tests: Verify token refresh handling
Task operation tests: Validate task API functionality
Error handling tests: Ensure errors are properly handled
Tests are written in JavaScript and run against the compiled TypeScript code, ensuring that the production code works as expected. The tests are designed to work with mocked dependencies, so no real Google API calls are made during testing.
Building
pnpm buildRunning in Development Mode
pnpm devLicense
Apache-2.0
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/overlay-one/google-tasks-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server