MCP Todoist
This MCP Todoist server enables AI assistants to interact with Todoist for comprehensive task and project management through the Model Context Protocol.
Task Management:
Retrieve tasks with optional filtering by project, custom filters, or limits
Create tasks with content, description, project assignment, priority, due dates, and labels
Update existing tasks (content, description, priority, due dates, labels)
Mark tasks as complete
Project Management:
Retrieve all projects
Create projects with name, color, parent project, and favorite status
Update project properties (name, color, favorite status)
Delete projects
Look up project IDs by name
AI Integration:
Works with Cursor AI, Claude Desktop, and other MCP-compatible clients
Enables natural language commands for automated Todoist operations
Uses stdio transport for communication
Requires Todoist API token for authentication
Supports flexible setup with automated and manual configuration
Open-source and customizable for extended functionality
Integrates Ant Design UI components for building the interface, used alongside Tailwind CSS for styling the application.
Built on Next.js 14 with App Router, providing the frontend framework for the MCP server implementation.
Used in conjunction with Ant Design for styling and layout of the UI components.
Provides a Todoist API-compatible implementation, offering tools for managing tasks and projects including creating, retrieving, updating tasks and projects through a Todoist-compatible interface.
Implements the entire codebase in TypeScript, providing type safety for the MCP server implementation.
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., "@MCP Todoistadd a task to buy groceries for 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.
MCP Todoist
Todoist API互換のMCPサーバー実装
技術スタック
MCPサーバー: Node.js + TypeScript
プロトコル: MCP (Model Context Protocol) stdio transport
外部API: Todoist REST API
言語: TypeScript
ランタイム: tsx
Related MCP server: Todoist MCP Server
アーキテクチャ
├── フロントエンド (Next.js 14)
│ ├── React Server Components
│ ├── Client Components
│ └── API Routes
├── MCP Server Layer
│ ├── Protocol Handler
│ ├── Todoist API Adapter
│ └── Tool Registry
├── バックエンド (Convex)
│ ├── Database Functions
│ ├── Mutations
│ ├── Queries
│ └── Actions
└── 外部API
└── Todoist API主要機能
実装済み
MCP Protocol Handler (stdio transport)
Todoist APIクライアント
MCPツール実装
todoist_get_tasks- タスク一覧取得todoist_create_task- タスク作成todoist_update_task- タスク更新todoist_close_task- タスク完了todoist_get_projects- プロジェクト一覧取得todoist_create_project- プロジェクト作成todoist_update_project- プロジェクト更新todoist_delete_project- プロジェクト削除
ツール可視性制御システム
ツール可視性設定
セキュリティと用途に応じて、各ツールの公開・非公開を設定できます。
現在の設定:
公開ツール:
todoist_get_tasks,todoist_create_task,todoist_update_task,todoist_close_task,todoist_get_projects,todoist_move_task非公開ツール:
todoist_create_project,todoist_update_project,todoist_delete_project
📖 詳細: ツールの可視性設定の詳細については TOOL_VISIBILITY.md を参照してください。
クイックスタート
1. 依存関係のインストール
npm install2. MCPサーバーのビルド
cd packages/mcp-server
npm run build
cd ../..3. MCPサーバーのテスト
# タスクリスト取得のテスト
echo '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"todoist_get_tasks","arguments":{}}}' | TODOIST_API_TOKEN=your-api-token npx tsx script/run-mcp-server.ts🚀 Cursor AI 自動セットアップガイド
前提条件
Node.js 18+ がインストールされている
npm または yarn がインストールされている
Cursor AI がインストールされている
Todoist アカウントを持っている
Step 1: プロジェクトのセットアップ
# リポジトリをクローン(または既存プロジェクトの場合はスキップ)
git clone <repository-url>
cd mcp-todoist
# 依存関係のインストール
npm install
# MCPサーバーのビルド
cd packages/mcp-server
npm run build
cd ../..Step 2: Todoist API トークンの取得
Todoist App Console にアクセス
「Create a new app」をクリック
アプリ名を入力(例:「MCP Todoist Integration」)
「Create app」をクリック
表示されたAPI tokenをコピー(例:
61dae250699e84eb85b9c2ab9461c0581873566d)
Step 3: プロジェクトパスの確認
# 現在のプロジェクトの絶対パスを取得
pwd出力例: /Users/username/projects/mcp-todoist
Step 4: Cursor AI MCP設定の自動セットアップ
方法A: 自動設定スクリプト実行
以下のコマンドを実行して、Cursor AI設定を自動生成:
# 現在のディレクトリパスを取得
CURRENT_DIR=$(pwd)
# Cursor AI設定ディレクトリを作成
mkdir -p ~/.cursor
# MCP設定ファイルを自動生成
cat > ~/.cursor/mcp.json << EOF
{
"mcpServers": {
"mcp-todoist": {
"command": "tsx",
"args": ["$CURRENT_DIR/script/run-mcp-server.ts"],
"env": {
"TODOIST_API_TOKEN": "YOUR_TODOIST_API_TOKEN_HERE"
}
}
}
}
EOF
echo "✅ MCP設定ファイルを作成しました: ~/.cursor/mcp.json"
echo "⚠️ 次のステップ: YOUR_TODOIST_API_TOKEN_HERE を実際のAPIトークンに置き換えてください"方法B: 手動設定
設定ファイルの場所を確認:
# macOS/Linux
ls -la ~/.cursor/
# Windowsの場合: %USERPROFILE%\.cursor\設定ファイルを作成/編集:
# macOS/Linux
nano ~/.cursor/mcp.json
# または
code ~/.cursor/mcp.json以下の内容をコピー&ペースト:
{
"mcpServers": {
"mcp-todoist": {
"command": "tsx",
"args": ["/REPLACE_WITH_YOUR_PROJECT_PATH/script/run-mcp-server.ts"],
"env": {
"TODOIST_API_TOKEN": "REPLACE_WITH_YOUR_API_TOKEN"
}
}
}
}プレースホルダーを置き換え:
/REPLACE_WITH_YOUR_PROJECT_PATH→ 実際のプロジェクトパスREPLACE_WITH_YOUR_API_TOKEN→ 実際のTodoist APIトークン
Step 5: 設定の検証
# 設定ファイルの内容を確認
cat ~/.cursor/mcp.json
# MCPサーバーが正常に動作するかテスト
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0.0"}}}' | TODOIST_API_TOKEN=your-actual-token tsx script/run-mcp-server.ts正常な場合の出力例:
{"jsonrpc":"2.0","id":1,"result":{"protocolVersion":"2024-11-05","capabilities":{"tools":{"listChanged":true},"resources":{"subscribe":true,"listChanged":true},"prompts":{"listChanged":true}},"serverInfo":{"name":"mcp-todoist","version":"1.0.0"}}}Step 6: Cursor AI での確認
Cursor AI を完全に再起動
設定確認:
⌘+,(Mac) またはCtrl+,(Windows) で設定を開く"MCP" を検索
mcp-todoistサーバーが表示され、緑のインジケーターが点灯していることを確認
動作テスト:
⌘+Lでチャットを開く「Todoistからタスクリストを取得して」と入力
MCPツールが自動実行され、タスクリストが表示されることを確認
🔧 AI アシスタント向け自動セットアップ手順
AIアシスタントがこのREADMEを読んで自動セットアップを実行する場合の手順:
環境確認:
node --version # 18+ であることを確認
npm --version # インストールされていることを確認プロジェクト準備:
# プロジェクトディレクトリに移動していることを確認
pwd
# 依存関係インストール
npm install
# MCPサーバービルド
cd packages/mcp-server && npm run build && cd ../..パス取得:
CURRENT_DIR=$(pwd)
echo "プロジェクトパス: $CURRENT_DIR"Cursor AI設定作成:
mkdir -p ~/.cursor
cat > ~/.cursor/mcp.json << EOF
{
"mcpServers": {
"mcp-todoist": {
"command": "tsx",
"args": ["$CURRENT_DIR/script/run-mcp-server.ts"],
"env": {
"TODOIST_API_TOKEN": "PLACEHOLDER_FOR_USER_TOKEN"
}
}
}
}
EOFユーザーに指示:
✅ MCP設定ファイルを作成しました!
📝 次の手順を完了してください:
1. Todoist API トークンを取得: https://todoist.com/app_console
2. 以下のコマンドで設定ファイルを編集:
nano ~/.cursor/mcp.json
3. "PLACEHOLDER_FOR_USER_TOKEN" を実際のAPIトークンに置き換え
4. Cursor AI を再起動
5. チャットで「Todoistからタスクリストを取得して」とテスト設定検証:
echo "設定ファイルの内容:"
cat ~/.cursor/mcp.json
echo ""
echo "APIトークンを設定後、以下でテスト:"
echo 'echo \'{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"todoist_get_tasks","arguments":{}}}\' | TODOIST_API_TOKEN=your-token tsx script/run-mcp-server.ts'利用可能なMCPツール
ツール名 | 説明 | パラメータ |
| タスク一覧取得 |
|
| タスク作成 |
|
| タスク更新 |
|
| タスク完了 |
|
| プロジェクト一覧取得 | なし |
| プロジェクト作成 |
|
| プロジェクト更新 |
|
| プロジェクト削除 |
|
使用例
Cursor AIでの基本操作
「Todoistからタスクリストを取得して」
「新しいタスク『プロジェクト資料作成』を優先度2で作成して」
「プロジェクト一覧を表示して」
「タスクID 123456789 を完了にして」コマンドラインでの直接テスト
# 初期化
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0.0"}}}' | TODOIST_API_TOKEN=your-token tsx script/run-mcp-server.ts
# ツール一覧
echo '{"jsonrpc":"2.0","id":2,"method":"tools/list"}' | TODOIST_API_TOKEN=your-token tsx script/run-mcp-server.ts
# タスク作成
echo '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"todoist_create_task","arguments":{"content":"テストタスク","priority":2}}}' | TODOIST_API_TOKEN=your-token tsx script/run-mcp-server.tsトラブルシューティング
よくある問題
「Module not found」エラー
cd packages/mcp-server && npm run buildでビルドを実行
Cursor AIでMCPサーバーが認識されない
Cursor AIを完全に再起動
~/.cursor/mcp.jsonのパスが正しいか確認環境変数
TODOIST_API_TOKENが設定されているか確認
Todoist API エラー
APIトークンが有効か確認
Todoist API ドキュメント で制限事項を確認
他の環境での使用
このMCPサーバーはCursor AI以外の環境でも使用できます:
Claude Desktop: 設定ファイル
~/.config/claude/claude_desktop_config.jsonその他のMCPクライアント: stdio transportをサポートするクライアント
設定方法は基本的に同じで、コマンドとパスを適切に指定するだけです。
🌟 主な特徴
🤖 AI統合: Cursor AI、Claude Desktopなど複数のAIツールからTodoistを操作
🚀 簡単セットアップ: 3ステップで導入完了
📋 高度なタスク管理: AIアシスタントでGTD、タスク整理、プロジェクト管理が効率化
🔄 リアルタイム同期: Todoist APIと直接連携
🛠️ 拡張可能: オープンソースで自由にカスタマイズ
💾 stdio transport: 標準的なMCPプロトコル準拠
📖 ライセンス
MIT License - 詳細は LICENSE ファイルを参照
🔗 リンク
MCP Protocol: https://modelcontextprotocol.io
Todoist API: https://developer.todoist.com
🤝 コントリビューション
プルリクエスト、イシュー報告、機能提案を歓迎します!
Fork the repository
Create your feature branch (
git checkout -b feature/AmazingFeature)Commit your changes (
git commit -m 'Add some AmazingFeature')Push to the branch (
git push origin feature/AmazingFeature)Open a Pull Request
🎯 AIでタスク管理を革新しよう!
Available Tools
5 toolsadd-task-to-any-projectC
Add task to a any Project in Todoist
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | No | Project Id where the task needs to be added. | |
| content | Yes | Content for the task |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden of behavioral disclosure. It states this is an 'Add' operation (implying creation/mutation) but doesn't disclose any behavioral traits like authentication requirements, rate limits, error conditions, or what happens when adding tasks to different project types. 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 - a single sentence with no wasted words. It's front-loaded with the core purpose and uses minimal language to convey the basic function. While perhaps too minimal, it achieves maximum efficiency in word count.
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 insufficiently complete. It doesn't explain what happens after task creation, what the response looks like, error conditions, or how this differs from the similar sibling tool. The agent lacks necessary context to use this tool effectively.
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 clearly documented in the schema itself. The description doesn't add any meaningful parameter semantics beyond what's already in the schema - it doesn't explain format expectations, constraints, or usage patterns for the parameters.
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 ('Add task') and target resource ('to a any Project in Todoist'), providing specific verb+resource combination. However, it doesn't distinguish this tool from its sibling 'add-task-to-project' - the only difference appears to be the word 'any' which doesn't clarify functional distinction.
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 about when to use this tool versus the similar 'add-task-to-project' sibling tool. The description doesn't mention prerequisites, alternatives, or specific contexts for usage, leaving the agent to guess about tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add-task-to-projectC
Add task to a specific Project in Todoist
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | No | Project Id where the task needs to be added. | |
| content | Yes | Content for the task |
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. While 'Add task' implies a write/mutation operation, the description doesn't disclose important behavioral traits: whether this requires authentication, what happens on success/failure, if there are rate limits, whether the task is immediately visible, or what the return value looks like. For a mutation tool with zero annotation coverage, this leaves significant gaps in understanding how the tool behaves.
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 7 words, front-loading the essential information ('Add task to a specific Project in Todoist') with zero wasted words. Every element serves a purpose, making it easy to parse quickly while still conveying the core functionality.
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 insufficiently complete. It doesn't explain what happens after the task is added, what the response looks like, error conditions, or authentication requirements. The presence of sibling tools like 'add-task-to-any-project' creates ambiguity that the description doesn't resolve. For a tool that modifies data, more contextual information 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?
The schema description coverage is 100%, with both parameters well-documented in the schema itself. The description adds no additional parameter semantics beyond what's already in the schema - it doesn't explain format requirements, constraints, or provide examples. Since the schema does the heavy lifting, the baseline score of 3 is appropriate, though the description contributes no extra value.
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 ('Add task') and target resource ('to a specific Project in Todoist'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from the sibling tool 'add-task-to-any-project' - both appear to add tasks, so the distinction between 'specific Project' vs 'any project' isn't clarified in the description itself.
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 explain the relationship with 'add-task-to-any-project' (which appears to be a similar tool), nor does it mention prerequisites like needing a project_id from 'get-project-id' or 'get-projects' first. There's no 'when-not' guidance or context about appropriate use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-project-idC
Get the id of the project from Todoist
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The name of the project |
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 but only states the basic function. It doesn't cover critical aspects like error handling (e.g., if the project doesn't exist), authentication requirements, or rate limits, leaving significant gaps 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 directly states the tool's purpose without unnecessary words. It's front-loaded and wastes no space, making it highly concise and well-structured for quick comprehension.
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 explain what the tool returns (e.g., a string ID or structured data), error scenarios, or integration with sibling tools, failing to provide enough context for effective use in this environment.
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, documenting the 'name' parameter clearly. The description doesn't add extra semantic context beyond what the schema provides, such as format examples or constraints, so it meets the baseline for high schema coverage without enhancing parameter understanding.
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 ('id of the project from Todoist'), making the purpose understandable. However, it doesn't explicitly differentiate from sibling tools like 'get-projects' which might return project lists rather than IDs, leaving room for ambiguity.
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-projects' or 'get-tasks'. The description lacks context about prerequisites, such as whether the project must exist or if authentication is needed, offering minimal usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-projectsB
Get all the projects from Todoist
| 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 but only states the basic action without behavioral details. It doesn't disclose whether this is a read-only operation, if it requires authentication, how results are returned (e.g., pagination, format), or any rate limits—critical gaps for a tool that fetches data.
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 front-loads the core purpose with zero waste. Every word ('Get all the projects from Todoist') directly contributes to understanding the tool's function, making it optimally 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 no annotations and no output schema, the description is incomplete for a data-fetching tool. It lacks details on return values (e.g., project fields, format), authentication needs, or error handling, leaving significant gaps despite the simple parameterless design.
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 doesn't mention parameters, earning a baseline 4 for not adding unnecessary information beyond what the schema already provides.
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 ('projects from Todoist'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'get-project-id' or 'get-tasks', which would require more specificity about scope or output format to earn a 5.
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 'get-project-id' (for a single project) or 'get-tasks' (for tasks instead of projects). It lacks explicit when/when-not instructions or named alternatives, leaving usage context implied at best.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-tasksB
Get all the tasks from Todoist
| 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 states what the tool does but provides no information about permissions required, rate limits, pagination behavior, or what format the returned tasks will have. 'Get all the tasks' implies a read operation but lacks critical behavioral details.
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 any wasted words. It's appropriately sized for a simple retrieval tool and front-loads the essential information.
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 no annotations, no output schema, and no parameters, the description is insufficiently complete. It doesn't address what 'all the tasks' means in practice (active only? completed? archived?), doesn't mention authentication requirements, and provides no information about the return format or structure.
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 fully documents the parameter situation. The description appropriately doesn't discuss parameters since none exist, earning a baseline score of 4 for not introducing confusion about non-existent parameters.
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 ('all the tasks from Todoist'), making the purpose immediately understandable. It doesn't explicitly distinguish from sibling tools like 'get-projects' or 'get-project-id', but the resource specificity (tasks vs projects) provides implicit differentiation.
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 'get-projects' or 'add-task-to-project'. It doesn't mention prerequisites, limitations, or appropriate contexts for retrieving all tasks versus filtered subsets.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
There is significant overlap and confusion between 'add-task-to-any-project' and 'add-task-to-project'—they appear to serve nearly identical purposes, with only subtle differences in wording that could easily lead to misselection. The other tools are more distinct but the core task-adding functionality is ambiguous.
The naming follows a consistent kebab-case pattern (e.g., 'add-task-to-any-project', 'get-projects') throughout all tools, which is predictable and readable. There are no deviations in style, though the specific verb choices could be more standardized.
With 5 tools, the count is reasonable for a Todoist integration, covering core operations like adding tasks and retrieving projects/tasks. It's slightly thin but manageable for basic functionality without feeling overloaded.
The toolset has significant gaps for a Todoist domain: it lacks update or delete operations for tasks or projects, and there is no way to manage task completion or priorities. This incomplete coverage will likely cause agent failures in common workflows.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Official Todoist MCP server for AI assistants to manage tasks, projects, and workflows.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Model Context Protocol server for todo.vu task management and time tracking.
The Mercado Pago MCP Server implements the Model Context Protocol to provide AI agents and LLMs with access to Mercado Pago's APIs and tools within compatible development environments. It acts as an intermediary that translates Mercado Pago resources into executable functions (tools) that AI applications can invoke to perform actions and automate flows. The server simplifies integration, enables using documentation to implement or improve code, and optimizes operations through natural language interactions without manual implementations.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceA Model Context Protocol server that enables advanced task and project management in Todoist via Claude Desktop and other MCP-compatible clients.522MIT
- AlicenseBqualityCmaintenanceAn MCP server that integrates with the Todoist REST API v2 to enable AI assistants to manage tasks, projects, sections, comments, and labels. It supports comprehensive operations including batch task creation, history tracking for completed tasks, and organized project management.332961MIT
- AlicenseAqualityDmaintenanceA Python MCP server that enables AI assistants to manage Todoist tasks and projects through the Model Context Protocol. It supports full CRUD operations for tasks and projects, including support for nested projects and Todoist's advanced filter syntax.11MIT
- AlicenseAqualityDmaintenanceA clean, reliable MCP (Model Context Protocol) server for Todoist — built on the Todoist unified API v1.201MIT
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/kentaroh7777/mcp-todoist'
If you have feedback or need assistance with the MCP directory API, please join our Discord server