Wdttg Where Did The Time Go? について
wdttg はフリーランサー向けのローカルなターミナル時間トラッカーで、TUI と Markdown 保存を備えています。MCP サーバーを通じてエージェントが記録を作成・照会でき、入力検証や時間重複の確認も行います。
主な機能
- 01ターミナルのタイムライン画面
- 02月単位の GFM Markdown 保存
- 03クライアント・プロジェクト・活動の階層
- 04重複チェックとレポート
- 05CSV・JSON エクスポート
活用シーン
- 01自然言語で作業時間を記録
- 02クライアント別に請求対象時間を集計
- 03指定期間内の空き時間を検索
MCP 対応
MCP サーバーは時間記録、クライアントとプロジェクト、重複確認、レポートのツールを公開します。記録を検証し、並べ替えとアトミックなファイル書き込みを行います。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
wdttg - あの時間はどこへ?
フリーランサー向けに Rust で構築された、ターミナル用の時間記録ツールです。クラウドもサブスクリプションも、アプリストアの承認待ちもありません。あるのは Markdown ファイル、TUI、そして人生は時間記録フォームに費やすには短すぎるので MCP サーバーだけです。
その他のスクリーンショット
開発の背景
最初は、このニーズを満たすために where-did-the-time-go Obsidian プラグインを作りました。とても便利でしたが、特定のアプリケーションプラットフォームに縛られることにうんざりしました。Obsidian のプラグイン承認にはいつまでも時間がかかりますし、結局のところデータ形式は単なる Markdown テーブルでした。
今では Markdown はどこでも使われていて、どの IDE でも読み取れ、どの AI エージェントでも問題なく扱えます。そこで承認プロセスと格闘する代わりに、コンセプトを独立したツールとして切り出しました。可視化のための軽量な TUI と、AI エージェントが面倒な作業をこなせるようにする MCP サーバーです。
基本的な考え方はとてもシンプルです。A から B の間に X をしました。それを分類して、レポートを作成したり、請求したりできるようにします。
これはタスクマネージャーではありません。タスクはチケット、簡単な日誌、カンバンボードなど、そのときに適した場所で管理しています。このツールが気にするのは、あなたが何をいつしたかだけです。クライアントとの会議。2 時間の開発作業。長引いた短い通話。記録して、タグを付けて、次に進みましょう。
AI との連携方法
ここで真価を発揮するのが MCP サーバーです。フォームをクリックして入力する代わりに、したことを Claude に伝えるだけです。
「今朝 9 時から 10 時半まで、Acme とスプリント計画会議をしました」
Claude は MCP ツールを呼び出して、記録内容を検証し、時間の重複を確認して、記録します。説明が曖昧すぎる場合は、不足している情報を尋ねます。
AI に Markdown を直接編集させず、なぜ MCP を使うのですか?
MCP サーバーがなければ、AI は生の Markdown をコンテキストに読み込み、テーブルを解析し、時間の重複を確認するためにタイムスタンプを頭の中で比較し、新しい行を正しく整形して、ファイル全体を書き戻さなければなりません。どの手順でも失敗する可能性があります。LLM が時間の比較を間違えたり、テーブルの整形を誤ったり、実際には空いていない時間帯を空いていると思い込んだりするかもしれません。さらに、ファイルの読み込みと書き直しだけで、記録のたびにコンテキストトークンを消費します。
MCP サーバーを使えば、create_entry が解析、検証、重複検出、時系列順の並べ替え、アトミックなファイル書き込みをプログラムで処理します。AI は「この記録を作成して」と伝えるだけで、確実な成功応答か、構造化されたエラーを受け取ります。推測も、トークンの無駄遣いも、ファイルを破損するリスクもありません。
TUI と MCP サーバーは同じデータファイルを共有しているため、AI が作成した記録は約 200 ミリ秒以内にタイムラインに表示されます。
機能
- 無限に縦へ続くタイムライン — キーボードとマウスで過去や未来へ延々とスクロールできます
- AI エージェント連携用の MCP サーバー(Claude Code、Cursor など)
- GFM Markdown 形式で保存 — 月ごとに 1 ファイル。人が読みやすく、編集もできます
- 請求可能な料金を設定できる、クライアント/プロジェクト/アクティビティの階層構造
- 重複検出と時間のスナップ
- 請求額を含むレポートの生成
- ファイル監視による TUI と MCP 間のリアルタイム同期
インストール
macOS と Linux のみ対応しています。 Windows はまだサポートされていません。
GitHub Releases から(推奨)
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/plattnum/wdttg-tui/releases/latest/download/wdttg-tui-installer.sh | sh
ソースから
Rust 1.85 以降(2024 エディション)が必要です。
git clone https://github.com/plattnum/wdttg-tui.git
cd wdttg-tui
cargo install --path crates/wdttg-tui
はじめに
1. 初期化
wdttg init
対話型セットアップウィザードでは、時刻形式(12 時間/24 時間)、週の開始曜日、データディレクトリ、最初のクライアントについて尋ねられます。各ステップで Enter キーを押すと、デフォルト値が使われます。
Welcome to wdttg! Let's set things up.
Time format [24h/12h] (24h):
Week start [monday/sunday] (monday):
Data directory (/Users/you/.local/share/wdttg/data):
Set up your first client:
Client name (Personal): Acme Corp
Hourly rate (0): 150
Currency (USD):
✓ Config saved to ~/.config/wdttg/config.toml
✓ Client data saved to ~/.local/share/wdttg/data/clients.toml
2. TUI を起動する
wdttg
3. AI 連携の設定(任意)
MCP サーバーは AI クライアントによって自動的に起動されるため、wdttg serve を手動で実行する必要はありません。設定を追加するだけで、AI が時間記録を作成・検索できるようになります。
以下の「MCP サーバーの設定」を参照してください。
レポートのエクスポート
wdttg export --format csv --preset this-month # CSV to stdout
wdttg export --format json --preset last-week # JSON to stdout
wdttg export --format csv --start 2026-03-01 --end 2026-03-31 --client acme > report.csv
または、「Reports」タブで x キーを押すと、現在のビューを CSV としてデータディレクトリにエクスポートできます。
再初期化
wdttg init --force # resets preferences and client data (keeps time entries)
アップグレード
新しいバージョンをインストールした後は、MCP サーバーを実行している AI クライアント(Claude Desktop、Claude Code、Cursor など)を再起動してください。クライアントは古いバイナリをキャッシュするため、AI クライアントを再起動して wdttg serve を再起動するまで、MCP サーバーには変更が反映されません。
cargo install --path crates/wdttg-tui # or download new release
# Then restart Claude Desktop / reload Claude Code
MCP サーバーの設定
Claude Code
プロジェクトの .mcp.json(グローバルにアクセスする場合は ~/.claude/mcp.json)に追加します。
{
"mcpServers": {
"wdttg": {
"command": "wdttg",
"args": ["serve"]
}
}
}
インストール済みのバイナリではなく、ソースから実行する場合:
{
"mcpServers": {
"wdttg": {
"command": "cargo",
"args": ["run", "-p", "wdttg-tui", "--", "serve"],
"cwd": "/path/to/wdttg-tui"
}
}
}
利用可能な MCP ツール
| ツール | 説明 |
|---|---|
| 時間記録 | |
list_entries | 日付範囲、プリセット、フィルターを指定して時間記録を一覧表示します |
get_entry | ID または開始・終了タイムスタンプを指定して、単一の記録を取得します |
create_entry | 検証と重複チェックを行い、新しい時間記録を作成します |
update_entry | 記録を更新します(一部項目のみの更新に対応) |
delete_entry | ID またはタイムスタンプを指定して記録を削除します |
check_overlaps | 提案された時間範囲が既存の記録と重複するか確認します |
available_slots | 日時の範囲内にある空き時間を検索します |
| レポート | |
generate_report | クライアント、プロジェクト、作業内容別の集計レポートと請求可能額を生成します |
get_status | 今日・今週の合計、記録件数、設定の概要を取得します |
| クライアントとプロジェクト | |
list_clients | プロジェクトと作業内容を含むクライアントの一覧を表示します |
create_client | 新しいクライアントを追加します |
update_client | クライアントの項目を更新します |
archive_client | クライアントをアーカイブ/アーカイブ解除します(プロジェクトと作業内容にも適用されます) |
create_project | クライアントの下にプロジェクトを追加します |
update_project | プロジェクトの項目を更新します |
archive_project | プロジェクトをアーカイブ/アーカイブ解除します |
create_activity | クライアントの下に作業内容を追加します |
update_activity | 作業内容の項目を更新します |
archive_activity | 作業内容をアーカイブ/アーカイブ解除します |
MCP Inspector でのテスト
MCP Inspectorを使用すると、サーバーを対話的にテストおよびデバッグできます。
# From source
npx -y @modelcontextprotocol/inspector cargo run -p wdttg-tui -- serve
# Or using the installed binary
npx -y @modelcontextprotocol/inspector wdttg serve
ウェブ UI(通常は http://localhost:6274)が開き、利用可能なツールの一覧表示、任意の入力での実行、結果の確認ができます。
設定
設定は次の 2 つのファイルに分かれています。
設定 — ~/.config/wdttg/config.toml
マシン固有の設定です。wdttg init によって作成されます。
[preferences]
time_format = "24h"
week_start = "monday"
day_start_hour = 6
day_end_hour = 22
snap_minutes = 15
tag_style = "flat" # "flat" | "powerline" | "triangle"
# data_dir = "/custom/path" # optional, overrides default data location
tag_style は、タイムラインの記録でタグチップを区切る方法を設定します。flat はデフォルトで、どのターミナルでも動作します。powerline はチップの色がなじむ Powerline の山形グリフ(U+E0B0)を使用しますが、ターミナルに Powerline/Nerd Font が必要です。triangle は U+25B6 を使用し、どの Unicode 対応ターミナルでも動作しますが、色はあまり滑らかになじみません。TUI で T キーを押すと実行中にスタイルを切り替えられ、選択したスタイルはこのファイルに保存されます。
クライアントデータ — <data_dir>/clients.toml
クライアント、プロジェクト、作業内容、および請求情報を保存します。時間記録と同じ場所にあるため、データディレクトリ全体を持ち運び、同期(git、Dropbox など)できます。
[bill_from]
name = "Jane Freelancer"
email = "[email protected]"
[[clients]]
id = "acme"
name = "Acme Corp"
color = "#FF6B6B"
rate = 150.0
currency = "USD"
[[clients.projects]]
id = "webapp"
name = "Web App"
color = "#4ECDC4"
[[clients.activities]]
id = "dev"
name = "Development"
color = "#45B7D1"
データ形式
時間記録は、~/.local/share/wdttg/data/YYYY-MM.md に GFM テーブルとして保存されます。
# 2026-03
| Start | End | Description | Client | Project | Activity | Notes |
|-------|-----|-------------|--------|---------|----------|-------|
| 2026-03-15 09:00 | 2026-03-15 10:30 | Sprint planning | acme | webapp | meeting | |
| 2026-03-15 11:00 | 2026-03-15 13:00 | API auth refactor | acme | webapp | dev | ticket ACME-412 |
| 2026-03-15 14:00 | 2026-03-15 14:30 | Quick sync with design team | acme | webapp | meeting | |
| 2026-03-15 14:30 | 2026-03-15 17:00 | Frontend dashboard work | acme | webapp | dev | |
開発
cargo build # Build everything
cargo test # Run all tests
cargo test -p wdttg-core # Core library tests
cargo test -p wdttg-mcp # MCP integration tests
cargo run -p wdttg-tui # Run the TUI
cargo clippy --all-targets # Lint
cargo fmt --check # Check formatting
ワークスペース
| クレート | 目的 |
|---|---|
wdttg-core | ライブラリ:解析、検証、保存、レポート |
wdttg-tui | バイナリ:ターミナル UI(ratatui + crossterm) |
wdttg-mcp | ライブラリ:MCP サーバーのツール実装 |
Companion: bulletd
wdttg は bulletd と相性がよく、bulletd は同じ原則に基づいて構築されたターミナル用のバレットジャーナルです。ローカルファースト、プレーンな Markdown、MCP 対応を特徴としています。2 つを組み合わせると、日々のワークフローをカバーできます。bulletd は 何を する必要があるかを記録し、wdttg は どれくらいの時間 がかかったかを記録します。どちらも MCP サーバーとして動作するため、AI エージェントは同じ会話の中でタスクログと時間の記録を管理できます。
Jira、Linear、Asana などの組織向け追跡システムは、計画された作業向けに作られており、日々の突発的な現実には向いていません。「Google Play Console でロールアウト状況を確認する」や「ステージング環境のデバッグを手伝う」といった作業のチケットを起票することはないでしょう。また、こうしたシステムとの MCP 連携は存在しないか、許可されていないか、非常に遅いかのいずれかです。これらのツールを使えば、実際に発生した作業をローカルで記録し、必要なときに公式システムへ反映できます。
サポート
役に立った場合は、コーヒーをごちそうしていただけるとうれしいです。
ライセンス
MIT - ご自由にお使いください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。