Todoist MCP Server について
Todoist MCP Server は、Todoist REST API v2 を通じて AI アシスタントがタスクやプロジェクトを管理できる Go 製サーバーです。stdio と HTTP の両モードに対応し、タスクの絞り込みや詳細取得、編集を行えます。
主な機能
- 01条件を指定したタスクの検索・取得
- 02タスクの作成・更新・完了・削除
- 03プロジェクト一覧と詳細の取得
- 04stdio と HTTP モードでの実行
- 05Todoist API token による認証
活用シーン
- 01プロジェクトや条件を指定してタスクを検索
- 02ToDo を作成して内容を変更
- 03処理済みタスクを完了または削除
- 04Todoist のプロジェクトと詳細を確認
MCP 対応
Todoist のタスク・プロジェクト操作を MCP クライアント向けのツールとして公開し、Todoist API token で REST API v2 にアクセスします。stdio または HTTP モードで実行できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Todoist MCP サーバー
AI アシスタント向けに Todoist API との連携機能を提供する Model Context Protocol(MCP)サーバーです。
概要
Todoist MCP サーバーを使うと、AI アシスタントが Todoist と連携し、ユーザーに代わってタスクやプロジェクトを管理できます。このサーバーは、AI システムが Todoist の機能にアクセスするための標準インターフェースとして、Model Context Protocol(MCP)を実装しています。
機能
-
タスク管理
- タスクのフィルタリングルールと例を取得
- フィルタリングオプションを指定してタスクを取得
- タスクの詳細を取得
- タスクを新規作成
- 既存のタスクを更新
- タスクを完了済みにする
- タスクを削除
-
プロジェクト管理
- すべてのプロジェクトを取得
- プロジェクトの詳細を取得
インストール
前提条件
- Go 1.21 以降(ソースからビルドする場合)
- Docker(Docker でインストールする場合)
- Todoist API トークン
ソースからビルド
- リポジトリをクローンします。
git clone https://github.com/naotama2002/todoist-go-mcp-server.git
cd todoist-go-mcp-server
- 依存関係をインストールします。
go mod download
- バイナリをビルドします。
make build
Docker を使用
Docker を使って todoist-mcp-server を実行することもできます。Docker を使うと、環境の一貫性を保ち、デプロイを簡単に行えます。
GitHub Container Registry から取得
# Pull the latest image
docker pull ghcr.io/naotama2002/todoist-go-mcp-server:latest
# Or pull a specific version
docker pull ghcr.io/naotama2002/todoist-go-mcp-server:{TAG}
ローカルでビルド
# Build the Docker image
docker build -t todoist-mcp-server .
セットアップ
Todoist API トークンを設定します。
ルートディレクトリに、次の内容を記述した .envrc ファイルを作成します。
export TODOIST_API_TOKEN=your_todoist_api_token
direnv を使用する場合は、次を実行します。
direnv allow
または、環境変数を直接設定します。
export TODOIST_API_TOKEN=your_todoist_api_token
使用方法
サーバーの実行
バイナリの使用
HTTP モード
サーバーを HTTP モードで実行します。
go run cmd/todoist-mcp-server/main.go --mode http --addr :8080
または、ビルド済みのバイナリを使います。
./build/todoist-mcp-server --mode http --addr :8080
標準入出力モード
MCP クライアントと連携するため、サーバーを stdio モードで実行します。
go run cmd/todoist-mcp-server/main.go --mode stdio
または、ビルド済みのバイナリを使います。
./build/todoist-mcp-server --mode stdio
Docker の使用
HTTP モード
# Basic usage with Docker
docker run --rm -it -p 8080:8080 -e TODOIST_API_TOKEN=your_todoist_api_token \
ghcr.io/naotama2002/todoist-go-mcp-server:latest --mode http --addr :8080
# With custom port
docker run --rm -it -p 3000:3000 -e TODOIST_API_TOKEN=your_todoist_api_token \
ghcr.io/naotama2002/todoist-go-mcp-server:latest --mode http --addr :3000
# Using locally built image
docker run --rm -it -p 8080:8080 -e TODOIST_API_TOKEN=your_todoist_api_token \
todoist-mcp-server --mode http --addr :8080
標準入出力モード
# For stdio mode (used with MCP clients)
docker run --rm -i -e TODOIST_API_TOKEN=your_todoist_api_token \
ghcr.io/naotama2002/todoist-go-mcp-server:latest --mode stdio
# Using locally built image
docker run --rm -i -e TODOIST_API_TOKEN=your_todoist_api_token \
todoist-mcp-server --mode stdio
コマンドラインオプション
サーバーでは、次のコマンドラインオプションを使用できます。
--mode <mode>:サーバーモード。'http' または 'stdio' を指定します(デフォルト:"http")http:HTTP サーバーとして実行しますstdio:MCP 通信に標準入出力を使用して実行します
--addr <address>:HTTP モードでリッスンするアドレス(デフォルト:":8080")--token <token>:Todoist API トークン(TODOIST_API_TOKEN 環境変数でも設定できます)
例:
# Run HTTP server on port 3000
go run cmd/todoist-mcp-server/main.go --mode http --addr :3000
# Run with a specific Todoist API token
go run cmd/todoist-mcp-server/main.go --mode http --token your_todoist_api_token
# Run in stdio mode
go run cmd/todoist-mcp-server/main.go --mode stdio
MCP クライアントでのテスト
付属のテストクライアントを使用して、サーバーをテストできます。
go run cmd/test-mcp-client/main.go
利用可能なツール
タスク管理
todoist_get_task_filter_rules
Todoist のタスクフィルターに関するルールと例を取得します。このツールは、自然言語のクエリを todoist_get_tasks ツールで使う Todoist フィルター構文に変換するのに役立ちます。
パラメーター:なし
応答例(Markdown 形式):
# Introduction to Filters
Filters in Todoist are custom views that display tasks based on specific criteria. You can filter tasks by name, date, project, label, priority, creation date, and more.
## Creating Filters
1. Select "Filters & Labels" in the sidebar
2. Click the add icon next to Filters
3. Enter a name for your filter and change its color (optional)
4. Enter your filter query
5. Click "Add" to save your filter
## Filter Symbols
| Symbol | Meaning | Example |
|--------|---------|--------|
| \| | OR | today \| overdue |
| & | AND | today & p1 |
| ! | NOT | !subtask |
| () | Priority processing | (today \| overdue) & #work |
## Advanced Queries
### Keyword-Based Filters
| Description | Query |
|-------------|-------|
| Tasks containing "meeting" | search: meeting |
| Tasks containing "meeting" scheduled for today | search: meeting & today |
### Date-Based Filters
| Description | Query |
|-------------|-------|
| Tasks for a specific date | date: jan 3 |
| Tasks before a specific date | before: may 5 |
| Tasks with no date | no date |
## Useful Filter Examples
| Description | Query |
|-------------|-------|
| Overdue or today's tasks in "Work" project | (today \| overdue) & #work |
| Tasks with no date | no date |
| Tasks with @waiting label in the next 7 days | 7 days & @waiting |
#### `todoist_get_tasks`
Get a list of tasks with filtering options.
Parameters:
- `projectId` (string, optional): Filter tasks by project ID
- `filter` (string, optional): Todoist filter query using the Todoist filter syntax
Example:
```json
{
"projectId": "2203306141",
"filter": "today"
}
todoist_get_task
特定のタスクの詳細を取得します。
パラメーター:
id(文字列、必須):タスクの一意の識別子
例:
{
"id": "2995104339"
}
todoist_create_task
新しいタスクを作成します。
パラメーター:
content(文字列、必須):タスクの内容description(文字列、任意):タスクの詳細な説明またはメモprojectId(文字列、任意):タスクを割り当てるプロジェクト IDparentId(文字列、任意):サブタスクを作成する際の親タスク IDorder(整数、任意):タスクの位置を指定する順序の値priority(整数、任意):タスクの優先度:1(通常)、2(中)、3(高)、4(緊急)dueString(文字列、任意):自然言語で指定する期限。例:'today'、'tomorrow'dueDate(文字列、任意):YYYY-MM-DD 形式の期限dueDatetime(文字列、任意):RFC3339 形式の期限日時
例:
{
"content": "Buy groceries",
"description": "Need to buy milk, eggs, and bread",
"projectId": "2203306141",
"priority": 2,
"dueString": "tomorrow at 10am"
}
todoist_update_task
既存のタスクを更新します。
Parameters:
id(string, required): 更新するタスクの一意の識別子content(string, optional): タスクの新しい内容description(string, optional): タスクの詳細な説明またはメモpriority(integer, optional): タスクの優先度:1(通常)、2(中)、3(高)、4(緊急)dueString(string, optional): 自然言語で指定した期限dueDate(string, optional): YYYY-MM-DD 形式の期限dueDatetime(string, optional): RFC3339 形式の期限と時刻
例:
{
"id": "2995104339",
"content": "Buy groceries and household items",
"priority": 1
}
todoist_close_task
タスクを完了としてマークします。
Parameters:
id(string, required): 完了としてマークするタスクの一意の識別子
例:
{
"id": "2995104339"
}
todoist_delete_task
タスクを削除します。
Parameters:
id(string, required): 削除するタスクの一意の識別子
例:
{
"id": "2995104339"
}
プロジェクト管理
todoist_get_projects
すべてのプロジェクトの一覧を取得します。
Parameters: なし
todoist_get_project
特定のプロジェクトの詳細を取得します。
Parameters:
id(string, required): プロジェクトの一意の識別子
例:
{
"id": "2203306141"
}
Claude Desktop との連携
Todoist MCP Server を Claude Desktop で使用するには、Claude Desktop の設定に追加する必要があります。
GitHub Releases からダウンロード
最も簡単に始めるには、GitHub Releases ページからビルド済みのバイナリをダウンロードします。
-
Releases ページにアクセスし、お使いのプラットフォーム向けの最新リリースをダウンロードします。
- Linux:
todoist-mcp-server_Linux_x86_64.tar.gzまたはtodoist-mcp-server_Linux_arm64.tar.gz - macOS:
todoist-mcp-server_Darwin_x86_64.tar.gzまたはtodoist-mcp-server_Darwin_arm64.tar.gz - Windows:
todoist-mcp-server_Windows_x86_64.zip
- Linux:
-
アーカイブを展開し、
todoist-mcp-serverバイナリを取得します。# For Linux/macOS tar -xzf todoist-mcp-server_*_*.tar.gz # For Windows # Extract the zip file using Windows Explorer or a tool like 7-Zip -
バイナリを実行可能にします(Linux/macOS のみ)。
chmod +x todoist-mcp-server -
必要に応じて、バイナリを PATH 内の場所に移動します。
# Linux/macOS sudo mv todoist-mcp-server /usr/local/bin/ # Windows # Move the .exe file to a location in your PATH
ソースからビルド
または、ソースからバイナリをビルドできます。
# Build the binary
make build
設定
Todoist MCP Server を Claude Desktop の設定に追加します。
HTTP モード
- Todoist MCP Server を HTTP モードで実行します。
todoist-mcp-server --mode http --addr :8080
- 次の設定を Claude Desktop の設定に追加します。
{
"name": "Todoist",
"description": "Manage Todoist tasks and projects",
"endpoint": "http://localhost:8080",
"tools": [
{
"name": "todoist_get_task_filter_rules",
"description": "Get filter rules and examples for Todoist task filters"
},
{
"name": "todoist_get_tasks",
"description": "Get a list of tasks with filtering options"
},
{
"name": "todoist_get_task",
"description": "Get details of a specific task"
},
{
"name": "todoist_create_task",
"description": "Create a new task"
},
{
"name": "todoist_update_task",
"description": "Update an existing task"
},
{
"name": "todoist_close_task",
"description": "Mark a task as completed"
},
{
"name": "todoist_delete_task",
"description": "Delete a task"
},
{
"name": "todoist_get_projects",
"description": "Get a list of all projects"
},
{
"name": "todoist_get_project",
"description": "Get details of a specific project"
}
]
}
Stdio モード
バイナリを使用する場合
Claude Desktop / Cline、Roo Cline / Windsurf
{
"mcpServers": {
"todoist": {
"command": "/path/to/todoist-mcp-server",
"args": ["--mode", "stdio"],
"env": {
"TODOIST_API_TOKEN": "<YOUR_TODOIST_API_TOKEN>"
}
}
}
}
VSCode
{
"mcp": {
"servers": {
"todoist": {
"command": "/path/to/todoist-mcp-server",
"args": ["--mode", "stdio"],
"env": {
"TODOIST_API_TOKEN": "<YOUR_TODOIST_API_TOKEN>"
}
}
}
}
}
Docker を使用する場合
Claude Desktop / Cline、Roo Cline / Windsurf
{
"mcpServers": {
"todoist": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e",
"TODOIST_API_TOKEN=<YOUR_TODOIST_API_TOKEN>",
"ghcr.io/naotama2002/todoist-go-mcp-server:latest",
"--mode",
"stdio"
]
}
}
}
VSCode
{
"mcp": {
"servers": {
"todoist": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e",
"TODOIST_API_TOKEN=<YOUR_TODOIST_API_TOKEN>",
"ghcr.io/naotama2002/todoist-go-mcp-server:latest",
"--mode",
"stdio"
]
}
}
}
}
/path/to/todoist-mcp-server をバイナリの実際のパスに、<YOUR_TODOIST_API_TOKEN> を Todoist API トークンに置き換えてください。
-
Claude Desktop で「Settings > Tools > Add Tool」に移動し、適切な JSON 設定を貼り付けます。
-
設定を保存し、必要に応じて Claude Desktop を再起動します。
これで、自然言語を使って Claude に Todoist のタスクやプロジェクトを管理してもらえます。
コントリビューション
コントリビューションを歓迎します。お気軽にプルリクエストを送信してください。
トラブルシューティング
Docker の問題
ポートがすでに使用されている
「port already in use」エラーが発生した場合は、競合するサービスを停止するか、別のポートを使用してください。
# Use a different port
docker run --rm -it -p 3335:8080 -e TODOIST_API_TOKEN=your_todoist_api_token \
ghcr.io/naotama2002/todoist-go-mcp-server:latest --mode http --addr :8080
MCP クライアントのネットワークの問題
MCP クライアントが Docker コンテナに接続できない場合は、ホストネットワークを使用してみてください。
# Use host networking mode
docker run --rm -i --net=host -e TODOIST_API_TOKEN=your_todoist_api_token \
ghcr.io/naotama2002/todoist-go-mcp-server:latest --mode stdio
環境変数の問題
Todoist API トークンが正しく設定されていることを確認してください。
# Check if the token is set correctly
docker run --rm -i -e TODOIST_API_TOKEN=your_actual_token \
ghcr.io/naotama2002/todoist-go-mcp-server:latest --mode stdio
認証データをクリアする
認証に問題がある場合は、Todoist API トークンを確認してください。
- Todoist Integrationsにアクセスします
- API トークンをコピーします
- 環境に正しく設定されていることを確認します
ライセンス
このプロジェクトは MIT License のもとでライセンスされています。詳細については、LICENSE ファイルを参照してください。
Acknowledgments
Development
Project Structure
todoist-go-mcp-server/
├── cmd/
│ ├── test-client/ # Test client for the Todoist API
│ ├── test-mcp-client/ # Test client for the MCP server
│ └── todoist-mcp-server/ # Main MCP server application
├── docs/ # Documentation
├── pkg/
│ ├── log/ # Logging utilities
│ ├── todoist/ # Todoist API client and tools
│ └── toolsets/ # MCP toolset definitions
└── todo/ # Implementation plans and notes
Running Tests
make test
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。