@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 +259 -0
- package/README.md +4 -0
- package/package.json +9 -10
- package/src/index.js +2 -2
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
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ignission/slack-task-mcp",
|
|
3
|
-
"version": "0.2.
|
|
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("タスクタイプ(省略時は自動判定)"),
|