Google Tasks MCP Server
Google Tasks MCP サーバー
この Model Context Protocol (MCP) サーバーは、MCP クライアントと Google Tasks の間のブリッジを提供し、Claude Desktop、Cursor、Codex などのクライアントから直接タスクリストやタスクを管理できるようにします。
[!NOTE] このプロジェクトのコードは(一部の修正を除き)すべて "vibe coded" されています。つまり、私からの指示に基づき Claude/Copilot によって生成されました。
機能
この MCP サーバーは以下の機能を提供します:
タスクリスト管理
list-tasklists- すべてのタスクリストを一覧表示get-tasklist- 特定のタスクリストの詳細を取得create-tasklist- 新しいタスクリストを作成update-tasklist- 既存のタスクリストを更新delete-tasklist- タスクリストを削除
タスク管理
list-tasks- タスクリスト内のすべてのタスクを一覧表示(ページネーション対応)get-task- 特定のタスクの詳細を取得create-task- 新しいタスクを作成update-task- 既存のタスクを更新delete-task- タスクを削除complete-task- タスクを完了としてマークmove-task- タスクを移動(並べ替え、親の変更、またはタスクリスト間での移動)clear-completed-tasks- リストから完了したタスクをすべて削除
Related MCP server: Google Tasks MCP Server
セットアップ手順
1. Google Cloud プロジェクトの作成と API の有効化
Google Cloud Console にアクセスします
新しいプロジェクトを作成します
「API とサービス」>「ライブラリ」に移動します
「Google Tasks API」を検索して有効にします
「API とサービス」>「認証情報」に移動します
「認証情報を作成」>「OAuth クライアント ID」をクリックします
OAuth 同意画面を設定します(個人利用であれば「外部」で問題ありません)
アプリケーションの種類として「ウェブアプリケーション」を選択します
承認済みのリダイレクト URI として
http://localhost:3000/oauth2callbackを追加しますクライアント ID とシークレットを作成します
2. 環境変数の設定
プロジェクトディレクトリに .env ファイルを作成します:
GOOGLE_CLIENT_ID=your_client_id_here
GOOGLE_CLIENT_SECRET=your_client_secret_here
GOOGLE_REDIRECT_URI=http://localhost:3000/oauth2callback環境変数:
GOOGLE_CLIENT_ID(必須) - Google OAuth クライアント IDGOOGLE_CLIENT_SECRET(必須) - Google OAuth クライアントシークレットGOOGLE_REDIRECT_URI(任意) - OAuth リダイレクト URI(デフォルトはhttp://localhost:3000/oauth2callback)
注意: サーバーは起動時に GOOGLE_CLIENT_ID と GOOGLE_CLIENT_SECRET が設定されているかを確認し、欠落しているか無効な場合は明確なエラーメッセージを表示して停止します。
3. サーバーのビルド
依存関係をインストールします:
npm installサーバーをビルドします:
npm run build4. MCP クライアントの設定
Codex
~/.codex/config.toml にサーバーを追加します:
[mcp_servers.google-tasks]
command = "zsh"
args = ["-lc", "cd /path/to/google-tasks-mcp && exec node build/index.js"]/path/to/google-tasks-mcp をこのプロジェクトへのパスに置き換え、Codex を再起動してください。
サーバーが登録されているか確認するには:
codex mcp list
codex mcp get google-tasksClaude for Desktop
Claude for Desktop をインストールします
Claude の設定ファイルを開きます:
MacOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
Google Tasks MCP サーバーの設定を追加します:
{
"mcpServers": {
"google-tasks": {
"command": "node",
"args": ["/path/to/google-tasks-mcp/build/index.js"]
}
}
}パスを自身の環境に合わせて置き換え、Claude for Desktop を再起動してください。
認証フロー
Google Tasks MCP サーバーを初めて使用する場合:
authenticateツールを使用して認証 URL を取得しますブラウザでその URL にアクセスし、Google アカウントでサインインします
承認後、ブラウザページにコードが表示されます
set-auth-codeツールにそのコードを入力して認証を完了しますこれで、他のすべてのツールを使用して Google Tasks を操作できるようになります
注意: 認証トークン(リフレッシュトークンを含む)は、制限された権限(600)で ~/.config/google-tasks-mcp/credentials.json に自動的に保存されます。つまり:
認証は一度だけ - サーバーを再起動しても認証情報は保持されます
自動トークン更新 - アクセストークンは期限切れ(通常1時間後)になると、保存されたリフレッシュトークンを使用して自動的に更新されます
再認証不要 - 初回セットアップ後は、アクセスを取り消したり認証ファイルを削除したりしない限り、再認証は不要です
要件
Node.js 20+ (
package.jsonの engines を参照)MCP 対応クライアント
Tasks API が有効な Google Cloud プロジェクト
実装の特徴
この MCP サーバーには以下の改善が含まれています:
永続的なトークンストレージ - 認証情報は制限された権限でディスク(
~/.config/google-tasks-mcp/credentials.json)に保存されるため、認証は一度だけで済みます環境変数の検証 - 起動時に必要な認証情報が設定されているかを確認し、明確なエラーメッセージを表示します
自動トークン更新 - OAuth トークンは期限切れ時に自動的に更新されるため、セッション中や再起動後に再認証する必要はありません
強化された入力検証 - ID 形式、文字列長、RFC 3339 日付形式など、すべての入力に対する包括的な検証
HTML サニタイズ - OAuth コールバックのレスポンスは XSS 脆弱性を防ぐためにサニタイズされます
正常なシャットダウン - SIGINT/SIGTERM シグナル受信時の適切なリソースクリーンアップ
型安全性 - 適切なインターフェースを備えたコードベース全体での完全な TypeScript 型安全性
設定可能なリダイレクト URI - OAuth リダイレクト URI は
GOOGLE_REDIRECT_URI環境変数でカスタマイズ可能
スクリーンショット
Claude Desktop

Cursor

ライセンス
このプロジェクトはデモンストレーション目的のみのものです。自己責任で使用してください。
Available Tools
15 toolsauthenticateB
Get URL to authenticate with Google Tasks
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It mentions getting a URL but doesn't explain what happens next (e.g., whether this initiates OAuth flow, if user interaction is required, what the URL is used for, or any rate limits). This leaves significant gaps in understanding the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence that gets straight to the point with no wasted words. It's appropriately sized for a simple tool and front-loads the essential information efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an authentication tool with no annotations and no output schema, the description is insufficient. It doesn't explain what the returned URL is for, how it should be used, what authentication flow it enables, or what happens after authentication. This leaves critical gaps in understanding the tool's role in the broader authentication process.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters with 100% schema description coverage, so the schema already fully documents the parameter situation. The description doesn't need to add parameter information, and it appropriately doesn't mention any parameters. This meets the baseline expectation for a zero-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get URL') and target resource ('authenticate with Google Tasks'), making the purpose immediately understandable. However, it doesn't distinguish this from sibling tools like 'set-auth-code' which also relates to authentication, leaving some ambiguity about when to use each.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'set-auth-code', nor does it mention prerequisites or context for authentication. It simply states what the tool does without indicating when it should be invoked.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clear-completed-tasksC
Clear all completed tasks from a task list
| Name | Required | Description | Default |
|---|---|---|---|
| tasklist | Yes | Task list ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action ('Clear') which implies a destructive mutation, but lacks details on permissions required, whether the operation is reversible, rate limits, or what the response looks like (e.g., success confirmation or error handling). This is a significant gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste. It's front-loaded with the core action and resource, making it easy to parse quickly without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given this is a mutation tool with no annotations and no output schema, the description is incomplete. It doesn't explain behavioral aspects like safety, permissions, or response format, which are critical for an agent to use it correctly. The high schema coverage helps with parameters, but overall context is lacking.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with the single parameter 'tasklist' documented as 'Task list ID'. The description doesn't add any parameter-specific details beyond this, such as format examples or constraints. Baseline 3 is appropriate since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Clear') and resource ('completed tasks from a task list'), making the purpose understandable. However, it doesn't explicitly differentiate from sibling tools like 'delete-task' or 'delete-tasklist' which might handle different deletion scenarios, so it doesn't reach the highest score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a task list ID), exclusions (e.g., what happens to incomplete tasks), or comparisons to siblings like 'delete-task' for individual deletions, leaving usage ambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
complete-taskC
Mark a task as completed
| Name | Required | Description | Default |
|---|---|---|---|
| tasklist | Yes | Task list ID | |
| task | Yes | Task ID to mark as completed |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states the basic action. It doesn't disclose behavioral traits like whether completion is reversible, if it triggers notifications, what permissions are needed, or what happens to subtasks. For a mutation tool with zero annotation coverage, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste. It's appropriately sized for a simple tool and front-loads the core action without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given this is a mutation tool with no annotations and no output schema, the description is incomplete. It doesn't explain what 'completed' means in this system, whether there are side effects, or what the response looks like. For a tool that changes state, more context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are fully documented in the schema. The description adds no additional meaning about 'tasklist' or 'task' parameters beyond what the schema provides (e.g., no context on how to obtain IDs). Baseline 3 is appropriate when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Mark') and resource ('a task') with the specific action 'as completed'. It distinguishes from siblings like 'delete-task' or 'update-task' by focusing on completion status, though it doesn't explicitly contrast with 'clear-completed-tasks' which handles multiple tasks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'update-task' (which might also mark completion) or 'clear-completed-tasks'. There's no mention of prerequisites (e.g., task must exist) or context for choosing this specific completion method.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create-taskC
Create a new task in a task list
| Name | Required | Description | Default |
|---|---|---|---|
| tasklist | Yes | Task list ID | |
| title | Yes | Title of the task | |
| notes | No | Notes for the task | |
| due | No | Due date in RFC 3339 format (e.g., 2025-03-19T12:00:00Z) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states it creates a task but doesn't disclose behavioral traits like required permissions, whether it's idempotent, error handling, or what happens on success (e.g., returns a task ID). This leaves significant gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no wasted words. It's appropriately sized and front-loaded, clearly stating the tool's purpose without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given this is a mutation tool with no annotations and no output schema, the description is incomplete. It doesn't cover behavioral aspects like permissions, side effects, or return values, which are crucial for safe and effective use in a task management context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all 4 parameters. The description adds no additional meaning beyond the schema, such as explaining parameter interactions or constraints, but the baseline is 3 since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create') and resource ('new task in a task list'), which is specific and unambiguous. However, it doesn't differentiate from siblings like 'update-task' or 'complete-task' in terms of when to choose creation over modification, keeping it from a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'update-task' or 'complete-task', nor does it mention prerequisites such as authentication or task list existence. It lacks any context for selection among sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create-tasklistC
Create a new task list
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Title of the new task list |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states the basic action. It doesn't disclose behavioral traits such as whether creation requires specific permissions, if it's idempotent, what the response looks like, or any side effects. For a mutation tool with zero annotation coverage, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste. It's front-loaded and appropriately sized for a simple tool, making it easy to parse quickly without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (a mutation with no annotations and no output schema), the description is incomplete. It lacks details on behavioral context, usage guidelines, and expected outcomes. While concise, it doesn't provide enough information for an agent to use the tool effectively beyond the basic action.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds no parameter information beyond what the schema provides. Since schema description coverage is 100% (the 'title' parameter is fully documented in the schema), the baseline score of 3 applies. The description doesn't compensate but also doesn't detract from the schema's clarity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create') and resource ('a new task list'), making the purpose immediately understandable. It doesn't differentiate from siblings like 'create-task' or 'update-tasklist', but it's specific enough to identify the core function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'update-tasklist' or 'list-tasklists'. There's no mention of prerequisites (e.g., authentication), context for creation, or what happens if a task list with the same title exists.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete-taskC
Delete a task
| Name | Required | Description | Default |
|---|---|---|---|
| tasklist | Yes | Task list ID | |
| task | Yes | Task ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. 'Delete a task' implies a destructive mutation, but it doesn't specify whether deletion is permanent or reversible, what permissions are required, whether there are confirmation prompts, or what happens to associated data. For a destructive operation with zero annotation coverage, this is inadequate behavioral transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is maximally concise with just three words that directly state the tool's function. There's no wasted language or unnecessary elaboration. While it's arguably too brief for a destructive operation, from a pure conciseness perspective, it's perfectly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation tool with no annotations and no output schema, the description is insufficiently complete. It doesn't address critical context like authentication requirements, error conditions, what constitutes successful deletion, or how this differs from related deletion operations. The agent would need to guess about many behavioral aspects when invoking this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both parameters ('tasklist' and 'task') clearly documented in the schema. The description adds no additional parameter information beyond what's already in the structured schema. According to the scoring rules, when schema coverage is high (>80%), the baseline is 3 even with no param info in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Delete a task' clearly states the action (delete) and resource (task), which is better than a tautology. However, it doesn't distinguish this tool from sibling tools like 'delete-tasklist' or 'clear-completed-tasks' that also perform deletion operations on related resources. The purpose is understandable but lacks specificity about what kind of task deletion this performs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (like authentication), when deletion is appropriate versus other operations like 'complete-task' or 'update-task', or what happens after deletion. With multiple sibling tools available, this lack of context leaves the agent guessing about appropriate usage scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete-tasklistC
Delete a task list
| Name | Required | Description | Default |
|---|---|---|---|
| tasklist | Yes | Task list ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states the action ('Delete a task list'). It doesn't disclose critical behavioral traits: whether deletion is permanent or reversible, what permissions are required, if it cascades to delete associated tasks, error conditions, or response format. This is inadequate for a destructive operation with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste. It's appropriately sized for a simple tool and front-loaded with the core action. No unnecessary words or structural issues are present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given this is a destructive operation with no annotations and no output schema, the description is incomplete. It doesn't address safety concerns, return values, error handling, or how it differs from sibling tools. For a delete operation in a task management context, more context is needed to ensure correct usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the single parameter 'tasklist' documented as 'Task list ID to delete'. The description adds no additional meaning beyond this, as it doesn't explain parameter format, sourcing, or constraints. Baseline 3 is appropriate since the schema fully describes the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Delete a task list' clearly states the action (delete) and resource (task list), but it's vague about scope and doesn't distinguish from sibling tools like 'delete-task' or 'clear-completed-tasks'. It provides basic purpose but lacks specificity about what constitutes a task list deletion versus other deletion operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description doesn't mention prerequisites (e.g., needing an existing task list ID), exclusions, or comparisons to siblings like 'delete-task' or 'clear-completed-tasks'. Users must infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-taskC
Get a specific task by ID
| Name | Required | Description | Default |
|---|---|---|---|
| tasklist | Yes | Task list ID | |
| task | Yes | Task ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool retrieves a task but doesn't mention whether this is a read-only operation, what permissions are required, error handling, or response format. For a retrieval tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero wasted words. It's front-loaded with the core purpose and appropriately sized for a simple retrieval tool, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete. It doesn't address behavioral aspects like safety, permissions, or return values, which are crucial for a tool that interacts with task data. The simplicity of the tool partially mitigates this, but more context is needed for reliable use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description implies ID-based retrieval but doesn't add meaning beyond what the input schema provides. With 100% schema description coverage, the schema already documents both parameters ('tasklist' and 'task' IDs). The description doesn't explain their relationship or usage context, so it meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get') and resource ('a specific task by ID'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'get-tasklist' or 'list-tasks' beyond the ID specificity, which prevents a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'list-tasks' or 'get-tasklist'. It lacks context about prerequisites (e.g., needing a tasklist ID) or exclusions, leaving the agent to infer usage from the name and parameters alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-tasklistC
Get a task list by ID
| Name | Required | Description | Default |
|---|---|---|---|
| tasklist | Yes | Task list ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states 'Get a task list by ID', which implies a read-only operation, but doesn't clarify aspects like error handling (e.g., what happens if the ID is invalid), response format, or any rate limits. While it doesn't contradict annotations (there are none), it fails to provide meaningful behavioral context beyond the basic action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at just four words ('Get a task list by ID'), with zero wasted language. It's front-loaded with the core action and resource, making it easy to parse quickly. This efficiency is appropriate for a simple retrieval tool, though it may sacrifice helpful details for brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no annotations, no output schema), the description is incomplete. It doesn't explain what 'getting' returns (e.g., task list details, tasks within it, or metadata), error conditions, or how it fits into the broader task management workflow. While minimalism can work for very basic tools, this leaves gaps that could hinder effective agent use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with the single parameter 'tasklist' documented as 'Task list ID'. The description adds no additional semantic information beyond what the schema already provides (e.g., format examples, validation rules, or context about where to find IDs). According to the rules, with high schema coverage, the baseline is 3 even without param info in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get a task list by ID' clearly states the verb ('Get') and resource ('task list'), but it's quite basic and doesn't distinguish this tool from its sibling 'get-task' which follows a similar pattern. It specifies retrieval by ID, which provides some differentiation from list operations, but remains somewhat vague about what 'getting' entails beyond basic identification.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'list-tasklists' or 'get-task'. It doesn't mention prerequisites (e.g., needing authentication or a valid task list ID), nor does it explain use cases where retrieving a single task list by ID is preferable to listing all task lists. This leaves the agent without contextual decision-making help.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list-tasklistsB
List all task lists
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action ('List all') but lacks details on permissions, rate limits, pagination, or response format. This is a significant gap for a tool that likely returns multiple items.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste. It is front-loaded and directly conveys the core functionality without redundancy or fluff, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete. It doesn't address behavioral aspects like pagination, ordering, or error handling, which are crucial for a list operation. The minimal description fails to compensate for the missing structured data.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description appropriately omits parameter details, aligning with the schema. A baseline of 4 is applied as it doesn't add unnecessary information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List all task lists' clearly states the verb ('List') and resource ('task lists'), making the purpose immediately understandable. It doesn't explicitly differentiate from sibling tools like 'get-tasklist' or 'list-tasks', but the resource specificity provides adequate clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'get-tasklist' (for a specific task list) or 'list-tasks' (for tasks within a list). The description implies a broad retrieval but offers no context about prerequisites, filtering, or use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list-tasksC
List all tasks in a task list
| Name | Required | Description | Default |
|---|---|---|---|
| tasklist | Yes | Task list ID | |
| showCompleted | No | Whether to include completed tasks | |
| showHidden | No | Whether to include hidden tasks | |
| showDeleted | No | Whether to include deleted tasks |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. While 'List all tasks' implies a read-only operation, it doesn't address important behavioral aspects like pagination, rate limits, authentication requirements, or what 'all' means in practice (e.g., maximum results). The description is minimal and lacks operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at just 6 words, front-loading the core purpose without any wasted words. Every element ('List', 'all tasks', 'in a task list') contributes essential information in minimal space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 4 parameters, no annotations, and no output schema, the description is insufficient. It doesn't explain what 'all tasks' means operationally, doesn't mention authentication requirements (relevant given 'authenticate' and 'set-auth-code' siblings), and provides no context about the return format or limitations. The minimal description leaves too many operational questions unanswered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 4 parameters thoroughly. The description adds no parameter semantics beyond what's in the schema - it doesn't explain relationships between parameters or provide usage examples. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('List') and resource ('tasks in a task list'), making the purpose immediately understandable. However, it doesn't distinguish this tool from sibling tools like 'get-task' or 'list-tasklists', which would require more specificity about scope or filtering capabilities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With siblings like 'get-task' (for single tasks) and 'list-tasklists' (for listing task lists), there's no indication of when this bulk listing tool is preferred or what distinguishes it from other list/retrieval operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move-taskC
Move a task to another position
| Name | Required | Description | Default |
|---|---|---|---|
| tasklist | Yes | Task list ID | |
| task | Yes | Task ID to move | |
| parent | No | Optional new parent task ID | |
| previous | No | Optional previous sibling task ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action ('move') but doesn't describe effects (e.g., whether it changes task order, updates timestamps, requires permissions), constraints (e.g., rate limits, validation rules), or response format. This is a significant gap for a mutation tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence ('Move a task to another position') that is front-loaded and wastes no words. It directly conveys the core purpose without unnecessary elaboration, making it highly concise and well-structured for its simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a mutation tool with 4 parameters, no annotations, and no output schema, the description is incomplete. It lacks details on behavioral traits (e.g., what 'move' entails, error conditions), usage context, and return values. The schema covers parameters, but the description fails to compensate for missing annotations and output information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters (tasklist, task, parent, previous) with clear descriptions. The description adds no additional meaning beyond what the schema provides, such as explaining how 'parent' and 'previous' interact for positioning. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('move') and resource ('task'), specifying the purpose as repositioning a task. It distinguishes from siblings like 'update-task' by focusing on positional changes rather than content updates. However, it doesn't explicitly differentiate from all siblings like 'complete-task' or 'delete-task' in terms of scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., task must exist), exclusions (e.g., cannot move to invalid positions), or comparisons with siblings like 'update-task' for reordering. Usage is implied only by the verb 'move', with no explicit context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set-auth-codeC
Set the authentication code received from Google OAuth flow
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | The authentication code received from Google |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states what the tool does (sets an auth code) but doesn't describe the behavioral implications: whether this persists credentials, what authentication state results, whether it's idempotent, or what happens if called multiple times. For a security-sensitive authentication tool with zero annotation coverage, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that communicates the core purpose without unnecessary words. It's appropriately sized for a single-parameter tool and front-loads the essential information. Every word earns its place, making this an excellent example of conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an authentication-related tool with no annotations and no output schema, the description is insufficiently complete. It doesn't explain what happens after setting the code, whether authentication is established, what errors might occur, or how this integrates with the broader OAuth flow. Given the security sensitivity and the lack of structured metadata, more contextual information would be valuable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the single parameter 'code' well-described in the schema as 'The authentication code received from Google'. The description adds no additional parameter semantics beyond what's already in the schema. This meets the baseline of 3 when schema coverage is high, but doesn't provide extra value like format examples or validation details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Set') and the resource ('authentication code received from Google OAuth flow'), making the purpose immediately understandable. It doesn't explicitly differentiate from sibling tools like 'authenticate', but the specific focus on setting an OAuth code provides reasonable distinction. The description goes beyond a tautology by specifying the source (Google OAuth flow).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'authenticate', nor does it mention prerequisites or context for usage. While it implies this is part of an OAuth flow, it doesn't specify when in that flow this should be called or what happens before/after. There's no explicit when/when-not guidance or alternative tool references.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update-taskC
Update an existing task
| Name | Required | Description | Default |
|---|---|---|---|
| tasklist | Yes | Task list ID | |
| task | Yes | Task ID | |
| title | No | New title for the task | |
| notes | No | New notes for the task | |
| status | No | Status of the task | |
| due | No | Due date in RFC 3339 format (e.g., 2025-03-19T12:00:00Z) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. 'Update an existing task' implies a mutation operation but doesn't specify permission requirements, whether updates are partial or complete, what happens to unspecified fields, or error conditions. It lacks critical behavioral context for a write operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at just three words, with zero wasted language. It's front-loaded with the core action and resource. While it could benefit from more detail, it earns full marks for conciseness as every word serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with 6 parameters, no annotations, and no output schema, the description is inadequate. It doesn't explain what the tool returns, what happens on success/failure, or provide any context about the update operation's scope or limitations. The agent would need to guess about important behavioral aspects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all 6 parameters. The description adds no additional parameter information beyond what's in the schema. According to scoring rules, when schema coverage is high (>80%), the baseline is 3 even with no param info in description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Update an existing task' clearly states the verb (update) and resource (task), but it's vague about what aspects can be updated and doesn't distinguish this tool from similar siblings like 'complete-task' or 'move-task'. It provides basic purpose but lacks specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'complete-task' (which might handle status changes) or 'move-task' (which might handle tasklist changes). There's no mention of prerequisites, constraints, or typical use cases beyond the basic action.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update-tasklistC
Update an existing task list
| Name | Required | Description | Default |
|---|---|---|---|
| tasklist | Yes | Task list ID | |
| title | Yes | New title for the task list |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. While 'Update' implies a mutation operation, it doesn't specify permission requirements, whether the update is reversible, what happens to unchanged fields, or error conditions. This is inadequate for a mutation tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero wasted words. It's appropriately sized for a simple update operation and gets straight to the point without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description is insufficient. It doesn't explain what happens after the update, what fields can be modified, or provide any context about the update operation's behavior. The agent would need to guess about important aspects of tool usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are documented in the schema. The description doesn't add any parameter-specific information beyond what's already in the schema (tasklist ID and new title). Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Update') and resource ('an existing task list'), making the purpose immediately understandable. However, it doesn't differentiate this tool from its sibling 'update-task' or explain what aspects of a task list can be updated beyond what's implied by the parameters.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'create-tasklist' or 'delete-tasklist'. It doesn't mention prerequisites (e.g., needing an existing task list ID) or contextual constraints, leaving the agent to infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
15 tool updates
- First observed
authenticate - First observed
clear-completed-tasks - First observed
complete-task - First observed
create-task - First observed
create-tasklist - First observed
delete-task - First observed
delete-tasklist - First observed
get-task - First observed
get-tasklist - First observed
list-tasklists - First observed
list-tasks - First observed
move-task - First observed
set-auth-code - First observed
update-task - First observed
update-tasklist
TDQS
Scored across 15 tools
Every tool has a clearly distinct purpose with no ambiguity. Each tool targets specific resources (tasks or tasklists) and actions (create, get, list, update, delete, complete, clear, move), making it easy for an agent to select the right tool. The separation between task operations and tasklist operations is particularly clear.
The naming follows a perfectly consistent verb-noun pattern throughout all 15 tools. Every tool uses snake_case with clear action verbs (create, get, list, update, delete, etc.) followed by the resource name (task, tasklist), and multi-word resources use hyphens consistently (e.g., clear-completed-tasks).
With 15 tools, this server is well-scoped for managing Google Tasks. Each tool earns its place by covering essential CRUD operations for both tasks and tasklists, plus additional workflow actions like moving tasks and clearing completed ones. The count is appropriate for the domain without being overwhelming.
The tool surface provides complete coverage for the Google Tasks domain. It includes full CRUD operations for both tasks and tasklists, plus lifecycle actions like completing tasks, moving tasks, and clearing completed tasks. Authentication tools are also included, ensuring no dead ends for agents.
Maintenance
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
- mcpOAuthnet.todoist
Official Todoist MCP server for AI assistants to manage tasks, projects, and workflows.
Hosted Google Calendar MCP server for AI agents. No self-hosting or Google Cloud setup.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Related MCP Servers
- AlicenseAqualityCmaintenanceA Model Context Protocol server that connects Claude Desktop to AI Note task management, enabling task creation, updates and management through natural language conversations.548 npmMIT
- AlicenseNot gradedqualityCmaintenanceA Model Context Protocol (MCP) server that brings your Google Tasks into Claude and other MCP-compatible clients, enabling task and task list management through natural conversation.83 npm8MIT
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that enables Claude to fully manage Google Calendar, including events, calendars, sharing, and availability checks through natural language.1MIT
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that enables AI assistants to manage Google Tasks, including creating, updating, deleting, and searching tasks and task lists via OAuth2 authentication.29 npm1Apache 2.0