Toggl MCP Server について
Toggl MCP Serverは、MCPクライアントからToggl Trackのプロジェクトと時間記録を管理するサーバーです。プロジェクト操作、タイマー、記録の検索・編集に対応します。
主な機能
- 01プロジェクトの作成、一覧、更新、削除
- 02時間記録の開始と停止
- 03時間記録の編集と削除
- 04日付範囲による記録検索
- 05プロジェクト、タグ、課金状態の設定
活用シーン
- 01Togglプロジェクトの作成や更新
- 02進行中の作業のタイマー開始
- 03指定期間の時間記録の確認
- 04記録した時間、タグ、プロジェクトの修正
MCP 対応
MCPクライアントに、Toggl Trackのプロジェクトと時間記録を操作するツールを提供します。プロジェクト管理、タイマー操作、記録検索に対応します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Toggl MCP サーバー
MCP クライアントが Toggl Track と連携し、自然言語を通じて時間の記録、プロジェクト管理、ワークスペース操作を行えるようにします。
機能
ツール
プロジェクト管理
-
create_project
- 説明: 指定した Toggl ワークスペースに新しいプロジェクトを作成します。
- 入力:
name(str): 作成するプロジェクトの名前です。必須フィールドです。workspace_name(str, optional): プロジェクトを作成するワークスペースの名前です。指定しない場合は、ユーザーのデフォルトのワークスペースが使用されます。active(bool, optional): プロジェクトがアクティブかどうかを指定します。デフォルトはTrueです。billable(bool, optional): プロジェクトが請求対象かどうかを指定します。デフォルトはFalseです。client_id(int, optional): プロジェクトに関連付けられたクライアントの ID です。color(str, optional): プロジェクトに割り当てる 16 進数のカラーコードです(例: "#FF0000")。is_private(bool, optional): プロジェクトが非公開かどうかを指定します。デフォルトはTrueです。start_date(str, optional): ISO 8601 形式のプロジェクト開始日です(例: "YYYY-MM-DD")。end_date(str, optional): ISO 8601 形式のプロジェクト終了日です(例: "YYYY-MM-DD")。estimated_hours(int, optional): プロジェクトの推定時間数です。template(bool, optional): プロジェクトがテンプレートかどうかを指定します。デフォルトはFalseです。template_id(int, optional): プロジェクトの作成に使用するテンプレートの ID です。
- 出力: 新しく作成されたプロジェクトのデータを含む JSON レスポンスです。
-
delete_project
- 説明: 指定したワークスペース内で、名前によって識別されるプロジェクトを削除します。
- 入力:
project_name(str): 削除するプロジェクトの正確な名前です。必須フィールドです。workspace_name(str, optional): プロジェクトが含まれるワークスペースの名前です。指定しない場合は、ユーザーのデフォルトのワークスペースが使用されます。
- 出力: プロジェクトの削除が成功したことを示す確認メッセージ(str)です。
-
update_projects
- 説明: パッチ操作を使用して、指定したワークスペース内の複数のプロジェクトを一括更新します。
- 入力:
project_names(List[str]): 更新するプロジェクト名のリストです。必須フィールドです。operations(List[dict]): 選択したプロジェクトに適用するパッチ操作のリストです。各操作は、操作の種類(op)、フィールドパス(path)、新しい値(value)を指定する辞書です(例:{"op": "replace", "path": "/active", "value": false})。必須フィールドです。workspace_name(str, optional): プロジェクトが含まれるワークスペースの名前です。指定しない場合は、ユーザーのデフォルトのワークスペースが使用されます。
- 出力: 更新されたプロジェクトのデータを含む JSON レスポンスです。
-
get_all_projects
- 説明: 指定したワークスペース内のすべてのプロジェクトのリストを取得します。
- 入力:
workspace_name(str, optional): プロジェクトを取得するワークスペースの名前です。指定しない場合は、ユーザーのデフォルトのワークスペースが使用されます。
- 出力: 指定したワークスペースで見つかったプロジェクトデータオブジェクトのリストを含む JSON レスポンスです。
時間記録の管理
-
new_time_entry
- 説明:新しい時間記録を作成します。タイマーを開始する場合(
startのみが指定されている場合、またはstartとdurationのどちらも指定されていない場合)、または完了した時間記録を記録する場合(startとstop、またはstartとdurationが指定されている場合)に使用できます。 - 入力:
description(str):時間記録の説明。workspace_name(str, optional):ワークスペースの名前。デフォルトはユーザーのデフォルトのワークスペースです。project_name(str, optional):時間記録を関連付けるプロジェクトの名前。tags(List[str], optional):時間記録に適用するタグ名のリスト。start(str, optional):ISO 8601 形式での記録の開始時刻(例:"2023-10-26T10:00:00Z")。実行中の記録を作成する場合、現在の時刻がデフォルトになります。stop(str, optional):ISO 8601 形式での記録の終了時刻。指定すると、完了した記録が作成されます。duration(int, optional):記録の長さ(秒)。startが指定されているがstopが指定されていない場合、durationによって終了時刻が決まります。startが指定されていない場合、負の値を指定すると実行中のタイマーが開始します。billable(bool, optional):時間記録を請求対象としてマークするかどうか。デフォルトは False です。created_with(str, optional):記録の作成に使用するアプリケーションの名前。デフォルトは "MCP" です。
- 出力:作成された時間記録のデータを含む JSON レスポンス。
- 説明:新しい時間記録を作成します。タイマーを開始する場合(
-
stop_time_entry
- 説明:現在実行中の時間記録を停止します。
- 入力:
workspace_name(str, optional):記録が実行されているワークスペースの名前。デフォルトはユーザーのデフォルトのワークスペースです。
- 出力:停止した時間記録のデータを含む JSON レスポンス。
-
delete_time_entry
- 説明:説明と開始時刻を指定して、特定の時間記録を削除します。
- 入力:
time_entry_description(str):削除する時間記録の正確な説明。start_time(str):識別に使用する、ISO 8601 形式での記録の正確な開始時刻。workspace_name(str, optional):記録が含まれるワークスペースの名前。デフォルトはユーザーのデフォルトのワークスペースです。
- 出力:削除が成功した場合、成功確認メッセージ(str)。
-
get_current_time_entry
- 説明:現在実行中の時間記録の詳細を取得します。
- 入力:なし(ユーザーのコンテキストが暗黙的に使用されます)。
- 出力:現在実行中の時間記録のデータを含む JSON レスポンス。時間記録が実行されていない場合は None。
-
update_time_entry
- 説明:説明と開始時刻で識別される既存の時間記録の属性を更新します。
- 入力:
time_entry_description(str):更新する時間記録の現在の説明。start_time(str):識別に使用する、ISO 8601 形式での記録の正確な開始時刻。workspace_name(str, optional):記録が含まれるワークスペースの名前。デフォルトはユーザーのデフォルトのワークスペースです。new_description(str, optional):時間記録の新しい説明。project_name(str, optional):記録に関連付ける新しいプロジェクト名。プロジェクトとの関連付けを解除するには、空の文字列 "" を指定します。tags(List[str], optional):新しいタグ名のリスト。既存のタグはすべて置き換えられます。すべてのタグを削除するには、空のリスト[]を指定します。new_start(str, optional):ISO 8601 形式での新しい開始時刻。new_stop(str, optional):ISO 8601 形式での新しい終了時刻。billable(bool, optional):新しい請求対象ステータス。
- 出力:更新された時間記録のデータを含む JSON レスポンス。
-
get_time_entries_for_range
- 説明: 現在の日からのオフセットで定義された、指定した日付範囲内の時間エントリーを取得します。
- 入力:
from_day_offset(int): 今日からの開始日のオフセット(例: 今日の場合は0、昨日の場合は-1、1週間前の場合は-7)。to_day_offset(int): 今日からの終了日のオフセット(例: 今日の場合は0、明日の場合は1)。範囲には開始日と終了日の両方が含まれます。workspace_name(str, optional): エントリーを取得するワークスペースの名前。デフォルトはユーザーのデフォルトのワークスペースです。
- 出力: 指定した日付範囲内で見つかった時間エントリーのリストを含むJSONレスポンス。
はじめに
前提条件
- Python 3.11+
- Toggl Track アカウント
- 依存関係の管理用にuvがインストールされていること
環境変数
mcp_toggl_server フォルダー内に .env ファイルを作成し、次の内容を記述します。
EMAIL=your_toggl_email
PASSWORD=your_toggl_password
Toggl APIトークンを使用する場合:
EMAIL=xxxx
PASSWORD="api_token"
xxxx は個人用トークンを表します。
インストール
まずuvをインストールします。
- MacOS/Linuxの場合:
bash curl -LsSf https://astral.sh/uv/install.sh | sh
- Windowsの場合:
bash powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
uvコマンドを認識させるため、完了後にターミナルを再起動してください。
次に、リポジトリをクローンしてプロジェクトをセットアップします。
git clone [repository-url]
cd mcp_toggl_server
uv venv
uv pip install --all
開発ツールとの連携
VS Code + GitHub Copilot のセットアップ
.vscode/mcp.jsonでMCPサーバーを設定します。
"servers": {
"toggl": {
"type": "stdio",
"command": "uv",
"args": [
"--directory",
"/ABSOLUTE/PATH/TO/PARENT/FOLDER/mcp_toggl_server",
"run",
"toggl_mcp_server.py"],
"envFile": "${workspaceFolder}/mcp_toggl_server/.env"
}
}
-
設定を更新します。
/ABSOLUTE/PATH/TO/PARENT/FOLDER/mcp_toggl_serverをサーバーの絶対パスに置き換えます。- コマンド欄にuv実行ファイルのフルパスを指定する必要がある場合があります。MacOS/Linuxでは
which uv、Windowsではwhere uvを実行すると確認できます。
-
サーバーを有効にします。
- サーバー設定
/.vscode/mcp.jsonにカーソルを合わせ、開始ボタンを探します。 - 開始をクリックすると、Copilotが利用可能なツールを検出します。
- Copilotでエージェントモードに切り替えます。
- サーバー設定
詳しいセットアップ手順については、以下を参照してください。
その他のMCPクライアントとの連携
Toggl MCP Serverは、MCP互換のクライアントであればどれでも使用できます。連携手順については、以下を参照してください。
- Claude Desktopについては、MCP クイックスタートガイドを参照してください。
- その他のMCPクライアントについては、サーバー設定に関する各クライアントのドキュメントを参照してください。
注:通常、設定では、上記のVS Codeのセットアップと同様に、サーバーのパスと環境変数を指定します。
MCP Inspectorでのテスト
開発モードで実行するには:
EMAIL=your_toggl_email PASSWORD=your_toggl_password mcp dev toggl_mcp_server.py
ライセンス
このMCPサーバーはMITライセンスの下でライセンスされています。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。