@fukuchang/taskchute-mcp 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md ADDED
@@ -0,0 +1,22 @@
1
+ # Changelog
2
+
3
+ ## 0.1.2 (Unreleased)
4
+
5
+ CLI (`@fukuchang/taskchute-cli`) と歩調を揃えるため、初回リリースのバージョン
6
+ を 0.1.0 ではなく 0.1.2 から開始する。以降は SemVer に従って独立に bump する。
7
+
8
+ - Initial release. 5 tools 公開:
9
+ - `list_tasks(date?)` — 指定日 (省略時は今日) のタスク一覧を返す
10
+ - `add_task(title, date?, estimated_seconds?, description?)` — タスク追加
11
+ - `start_task(id)` — 計測開始 (status → running)
12
+ - `pause_task(id)` — 一時停止 (status → paused)
13
+ - `done_task(id)` — 完了 (status → completed)
14
+ - 認証: env `TASKCHUTE_SUPABASE_URL` / `TASKCHUTE_SUPABASE_PUBLISHABLE_KEY` 必須。
15
+ session 永続化は CLI (`@fukuchang/taskchute-cli`) と同じ OS keyring
16
+ (`taskchute-cli` service) を共有するため、`taskchute login` 済なら追加操作不要。
17
+ - E2EE: passphrase は env `TASKCHUTE_PASSPHRASE` か CLI `taskchute unlock` で keyring
18
+ に保存したものを使う。stdio MCP の制約で対話 prompt は提供しない。
19
+ - 配布形態: tsup で single-file bundle (`dist/index.js`, ~72 KB)。
20
+ workspace deps (crypto / domain / infra-supabase) は bundle 内に取り込み、
21
+ native module / wasm / 大型 SDK (`@modelcontextprotocol/sdk` / `@napi-rs/keyring`
22
+ 等) は external で npm dependencies 経由配布。
package/README.md ADDED
@@ -0,0 +1,86 @@
1
+ # @fukuchang/taskchute-mcp
2
+
3
+ TaskChute MCP server — [Model Context Protocol](https://modelcontextprotocol.io/) 経由で
4
+ E2EE 暗号化された TaskChute タスクを Claude Desktop / Claude Code 等から操作するためのサーバー。
5
+
6
+ > **Status:** 0.1.2 (initial release, PR 13). 提供 tool は `list_tasks` / `add_task` /
7
+ > `start_task` / `pause_task` / `done_task` の 5 つ。npm 公開は PR 14 で実施予定。
8
+ > 初回バージョンを 0.1.2 から始めるのは、CLI (`@fukuchang/taskchute-cli`) と
9
+ > 歩調を揃えるため (以降は独立 SemVer)。
10
+
11
+ ## 提供 tool
12
+
13
+ | tool | 説明 |
14
+ | --- | --- |
15
+ | `list_tasks` | 指定日 (省略時は今日) のタスク一覧を返す |
16
+ | `add_task` | タスクを追加する (title, date?, estimated_seconds?, description?) |
17
+ | `start_task` | タスクの計測を開始する (status → running) |
18
+ | `pause_task` | タスクを一時停止する (status → paused) |
19
+ | `done_task` | タスクを完了する (status → completed) |
20
+
21
+ 入力 `id` は full UUID。`list_tasks` の結果から取って `start_task` / `pause_task` /
22
+ `done_task` に渡す想定。`estimated_seconds` は秒数の整数 (CLI と違って文字列パースは
23
+ しない)。
24
+
25
+ ## 認証 / E2EE
26
+
27
+ CLI と同じ OS keyring (`taskchute-cli` service) を読むため、事前に CLI で
28
+ セットアップしておくのが最短:
29
+
30
+ ```bash
31
+ # 1. ログイン (session を keyring に保存)
32
+ TASKCHUTE_SUPABASE_URL=... TASKCHUTE_SUPABASE_PUBLISHABLE_KEY=... taskchute login
33
+
34
+ # 2. E2EE unlock (passphrase を keyring に保存)
35
+ taskchute unlock
36
+ ```
37
+
38
+ MCP server を単独で動かす場合は env だけで完結する:
39
+
40
+ - `TASKCHUTE_SUPABASE_URL` (必須)
41
+ - `TASKCHUTE_SUPABASE_PUBLISHABLE_KEY` (必須)
42
+ - `TASKCHUTE_PASSPHRASE` (任意。keyring に保存済なら不要)
43
+
44
+ MCP は対話 prompt を持てないため、env か keyring のどちらにも passphrase が
45
+ ない場合は最初の tool 呼び出しで `McpToolError` を返す。
46
+
47
+ ## ローカル開発 (PR 13 時点)
48
+
49
+ ```bash
50
+ # build
51
+ pnpm --filter @fukuchang/taskchute-mcp build
52
+
53
+ # 動作確認 (Claude Code の .mcp.json から起動)
54
+ cp .mcp.json.example .mcp.json # repo root で
55
+ # .mcp.json の env を実値で埋めてから Claude Code を再起動
56
+ ```
57
+
58
+ `.mcp.json` の最小例 (Claude Code 用):
59
+
60
+ ```json
61
+ {
62
+ "mcpServers": {
63
+ "taskchute": {
64
+ "command": "node",
65
+ "args": [
66
+ "/path/to/TaskChute/packages/mcp/dist/index.js"
67
+ ],
68
+ "env": {
69
+ "TASKCHUTE_SUPABASE_URL": "https://YOUR_PROJECT.supabase.co",
70
+ "TASKCHUTE_SUPABASE_PUBLISHABLE_KEY": "sb_publishable_..."
71
+ }
72
+ }
73
+ }
74
+ }
75
+ ```
76
+
77
+ ## 設計メモ
78
+
79
+ - handler は pure function (`(ctx, input) => output`) に切り出して、MCP SDK
80
+ レイヤーから独立してテスト可能にしている
81
+ - 認証/E2EE wireup は CLI の `createAppContext` を MCP 側に複製したもの。
82
+ PR 15 以降で `@taskchute/infra-supabase` (もしくは新 `@taskchute/node-shared`)
83
+ に共通化する想定 — `feedback-iteration-then-redesign` に従いまず動作確認を優先
84
+ - AppContext は MCP server プロセス内で **1 度だけ** 構築して再利用する
85
+ (Argon2id 再実行コストを毎回払わない設計)
86
+ - 出力 JSON は snake_case + ISO 8601 文字列 (FastMCP / Python MCP との慣習揃え)