Google Tasks MCP Server
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 Servercreate a task to buy groceries tomorrow"
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 comprehensive Model Context Protocol (MCP) server for Google Tasks that enables LLMs to manage tasks and task lists through well-designed, workflow-oriented tools.
Features
This MCP server provides intelligent, workflow-oriented tools for Google Tasks management:
Task List Management
Create, update, delete, and list task lists
Organize tasks into projects and categories
Task Operations
Create tasks with titles, notes, due dates, and hierarchical structure (subtasks)
List tasks with powerful filtering (date ranges, status, pagination)
Update tasks - modify title, notes, status, due dates
Delete tasks permanently
Move tasks between positions and parents
Clear completed tasks in bulk
Workflow Tools
Quick Add - Natural language task creation
Bulk Create - Create multiple tasks at once
Search Tasks - Find tasks across all lists
Task Summary - Get organized views by time range (today, tomorrow, week, overdue)
Related MCP server: Google Tasks MCP Server
Prerequisites
Python 3.8+ installed on your system
Google Cloud Project with Tasks API enabled
OAuth 2.0 Credentials for desktop application
Setup Instructions
Step 1: Google Cloud Setup
Go to Google Cloud Console
Create a new project or select an existing one
Enable the Google Tasks API:
Go to "APIs & Services" > "Library"
Search for "Tasks API"
Click "Enable"
Create OAuth 2.0 Credentials:
Go to "APIs & Services" > "Credentials"
Click "Create Credentials" > "OAuth client ID"
Choose "Desktop app" as the application type
Give it a name (e.g., "Google Tasks MCP")
Download the credentials JSON file
Create the configuration directory:
mkdir -p ~/.google_tasks_mcpSave the downloaded credentials file as:
~/.google_tasks_mcp/credentials.json
Step 2: Install Dependencies
pip install -r requirements.txtStep 3: First Run & Authentication
Run the server for the first time to authenticate:
python google_tasks_mcp.pyThis will:
Open a browser window for Google authentication
Ask you to authorize the application
Save the authentication token for future use
Configuration
For Claude Desktop App
Add this to your Claude desktop configuration file:
MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"google-tasks": {
"command": "python",
"args": ["/path/to/google_tasks_mcp.py"],
"env": {}
}
}
}Replace /path/to/google_tasks_mcp.py with the actual path to the server file.
For Other MCP Clients
The server runs on stdio transport by default:
python google_tasks_mcp.pyRunning as a Remote (HTTP/SSE) MCP Server
This server can also run remotely over HTTP/SSE. Control it with environment variables:
MCP_MODE: set toremote(enables HTTP/SSE). Default:stdio.MCP_HOST: bind host (e.g.,0.0.0.0). Default:0.0.0.0.MCP_PORT: port number. Default:8000.MCP_PATH: SSE endpoint path. Default:/sse.
Example:
source /Users/omshejul/python-env/venv/bin/python
export MCP_MODE=remote
export MCP_HOST=0.0.0.0
export MCP_PORT=8000
export MCP_PATH=/sse
python google_tasks_mcp.pyClaude Remote Config (SSE)
Claude Desktop typically expects stdio servers. Use the mcp-remote adapter to connect via SSE. Add an entry like this to the mcpServers section of your Claude config:
{
"mcpServers": {
"google-tasks": {
"command": "npx",
"args": ["-y", "mcp-remote@latest", "http://YOUR_HOST:8000/sse"]
}
}
}Replace YOUR_HOST and port as needed. Ensure the server is reachable from the client.
Optional: Require a Bearer Token
Set an auth token for the remote server so clients must present Authorization: Bearer <token>:
export MCP_AUTH_TOKEN=REPLACE_ME_SECRET
export MCP_MODE=remote
export MCP_HOST=0.0.0.0
export MCP_PORT=8000
export MCP_PATH=/sse
/Users/omshejul/python-env/venv/bin/python google_tasks_mcp.pyFor Claude with mcp-remote, pass the header and keep the secret in an env var:
{
"mcpServers": {
"google-tasks": {
"command": "npx",
"args": [
"-y",
"mcp-remote@latest",
"http://YOUR_HOST:8000/sse",
"--header",
"Authorization:Bearer ${GOOGLE_TASKS_MCP_TOKEN}"
],
"env": {
"GOOGLE_TASKS_MCP_TOKEN": "REPLACE_ME_SECRET"
}
}
}
}Available Tools
Task List Management
create_task_list
Create a new task list for organizing related tasks.
Input: title (string)
Returns: Created task list detailslist_task_lists
List all task lists with pagination support.
Input:
- max_results (1-50, default: 20)
- page_token (optional)
- response_format (json/markdown/concise/detailed)
Returns: List of task listsupdate_task_list
Rename an existing task list.
Input:
- tasklist_id (string)
- title (string)
Returns: Updated task listdelete_task_list
⚠️ Permanently delete a task list and all its tasks.
Input: tasklist_id (string)
Returns: ConfirmationTask Operations
create_task
Create a new task with optional details.
Input:
- title (string, required)
- notes (string, optional)
- due_date (ISO format YYYY-MM-DD, optional)
- tasklist_id (default: "@default")
- parent_task_id (optional, for subtasks)
Returns: Created task detailslist_tasks
List tasks with comprehensive filtering options.
Input:
- tasklist_id (default: "@default")
- max_results (1-100, default: 30)
- show_completed (boolean, default: false)
- show_deleted (boolean, default: false)
- due_min/due_max (ISO dates for filtering)
- completed_min/completed_max (ISO dates)
- page_token (for pagination)
- response_format (json/markdown/concise/detailed)
Returns: Filtered task listupdate_task
Modify task properties.
Input:
- task_id (string, required)
- tasklist_id (default: "@default")
- title (optional)
- notes (optional)
- status (needsAction/completed, optional)
- due_date (ISO format or "clear", optional)
Returns: Updated taskdelete_task
⚠️ Permanently delete a task.
Input:
- task_id (string)
- tasklist_id (default: "@default")
Returns: Confirmationmove_task
Reorganize task position or hierarchy.
Input:
- task_id (string)
- tasklist_id (default: "@default")
- parent_task_id (optional)
- previous_task_id (optional)
Returns: Moved task detailsclear_completed_tasks
⚠️ Remove all completed tasks from a list.
Input:
- tasklist_id (default: "@default")
Returns: ConfirmationWorkflow Tools
quick_add_task
Create tasks using natural language.
Input:
- text (string, e.g., "Buy milk tomorrow")
- tasklist_id (default: "@default")
Returns: Created taskExamples:
"Meeting with John tomorrow"
"Urgent: Fix login bug"
"Submit report next week"
bulk_create_tasks
Create multiple tasks at once.
Input:
- tasks (list of strings, 1-50 items)
- tasklist_id (default: "@default")
- due_date (optional, applies to all)
Returns: Creation summarysearch_tasks
Find tasks across all task lists.
Input:
- query (string)
- include_completed (boolean, default: false)
- max_results (1-50, default: 20)
- response_format (json/markdown/concise/detailed)
Returns: Matching tasks from all listsget_task_summary
Get organized task overview by time range.
Input:
- time_range (today/tomorrow/week/overdue/all)
- include_completed (boolean, default: false)
- response_format (concise/markdown/detailed)
Returns: Task summary for time periodUsage Examples
Daily Planning Workflow
"Get my task summary for today"
"Show me overdue tasks"
"Create task 'Review quarterly report' due tomorrow"
"Mark task [ID] as completed"
Project Setup Workflow
"Create a task list called 'Website Redesign'"
"Bulk create tasks: ['Design mockups', 'Get client feedback', 'Implement changes', 'Testing', 'Deploy']"
"Set due date 2024-02-15 for all tasks"
Task Search Workflow
"Search for tasks containing 'meeting'"
"Find all tasks with 'urgent' in the title"
"Show completed tasks from last week"
Response Formats
The server supports multiple response formats:
JSON: Raw API response for processing
Markdown: Formatted for readability
Concise: Minimal information for quick viewing
Detailed: Complete task information including IDs
Error Handling
The server provides clear, actionable error messages:
Authentication errors with setup instructions
Invalid input with specific guidance
API errors with suggested fixes
Rate limiting information when applicable
Security
OAuth 2.0 tokens are stored locally in
~/.google_tasks_mcp/token.jsonCredentials never leave your local machine
Token refresh is handled automatically
Scoped access only to Google Tasks
Troubleshooting
Authentication Issues
Ensure credentials.json is in the correct location
Delete token.json to re-authenticate
Check that Tasks API is enabled in Google Cloud Console
Permission Errors
Verify the Google account has access to Google Tasks
Check OAuth consent screen is configured
Ensure correct scopes are authorized
Connection Issues
Verify internet connectivity
Check firewall settings
Ensure Google services are accessible
Development
Adding New Tools
Define Pydantic model for input validation
Implement tool function with @mcp.tool decorator
Add comprehensive docstring and error handling
Update README documentation
Testing
Run the server in development mode:
python google_tasks_mcp.py --debugLicense
MIT License - See LICENSE file for details
Contributing
Contributions are welcome! Please:
Fork the repository
Create a feature branch
Add tests for new functionality
Submit a pull request
Support
For issues or questions:
Check the troubleshooting section
Review Google Tasks API documentation
Open an issue with detailed error information
Acknowledgments
Built with:
FastMCP - MCP framework
Google Tasks API - Task management
Model Context Protocol - LLM integration standard
This server cannot be installed
Maintenance
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
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/omshejul/google-task-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server