@ignission/slack-task-mcp 0.2.5 → 0.2.7

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/README.ja.md ADDED
@@ -0,0 +1,259 @@
1
+ <p align="center">
2
+ <h1 align="center">Slack Task MCP</h1>
3
+ </p>
4
+
5
+ <p align="center">
6
+ <strong>メンションから着手までの摩擦をゼロに</strong>
7
+ </p>
8
+
9
+ <p align="center">
10
+ <a href="https://www.npmjs.com/package/@ignission/slack-task-mcp"><img src="https://img.shields.io/npm/v/@ignission/slack-task-mcp" alt="npm version"></a>
11
+ <a href="https://opensource.org/licenses/ISC"><img src="https://img.shields.io/badge/License-ISC-blue.svg" alt="License: ISC"></a>
12
+ </p>
13
+
14
+ <p align="center">
15
+ ADHDの特性を持つユーザー向けに設計されたMCPサーバー
16
+ </p>
17
+
18
+ <p align="center">
19
+ <a href="README.md">English</a>
20
+ </p>
21
+
22
+ ---
23
+
24
+ ## なぜ作ったか
25
+
26
+ Slackでメンションがたまると、どこから手を付けていいか迷う。難しい依頼は固まってしまう。返信を書くのに時間がかかる。心当たりはありませんか?
27
+
28
+ | 課題 | 解決策 |
29
+ |:-----|:-------|
30
+ | 「何を求められてる?」が曖昧 | 目的を明確化 |
31
+ | 「何を聞けばいい?」がわからない | 不明点の洗い出し + 確認メッセージ案 |
32
+ | 「どう返せばいい?」で時間がかかる | 返信メッセージの添削・構造化 |
33
+ | 「次何する?」で迷う | ネクストアクション提示 |
34
+
35
+ ---
36
+
37
+ ## アーキテクチャ
38
+
39
+ ```
40
+ ┌─────────────────────────────────────────────────────────────┐
41
+ │ Claude Desktop / Claude Code │
42
+ │ └── MCP Client │
43
+ └──────────────────────────┬──────────────────────────────────┘
44
+ │ MCP Protocol
45
+ ┌──────────────────────────▼──────────────────────────────────┐
46
+ │ Slack Task MCP Server │
47
+ │ ┌────────────────────────────────────────────────────────┐ │
48
+ │ │ MCP Tools │ │
49
+ │ │ • get_slack_thread • save_task • analyze_request │ │
50
+ │ │ • search_slack • list_tasks • draft_reply │ │
51
+ │ │ • complete_step │ │
52
+ │ └────────────────────────────────────────────────────────┘ │
53
+ │ ┌────────────────────────────────────────────────────────┐ │
54
+ │ │ Agent SDK Layer (AI分析) │ │
55
+ │ │ • analyze.js → 依頼分析 │ │
56
+ │ │ • draft-reply.js → 返信添削 │ │
57
+ │ └────────────────────────────────────────────────────────┘ │
58
+ └──────────────────────────┬──────────────────────────────────┘
59
+
60
+ ┌────────────────┴────────────────┐
61
+ ▼ ▼
62
+ ┌─────────────┐ ┌─────────────┐
63
+ │ Slack API │ │ Claude API │
64
+ │ (User Token)│ │ (Agent SDK) │
65
+ └─────────────┘ └─────────────┘
66
+ ```
67
+
68
+ ---
69
+
70
+ ## 機能
71
+
72
+ | ツール | 説明 | Agent SDK |
73
+ |--------|------|:---------:|
74
+ | `get_slack_thread` | SlackスレッドURLからメッセージを取得 | - |
75
+ | `analyze_request` | 依頼を分析し、目的・不明点を特定 | ✅ |
76
+ | `draft_reply` | 返信を添削し、論理的に構造化 | ✅ |
77
+ | `save_task` | タスクを保存(5分以内のステップに分解) | - |
78
+ | `list_tasks` | アクティブなタスク一覧を表示 | - |
79
+ | `search_tasks` | キーワード・日付でタスクを検索 | - |
80
+ | `complete_step` | ステップを完了にする | - |
81
+ | `search_slack` | Slackメッセージをキーワード検索 | - |
82
+
83
+ ---
84
+
85
+ ## クイックスタート
86
+
87
+ ### 1. Slack認証
88
+
89
+ ```bash
90
+ npx -y @ignission/slack-task-mcp auth login
91
+ ```
92
+
93
+ ブラウザが開きSlack認証が行われます。複数ワークスペースも対応可能です。
94
+
95
+ ### 2. Claude Code / Claude Desktop の設定
96
+
97
+ **Claude Code(ターミナル)**:
98
+
99
+ ```bash
100
+ claude mcp add slack-task -- npx -y @ignission/slack-task-mcp
101
+ ```
102
+
103
+ **Claude Desktop** (`~/.claude/claude_desktop_config.json`):
104
+
105
+ ```json
106
+ {
107
+ "mcpServers": {
108
+ "slack-task": {
109
+ "command": "npx",
110
+ "args": ["-y", "@ignission/slack-task-mcp"]
111
+ }
112
+ }
113
+ }
114
+ ```
115
+
116
+ ### 3. 再起動
117
+
118
+ Claude Code / Claude Desktop を再起動して設定を反映します。
119
+
120
+ ---
121
+
122
+ ## 使い方
123
+
124
+ ### 基本ワークフロー
125
+
126
+ ```
127
+ 1. get_slack_thread → スレッド取得(文脈DB化)
128
+ 2. analyze_request → 目的・不明点・確認メッセージ案を生成
129
+ 3. draft_reply → 返信の下書きを添削・構造化
130
+ 4. save_task → タスクとして保存
131
+ 5. complete_step → 進捗管理
132
+ ```
133
+
134
+ ### 使用例
135
+
136
+ #### スレッドを取得して分析
137
+
138
+ ```
139
+ このSlackスレッドを分析して:
140
+ https://xxx.slack.com/archives/C12345678/p1234567890123456
141
+ ```
142
+
143
+ #### タスクを保存
144
+
145
+ ```
146
+ これを5分以内のステップに分解して保存して
147
+ ```
148
+
149
+ #### 返信を添削
150
+
151
+ ```
152
+ この返信を添削して: 「レポートできました。添付します。確認お願いします。」
153
+ ```
154
+
155
+ #### タスク一覧を表示
156
+
157
+ ```
158
+ タスク一覧を見せて
159
+ ```
160
+
161
+ #### ステップを完了
162
+
163
+ ```
164
+ ステップ1を完了にして
165
+ ```
166
+
167
+ ---
168
+
169
+ ## ADHD向け設計
170
+
171
+ - **5分以内のステップに分解** — 小さな達成感を積み上げる
172
+ - **最初のステップは最も簡単に** — 着手のハードルを下げる
173
+ - **明確な区切り** — 途中で止めても再開しやすい
174
+ - **Slackを文脈DBとして活用** — 「あの話どうなったっけ」をClaudeに聞ける
175
+
176
+ ---
177
+
178
+ ## 技術スタック
179
+
180
+ | 技術 | 用途 |
181
+ |------|------|
182
+ | **Node.js** (ES Modules) | ランタイム |
183
+ | **MCP Protocol** | Claude Code/Desktop との通信 |
184
+ | **Claude Agent SDK** | AI による依頼分析・返信添削 |
185
+ | **Slack Web API** | Slack連携(User Token) |
186
+ | **Zod** | スキーマバリデーション |
187
+ | **Cloudflare Workers** | OAuth認証(トークン交換) |
188
+
189
+ ---
190
+
191
+ ## プロジェクト構成
192
+
193
+ ```
194
+ slack-task-mcp/
195
+ ├── src/
196
+ │ ├── index.js # MCPサーバーエントリーポイント
197
+ │ ├── cli.js # CLIコマンド
198
+ │ ├── auth.js # OAuth認証(ハイブリッド)
199
+ │ ├── credentials.js # 認証情報管理
200
+ │ ├── paths.js # パス管理(XDG準拠)
201
+ │ └── agents/ # Agent SDKエージェント
202
+ │ ├── index.js # 共通設定
203
+ │ ├── analyze.js # 依頼分析
204
+ │ └── draft-reply.js # 返信添削
205
+ ├── worker/ # Cloudflare Workers(トークン交換)
206
+ │ ├── index.js
207
+ │ └── wrangler.toml
208
+ └── package.json
209
+ ```
210
+
211
+ ---
212
+
213
+ ## データ保存場所
214
+
215
+ XDG Base Directory Specification に準拠:
216
+
217
+ ```
218
+ ~/.local/share/slack-task-mcp/
219
+ ├── credentials/
220
+ │ ├── T01234567.json # ワークスペースごとの認証情報
221
+ │ └── T98765432.json
222
+ └── tasks.json # タスクデータ
223
+ ```
224
+
225
+ `XDG_DATA_HOME` が設定されている場合はそちらを使用します。
226
+
227
+ ---
228
+
229
+ ## トラブルシューティング
230
+
231
+ ### Slack APIエラー
232
+
233
+ ```bash
234
+ npx -y @ignission/slack-task-mcp auth status # 認証状態を確認
235
+ npx -y @ignission/slack-task-mcp auth login # 新規ワークスペースを認証
236
+ npx -y @ignission/slack-task-mcp auth logout # 全ワークスペースからログアウト
237
+ npx -y @ignission/slack-task-mcp auth logout -w mycompany # 特定ワークスペースからログアウト
238
+ ```
239
+
240
+ ### MCPサーバーが認識されない
241
+
242
+ - 設定ファイルのパスが正しいか確認
243
+ - Claude Code / Claude Desktop を再起動
244
+
245
+ ### プライベートチャンネルが読めない
246
+
247
+ - 自分が参加しているチャンネルのみ読み取り可能です
248
+
249
+ ---
250
+
251
+ ## コントリビューション
252
+
253
+ Issue や PR を歓迎します!
254
+
255
+ ---
256
+
257
+ ## ライセンス
258
+
259
+ [ISC](LICENSE)
package/README.md CHANGED
@@ -15,6 +15,10 @@
15
15
  An MCP server designed for users with ADHD traits
16
16
  </p>
17
17
 
18
+ <p align="center">
19
+ <a href="README.ja.md">日本語</a>
20
+ </p>
21
+
18
22
  ---
19
23
 
20
24
  ## Why
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ignission/slack-task-mcp",
3
- "version": "0.2.5",
3
+ "version": "0.2.7",
4
4
  "description": "MCP Server for Slack task management with Claude Code",
5
5
  "type": "module",
6
6
  "main": "src/index.js",
@@ -30,14 +30,6 @@
30
30
  ],
31
31
  "author": "Ignission G.K.",
32
32
  "license": "MIT",
33
- "packageManager": "pnpm@10.26.0",
34
- "scripts": {
35
- "lint": "biome lint .",
36
- "format": "biome format --write .",
37
- "check": "biome check --write .",
38
- "test": "vitest",
39
- "test:run": "vitest run"
40
- },
41
33
  "dependencies": {
42
34
  "@anthropic-ai/claude-agent-sdk": "^0.1.76",
43
35
  "@modelcontextprotocol/sdk": "^1.25.1",
@@ -48,5 +40,12 @@
48
40
  "devDependencies": {
49
41
  "@biomejs/biome": "^2.3.11",
50
42
  "vitest": "^4.0.16"
43
+ },
44
+ "scripts": {
45
+ "lint": "biome lint .",
46
+ "format": "biome format --write .",
47
+ "check": "biome check --write .",
48
+ "test": "vitest",
49
+ "test:run": "vitest run"
51
50
  }
52
- }
51
+ }
package/src/index.js CHANGED
@@ -697,7 +697,7 @@ function formatAnalysisResult(analysis) {
697
697
 
698
698
  server.tool(
699
699
  "analyze_request",
700
- "Slackスレッドの依頼をAgent SDKで分析し、目的・不明点・確認メッセージ案・ネクストアクションを構造化して返す",
700
+ "Slackスレッドの依頼をAgent SDKで分析し、目的・不明点・確認メッセージ案・ネクストアクションを構造化して返す。結果を元にユーザーに選択肢を提示する場合は、テキストではなくAskUserQuestionツールを使って選択UIを表示すること",
701
701
  {
702
702
  thread_content: z.string().describe("分析対象のSlackスレッド内容(get_slack_threadの出力)"),
703
703
  thread_url: z.string().optional().describe("SlackスレッドのURL(参照用)"),
@@ -829,7 +829,7 @@ function formatEditedReply(draftText, editedReply) {
829
829
 
830
830
  server.tool(
831
831
  "draft_reply",
832
- "返信の下書きをAgent SDKで添削し、結論→根拠→アクションの構造に整理して返す",
832
+ "返信の下書きをAgent SDKで添削し、結論→根拠→アクションの構造に整理して返す。ユーザーに確認や選択を求める場合は、テキストではなくAskUserQuestionツールを使って選択UIを表示すること",
833
833
  {
834
834
  draft_text: z.string().max(2000).describe("添削対象の下書きテキスト"),
835
835
  task_type: TaskTypeSchema.optional().describe("タスクタイプ(省略時は自動判定)"),