@jtalk22/slack-mcp 1.2.1 → 1.2.3
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.md +75 -6
- package/docs/COMMUNICATION-STYLE.md +65 -0
- package/docs/DEPLOYMENT-MODES.md +48 -0
- package/docs/HN-LAUNCH.md +61 -0
- package/docs/INDEX.md +28 -0
- package/docs/SETUP.md +29 -5
- package/docs/SUPPORT-BOUNDARIES.md +49 -0
- package/docs/TROUBLESHOOTING.md +32 -2
- package/docs/USE_CASE_RECIPES.md +69 -0
- package/docs/WEB-API.md +2 -0
- package/lib/handlers.js +1 -1
- package/lib/slack-client.js +1 -1
- package/package.json +4 -2
- package/public/demo-claude.html +56 -9
- package/public/demo-video.html +56 -1
- package/public/demo.html +49 -6
- package/scripts/check-owner-attribution.sh +80 -0
- package/scripts/setup-git-hooks.sh +15 -0
- package/scripts/setup-wizard.js +148 -42
- package/scripts/verify-install-flow.js +87 -0
- package/src/cli.js +1 -0
- package/src/server-http.js +1 -1
- package/src/server.js +2 -2
- package/src/web-server.js +3 -3
package/README.md
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
<p align="center">
|
|
8
8
|
<em>Give Claude the same Slack access you have.<br>
|
|
9
|
-
DMs, threads, history—
|
|
9
|
+
DMs, threads, history—using your existing Slack session.</em>
|
|
10
10
|
</p>
|
|
11
11
|
|
|
12
12
|
<p align="center">
|
|
@@ -37,9 +37,11 @@
|
|
|
37
37
|
|
|
38
38
|
---
|
|
39
39
|
|
|
40
|
+
> Free local-first path: install with `npx -y @jtalk22/slack-mcp`, run on your own machine, and keep full control of session tokens.
|
|
41
|
+
|
|
40
42
|
### Why This Exists
|
|
41
43
|
|
|
42
|
-
I built this because I was working with someone to help me manage a complex workload, and we kept hitting walls. They needed context from my messages—"what did X say about Y?"—
|
|
44
|
+
I built this because I was working with someone to help me manage a complex workload, and we kept hitting walls. They needed context from my messages—"what did X say about Y?"—and standard app/OAuth flows were too constrained for that workflow.
|
|
43
45
|
|
|
44
46
|
Screenshotting messages is not a workflow.
|
|
45
47
|
|
|
@@ -100,6 +102,25 @@ Instead of authenticating as a bot, this server leverages your existing Chrome s
|
|
|
100
102
|
|
|
101
103
|
**Runtime:** Node.js 20+
|
|
102
104
|
|
|
105
|
+
### 30-Second Proof
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
npx -y @jtalk22/slack-mcp --version
|
|
109
|
+
npx -y @jtalk22/slack-mcp --doctor
|
|
110
|
+
npx -y @jtalk22/slack-mcp --setup
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Expected:
|
|
114
|
+
- `--version` prints `slack-mcp-server v1.2.x`
|
|
115
|
+
- `--doctor` returns one clear next action with exit code:
|
|
116
|
+
- `0` ready
|
|
117
|
+
- `1` missing credentials
|
|
118
|
+
- `2` invalid/expired credentials
|
|
119
|
+
- `3` connectivity/runtime issue
|
|
120
|
+
- `--setup` launches the interactive wizard
|
|
121
|
+
|
|
122
|
+
Proof script for launch threads: [docs/HN-LAUNCH.md](docs/HN-LAUNCH.md)
|
|
123
|
+
|
|
103
124
|
### Option A: npm (Recommended)
|
|
104
125
|
|
|
105
126
|
```bash
|
|
@@ -120,6 +141,20 @@ npm install
|
|
|
120
141
|
docker pull ghcr.io/jtalk22/slack-mcp-server:latest
|
|
121
142
|
```
|
|
122
143
|
|
|
144
|
+
### Install Sanity (Clean Temp Directory)
|
|
145
|
+
|
|
146
|
+
```bash
|
|
147
|
+
tmpdir="$(mktemp -d)"
|
|
148
|
+
cd "$tmpdir"
|
|
149
|
+
npx -y @jtalk22/slack-mcp --version
|
|
150
|
+
npx -y @jtalk22/slack-mcp --help
|
|
151
|
+
npx -y @jtalk22/slack-mcp --status
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
Expected:
|
|
155
|
+
- `--version` and `--help` exit `0`
|
|
156
|
+
- `--status` exits non-zero until credentials are configured
|
|
157
|
+
|
|
123
158
|
---
|
|
124
159
|
|
|
125
160
|
## Configuration
|
|
@@ -131,7 +166,7 @@ docker pull ghcr.io/jtalk22/slack-mcp-server:latest
|
|
|
131
166
|
The interactive setup wizard handles token extraction and validation automatically:
|
|
132
167
|
|
|
133
168
|
```bash
|
|
134
|
-
npx @jtalk22/slack-mcp --setup
|
|
169
|
+
npx -y @jtalk22/slack-mcp --setup
|
|
135
170
|
```
|
|
136
171
|
|
|
137
172
|
- **macOS**: Auto-extracts tokens from Chrome (have Slack open in a tab)
|
|
@@ -142,7 +177,7 @@ npx @jtalk22/slack-mcp --setup
|
|
|
142
177
|
#### Check Token Status
|
|
143
178
|
|
|
144
179
|
```bash
|
|
145
|
-
npx @jtalk22/slack-mcp --status
|
|
180
|
+
npx -y @jtalk22/slack-mcp --status
|
|
146
181
|
```
|
|
147
182
|
|
|
148
183
|
#### Alternative: Manual Token Scripts
|
|
@@ -283,14 +318,14 @@ If you're using claude.ai in a browser (which doesn't support MCP), you can use
|
|
|
283
318
|
|
|
284
319
|
```bash
|
|
285
320
|
npm run web
|
|
286
|
-
# Or: npx @jtalk22/slack-mcp web
|
|
321
|
+
# Or: npx -y @jtalk22/slack-mcp web
|
|
287
322
|
```
|
|
288
323
|
|
|
289
324
|
**Magic Link:** The console prints a one-click URL with the API key embedded:
|
|
290
325
|
|
|
291
326
|
```
|
|
292
327
|
════════════════════════════════════════════════════════════
|
|
293
|
-
Slack Web API Server v1.2.
|
|
328
|
+
Slack Web API Server v1.2.3
|
|
294
329
|
════════════════════════════════════════════════════════════
|
|
295
330
|
|
|
296
331
|
Dashboard: http://localhost:3000/?key=smcp_xxxxxxxxxxxx
|
|
@@ -309,6 +344,37 @@ Just click the link - no copy-paste needed. The key is saved to your browser and
|
|
|
309
344
|
|
|
310
345
|
---
|
|
311
346
|
|
|
347
|
+
## Operations Guides
|
|
348
|
+
|
|
349
|
+
- [Docs Index](docs/INDEX.md) - One-click index for setup, API, troubleshooting, deployment, and support docs
|
|
350
|
+
- [Deployment Modes](docs/DEPLOYMENT-MODES.md) - Choose the right operating model (`stdio`, `web`, hosted HTTP, Smithery/Worker)
|
|
351
|
+
- [Use Case Recipes](docs/USE_CASE_RECIPES.md) - 12 copy/paste prompts mapped to current tool contracts
|
|
352
|
+
- [Support Boundaries](docs/SUPPORT-BOUNDARIES.md) - Scope, response targets, and solo-maintainer capacity limits
|
|
353
|
+
|
|
354
|
+
If you're evaluating team rollout, start with [Deployment Modes](docs/DEPLOYMENT-MODES.md) before exposing remote endpoints.
|
|
355
|
+
|
|
356
|
+
---
|
|
357
|
+
|
|
358
|
+
## Getting Help Fast
|
|
359
|
+
|
|
360
|
+
1. Run:
|
|
361
|
+
```bash
|
|
362
|
+
npx -y @jtalk22/slack-mcp --version
|
|
363
|
+
npx -y @jtalk22/slack-mcp --doctor
|
|
364
|
+
```
|
|
365
|
+
2. If setup fails, run:
|
|
366
|
+
```bash
|
|
367
|
+
npx -y @jtalk22/slack-mcp --setup
|
|
368
|
+
```
|
|
369
|
+
3. Open an issue with full environment details:
|
|
370
|
+
- [Bug Report Template](.github/ISSUE_TEMPLATE/bug_report.md)
|
|
371
|
+
- [Deployment Intake Template](.github/ISSUE_TEMPLATE/deployment-intake.md)
|
|
372
|
+
4. Check scope and response targets:
|
|
373
|
+
- [Support Boundaries](docs/SUPPORT-BOUNDARIES.md)
|
|
374
|
+
- [Troubleshooting Guide](docs/TROUBLESHOOTING.md)
|
|
375
|
+
|
|
376
|
+
---
|
|
377
|
+
|
|
312
378
|
## Troubleshooting
|
|
313
379
|
|
|
314
380
|
### Tokens Expired
|
|
@@ -317,6 +383,9 @@ Just click the link - no copy-paste needed. The key is saved to your browser and
|
|
|
317
383
|
slack_refresh_tokens # In Claude
|
|
318
384
|
# Or: npm run tokens:auto
|
|
319
385
|
|
|
386
|
+
# Package setup wizard
|
|
387
|
+
npx -y @jtalk22/slack-mcp --setup
|
|
388
|
+
|
|
320
389
|
# Linux/Windows: Manual update
|
|
321
390
|
# Edit ~/.slack-mcp-tokens.json with fresh values
|
|
322
391
|
```
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# Communication Style Guide
|
|
2
|
+
|
|
3
|
+
Use this guide for release notes, issue replies, and changelog entries.
|
|
4
|
+
|
|
5
|
+
## Rules
|
|
6
|
+
|
|
7
|
+
1. Keep text technical, concise, and factual.
|
|
8
|
+
2. Do not include model/tool credit lines.
|
|
9
|
+
3. Do not include co-author trailers from tooling.
|
|
10
|
+
4. State exact versions and commands when relevant.
|
|
11
|
+
5. Avoid speculative claims.
|
|
12
|
+
|
|
13
|
+
## Issue Reply Template
|
|
14
|
+
|
|
15
|
+
```md
|
|
16
|
+
Thanks for reporting this.
|
|
17
|
+
|
|
18
|
+
Status: fixed in `<version>`.
|
|
19
|
+
|
|
20
|
+
Included:
|
|
21
|
+
- `<fix 1>`
|
|
22
|
+
- `<fix 2>`
|
|
23
|
+
|
|
24
|
+
Verify:
|
|
25
|
+
- `npx -y @jtalk22/slack-mcp --version`
|
|
26
|
+
- `npx -y @jtalk22/slack-mcp --status`
|
|
27
|
+
|
|
28
|
+
Install/update:
|
|
29
|
+
- `npx -y @jtalk22/slack-mcp`
|
|
30
|
+
- `npm i -g @jtalk22/slack-mcp@<version>`
|
|
31
|
+
|
|
32
|
+
If it still reproduces, reply with OS, Node version, runtime mode (`stdio|web|http|worker`), and exact error output.
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Release Notes Template
|
|
36
|
+
|
|
37
|
+
````md
|
|
38
|
+
## <version> — <short title>
|
|
39
|
+
|
|
40
|
+
### Improved
|
|
41
|
+
- <item>
|
|
42
|
+
- <item>
|
|
43
|
+
|
|
44
|
+
### Compatibility
|
|
45
|
+
- No API/tool schema changes.
|
|
46
|
+
|
|
47
|
+
### Verify
|
|
48
|
+
```bash
|
|
49
|
+
npx -y @jtalk22/slack-mcp --version
|
|
50
|
+
npx -y @jtalk22/slack-mcp --setup
|
|
51
|
+
npx -y @jtalk22/slack-mcp --status
|
|
52
|
+
```
|
|
53
|
+
````
|
|
54
|
+
|
|
55
|
+
## Changelog Entry Template
|
|
56
|
+
|
|
57
|
+
```md
|
|
58
|
+
## [<version>] - YYYY-MM-DD
|
|
59
|
+
|
|
60
|
+
### Fixed
|
|
61
|
+
- <item>
|
|
62
|
+
|
|
63
|
+
### Changed
|
|
64
|
+
- <item>
|
|
65
|
+
```
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Deployment Modes
|
|
2
|
+
|
|
3
|
+
Use this guide to choose the right operating mode before rollout.
|
|
4
|
+
|
|
5
|
+
## Quick Chooser
|
|
6
|
+
|
|
7
|
+
- Choose `stdio` for personal use in Claude Desktop/Claude Code.
|
|
8
|
+
- Choose local `web` for browser workflows and manual Slack browsing.
|
|
9
|
+
- Choose hosted HTTP only when you need remote execution and can handle token operations.
|
|
10
|
+
- Choose Smithery/Worker only when your consumers require registry-hosted MCP transport.
|
|
11
|
+
|
|
12
|
+
## Mode Matrix
|
|
13
|
+
|
|
14
|
+
| Mode | Start Command | Best For | Auth Material | Exposure | Notes |
|
|
15
|
+
|------|---------------|----------|---------------|----------|-------|
|
|
16
|
+
| Local MCP (`stdio`) | `npx -y @jtalk22/slack-mcp` | Individual daily usage in Claude | `SLACK_TOKEN` + `SLACK_COOKIE` via token file/env | Local process | Lowest ops burden |
|
|
17
|
+
| Local Web UI (`web`) | `npx -y @jtalk22/slack-mcp web` | Browser-first usage, manual search/send | Same as above + generated API key | `localhost` by default | Useful when MCP is not available |
|
|
18
|
+
| Hosted MCP (`http`) | `node src/server-http.js` | Controlled hosted integration | Env-injected Slack token/cookie | Remote endpoint | Requires runtime hardening and monitoring |
|
|
19
|
+
| Smithery/Worker | `wrangler deploy` + Smithery publish flow | Registry distribution for hosted consumers | Query/env token handoff | Remote endpoint | Keep worker version parity with npm release |
|
|
20
|
+
|
|
21
|
+
## Team Deployment Guidance
|
|
22
|
+
|
|
23
|
+
If you are deploying for more than one operator:
|
|
24
|
+
|
|
25
|
+
1. Start with one maintainer on local `stdio`.
|
|
26
|
+
2. Document token lifecycle and rotation ownership.
|
|
27
|
+
3. Define support window and incident contact before enabling hosted mode.
|
|
28
|
+
4. Validate `/health` and MCP initialize responses on every release.
|
|
29
|
+
|
|
30
|
+
## Release Checklist by Mode
|
|
31
|
+
|
|
32
|
+
### Local `stdio`
|
|
33
|
+
|
|
34
|
+
1. `npx -y @jtalk22/slack-mcp --status`
|
|
35
|
+
2. `npx -y @jtalk22/slack-mcp --help`
|
|
36
|
+
3. Confirm tool list in Claude client.
|
|
37
|
+
|
|
38
|
+
### Local `web`
|
|
39
|
+
|
|
40
|
+
1. `npx -y @jtalk22/slack-mcp web`
|
|
41
|
+
2. Verify API key generation at `~/.slack-mcp-api-key`.
|
|
42
|
+
3. Verify `/health`, `/conversations`, and `/search` endpoints.
|
|
43
|
+
|
|
44
|
+
### Hosted (`http` or Worker)
|
|
45
|
+
|
|
46
|
+
1. Verify `version` parity across `package.json`, server metadata, and health responses.
|
|
47
|
+
2. Confirm `slack_get_thread`, `slack_search_messages`, and `slack_users_info` behavior.
|
|
48
|
+
3. Confirm token handling mode (ephemeral vs env persistence) is documented.
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# HN Launch Kit
|
|
2
|
+
|
|
3
|
+
Use this file as copy/paste launch material with no extra edits.
|
|
4
|
+
|
|
5
|
+
## Launch Post Draft
|
|
6
|
+
|
|
7
|
+
Title idea: `Show HN: Slack MCP Server (local-first, session-based Slack access for Claude)`
|
|
8
|
+
|
|
9
|
+
Post body:
|
|
10
|
+
|
|
11
|
+
```md
|
|
12
|
+
Built a local-first Slack MCP server so Claude can use the same Slack access already available in your browser session.
|
|
13
|
+
|
|
14
|
+
What it does:
|
|
15
|
+
- DMs/channels/thread reads
|
|
16
|
+
- workspace search
|
|
17
|
+
- message send + user lookups
|
|
18
|
+
- local web mode when MCP is unavailable
|
|
19
|
+
|
|
20
|
+
Quick proof:
|
|
21
|
+
- `npx -y @jtalk22/slack-mcp --version`
|
|
22
|
+
- `npx -y @jtalk22/slack-mcp --status`
|
|
23
|
+
- `npx -y @jtalk22/slack-mcp --setup`
|
|
24
|
+
|
|
25
|
+
Repo: https://github.com/jtalk22/slack-mcp-server
|
|
26
|
+
npm: https://www.npmjs.com/package/@jtalk22/slack-mcp
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## First Comment Draft
|
|
30
|
+
|
|
31
|
+
```md
|
|
32
|
+
Notes up front:
|
|
33
|
+
- Local-first usage is fully supported.
|
|
34
|
+
- Tokens are your Slack session credentials and are stored locally by default.
|
|
35
|
+
- macOS supports automatic Chrome extraction; Linux/Windows use guided manual setup.
|
|
36
|
+
- Current docs include deployment modes, support boundaries, and troubleshooting.
|
|
37
|
+
|
|
38
|
+
If install fails, include OS, Node version, runtime mode (`stdio|web|http|worker`), and exact error output.
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Rebuttal Mini-FAQ
|
|
42
|
+
|
|
43
|
+
### Is this bypassing Slack app scopes?
|
|
44
|
+
It does not use Slack app OAuth scopes. It uses your existing signed-in session permissions.
|
|
45
|
+
|
|
46
|
+
### What about token expiry?
|
|
47
|
+
Session tokens expire. `--setup` refreshes credentials, and macOS supports automatic extraction from Chrome.
|
|
48
|
+
|
|
49
|
+
### Is this intended as a stealth hosted proxy?
|
|
50
|
+
No. The free path is local/self-hosted first. Deployment docs describe tradeoffs and support boundaries before team rollout.
|
|
51
|
+
|
|
52
|
+
### Is this safe for production teams?
|
|
53
|
+
Treat as operator-managed infrastructure. Validate with your own risk/compliance controls before broader rollout.
|
|
54
|
+
|
|
55
|
+
## Install Proof Block
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
npx -y @jtalk22/slack-mcp --version
|
|
59
|
+
npx -y @jtalk22/slack-mcp --status
|
|
60
|
+
npx -y @jtalk22/slack-mcp --setup
|
|
61
|
+
```
|
package/docs/INDEX.md
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Documentation Index
|
|
2
|
+
|
|
3
|
+
Start here for setup, validation, operations, and support.
|
|
4
|
+
|
|
5
|
+
## Core
|
|
6
|
+
|
|
7
|
+
- [Setup Guide](SETUP.md)
|
|
8
|
+
- [API Reference](API.md)
|
|
9
|
+
- [Web API Reference](WEB-API.md)
|
|
10
|
+
- [Troubleshooting](TROUBLESHOOTING.md)
|
|
11
|
+
|
|
12
|
+
## Operations
|
|
13
|
+
|
|
14
|
+
- [Deployment Modes](DEPLOYMENT-MODES.md)
|
|
15
|
+
- [Use Case Recipes](USE_CASE_RECIPES.md)
|
|
16
|
+
- [Support Boundaries](SUPPORT-BOUNDARIES.md)
|
|
17
|
+
|
|
18
|
+
## Launch and Communication
|
|
19
|
+
|
|
20
|
+
- [HN Launch Kit](HN-LAUNCH.md)
|
|
21
|
+
- [Communication Style](COMMUNICATION-STYLE.md)
|
|
22
|
+
- [Changelog](../CHANGELOG.md)
|
|
23
|
+
|
|
24
|
+
## Issue Intake
|
|
25
|
+
|
|
26
|
+
- [Bug Report Template](../.github/ISSUE_TEMPLATE/bug_report.md)
|
|
27
|
+
- [Feature Request Template](../.github/ISSUE_TEMPLATE/feature_request.md)
|
|
28
|
+
- [Deployment Intake Template](../.github/ISSUE_TEMPLATE/deployment-intake.md)
|
package/docs/SETUP.md
CHANGED
|
@@ -23,18 +23,42 @@ cd ~/slack-mcp-server
|
|
|
23
23
|
npm install
|
|
24
24
|
```
|
|
25
25
|
|
|
26
|
+
### 2.5 Verify Install Path in a Clean Directory
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
tmpdir="$(mktemp -d)"
|
|
30
|
+
cd "$tmpdir"
|
|
31
|
+
npx -y @jtalk22/slack-mcp --version
|
|
32
|
+
npx -y @jtalk22/slack-mcp --help
|
|
33
|
+
npx -y @jtalk22/slack-mcp --doctor
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Expected:
|
|
37
|
+
- `--version` and `--help` succeed.
|
|
38
|
+
- `--doctor` exits with one clear status:
|
|
39
|
+
- `0` ready
|
|
40
|
+
- `1` missing credentials
|
|
41
|
+
- `2` invalid/expired credentials
|
|
42
|
+
- `3` connectivity/runtime issue
|
|
43
|
+
|
|
26
44
|
### 3. Get Slack Tokens
|
|
27
45
|
|
|
28
|
-
**Option A:
|
|
46
|
+
**Option A: Setup Wizard (recommended)**
|
|
29
47
|
|
|
30
48
|
1. Open Chrome
|
|
31
49
|
2. Navigate to https://app.slack.com and log in
|
|
32
50
|
3. Run:
|
|
33
51
|
```bash
|
|
34
|
-
|
|
52
|
+
npx -y @jtalk22/slack-mcp --setup
|
|
35
53
|
```
|
|
36
54
|
|
|
37
|
-
**Option B:
|
|
55
|
+
**Option B: Automatic Extraction (repo clone workflow)**
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
npm run tokens:auto
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
**Option C: Manual Extraction**
|
|
38
62
|
|
|
39
63
|
1. Open https://app.slack.com in Chrome
|
|
40
64
|
2. Press F12 to open DevTools
|
|
@@ -114,11 +138,11 @@ You should see your username and team name.
|
|
|
114
138
|
|
|
115
139
|
### "No credentials found"
|
|
116
140
|
|
|
117
|
-
Run `
|
|
141
|
+
Run `npx -y @jtalk22/slack-mcp --doctor` to confirm diagnostic code, then `npx -y @jtalk22/slack-mcp --setup` with Slack open in Chrome.
|
|
118
142
|
|
|
119
143
|
### "invalid_auth" Error
|
|
120
144
|
|
|
121
|
-
Tokens have expired.
|
|
145
|
+
Tokens have expired. Run `npx -y @jtalk22/slack-mcp --doctor` and follow the suggested next action.
|
|
122
146
|
|
|
123
147
|
### MCP Server Not Loading
|
|
124
148
|
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Support Boundaries
|
|
2
|
+
|
|
3
|
+
This document sets expectations for issue triage, support scope, and rollout safety.
|
|
4
|
+
|
|
5
|
+
## In Scope
|
|
6
|
+
|
|
7
|
+
- Reproducible bugs in published release behavior.
|
|
8
|
+
- Install and setup blockers for supported Node/runtime paths.
|
|
9
|
+
- Regressions in existing tools (`slack_get_thread`, `slack_search_messages`, etc.).
|
|
10
|
+
- Documentation corrections with clear technical evidence.
|
|
11
|
+
|
|
12
|
+
## Out of Scope
|
|
13
|
+
|
|
14
|
+
- Custom Slack policy/legal interpretation for a specific organization.
|
|
15
|
+
- Workspace-specific data migrations or bespoke integrations.
|
|
16
|
+
- Real-time operational support for third-party hosting providers.
|
|
17
|
+
- Urgent production incident ownership for self-hosted external deployments.
|
|
18
|
+
|
|
19
|
+
## Intake Requirements
|
|
20
|
+
|
|
21
|
+
Include the following in every issue:
|
|
22
|
+
|
|
23
|
+
1. Version (`npm view @jtalk22/slack-mcp version` output).
|
|
24
|
+
2. Runtime mode (`stdio`, `web`, `http`, or Worker/Smithery).
|
|
25
|
+
3. OS and Node version.
|
|
26
|
+
4. Minimal reproduction steps and exact error text.
|
|
27
|
+
5. Whether this blocks individual use or team rollout.
|
|
28
|
+
|
|
29
|
+
## Response Windows (Best Effort)
|
|
30
|
+
|
|
31
|
+
- Installation/blocker bugs: initial response target within 2 business days.
|
|
32
|
+
- Non-blocking bugs: initial response target within 5 business days.
|
|
33
|
+
- Feature requests: triaged in backlog batches.
|
|
34
|
+
|
|
35
|
+
## Solo Maintainer Capacity Guardrail
|
|
36
|
+
|
|
37
|
+
- Weekly support budget target: <= 2 hours/week.
|
|
38
|
+
- If inbound support exceeds this cap, new feature work may be paused.
|
|
39
|
+
- High-context requests may be deferred until reproducible artifacts are provided.
|
|
40
|
+
|
|
41
|
+
## Security and Data Handling
|
|
42
|
+
|
|
43
|
+
- Do not post raw tokens/cookies in issues.
|
|
44
|
+
- Use redacted logs.
|
|
45
|
+
- If credentials are exposed, rotate immediately and update issue with redaction.
|
|
46
|
+
|
|
47
|
+
## Deployment Escalation Rule
|
|
48
|
+
|
|
49
|
+
For team/hosted usage, open a deployment intake issue before broad rollout.
|
package/docs/TROUBLESHOOTING.md
CHANGED
|
@@ -4,6 +4,30 @@ Common issues and their solutions.
|
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
+
## Install Flow Sanity Check
|
|
8
|
+
|
|
9
|
+
If first-run setup is failing, validate command resolution in a clean directory:
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
tmpdir="$(mktemp -d)"
|
|
13
|
+
cd "$tmpdir"
|
|
14
|
+
npx -y @jtalk22/slack-mcp --version
|
|
15
|
+
npx -y @jtalk22/slack-mcp --help
|
|
16
|
+
npx -y @jtalk22/slack-mcp --doctor
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Expected:
|
|
20
|
+
- `--version` and `--help` exit `0`
|
|
21
|
+
- `--doctor` exits with one of:
|
|
22
|
+
- `0` ready
|
|
23
|
+
- `1` missing credentials
|
|
24
|
+
- `2` invalid/expired credentials
|
|
25
|
+
- `3` connectivity/runtime issue
|
|
26
|
+
|
|
27
|
+
If `--version` fails here, the issue is install/runtime path, not Slack credentials.
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
7
31
|
## DMs Not Showing Up
|
|
8
32
|
|
|
9
33
|
**Symptom:** `slack_list_conversations` returns channels but no DMs.
|
|
@@ -54,10 +78,16 @@ slack_list_conversations limit=50
|
|
|
54
78
|
# Option 1: In Claude Code/Desktop
|
|
55
79
|
slack_refresh_tokens
|
|
56
80
|
|
|
57
|
-
# Option 2:
|
|
81
|
+
# Option 2: Package setup wizard
|
|
82
|
+
npx -y @jtalk22/slack-mcp --setup
|
|
83
|
+
|
|
84
|
+
# Option 3: Doctor diagnostics
|
|
85
|
+
npx -y @jtalk22/slack-mcp --doctor
|
|
86
|
+
|
|
87
|
+
# Option 3: Repo CLI
|
|
58
88
|
npm run tokens:auto
|
|
59
89
|
|
|
60
|
-
# Option
|
|
90
|
+
# Option 4: Manual
|
|
61
91
|
npm run tokens:refresh
|
|
62
92
|
```
|
|
63
93
|
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# Use Case Recipes
|
|
2
|
+
|
|
3
|
+
Copy and paste any prompt into your MCP client. Each recipe maps to existing tools and parameters.
|
|
4
|
+
|
|
5
|
+
## 1) Fast Health Check
|
|
6
|
+
|
|
7
|
+
Prompt:
|
|
8
|
+
`Run slack_health_check and tell me if my workspace connection is valid.`
|
|
9
|
+
|
|
10
|
+
## 2) Token Age and Cache Snapshot
|
|
11
|
+
|
|
12
|
+
Prompt:
|
|
13
|
+
`Run slack_token_status and summarize token age, health, and cache stats.`
|
|
14
|
+
|
|
15
|
+
## 3) List Recent DMs
|
|
16
|
+
|
|
17
|
+
Prompt:
|
|
18
|
+
`Use slack_list_conversations with types="im,mpim" and limit=50. Return names and IDs.`
|
|
19
|
+
|
|
20
|
+
## 4) Summarize a Channel for the Last 3 Days
|
|
21
|
+
|
|
22
|
+
Prompt:
|
|
23
|
+
`Use slack_conversations_history with channel_id="<CHANNEL_ID>", oldest="<UNIX_TS_3_DAYS_AGO>", limit=100, resolve_users=true, then summarize decisions and action items.`
|
|
24
|
+
|
|
25
|
+
## 5) Pull a Full Thread
|
|
26
|
+
|
|
27
|
+
Prompt:
|
|
28
|
+
`Use slack_get_thread with channel_id="<CHANNEL_ID>" and thread_ts="<THREAD_TS>". Summarize timeline and owners.`
|
|
29
|
+
|
|
30
|
+
## 6) Search for Decisions
|
|
31
|
+
|
|
32
|
+
Prompt:
|
|
33
|
+
`Use slack_search_messages with query="decision OR approved after:2026-01-01" and count=50. Group results by channel.`
|
|
34
|
+
|
|
35
|
+
## 7) Find Messages from One Person
|
|
36
|
+
|
|
37
|
+
Prompt:
|
|
38
|
+
`Use slack_search_messages with query="from:@<USERNAME> after:2026-01-01" and count=30. Return top themes.`
|
|
39
|
+
|
|
40
|
+
## 8) Export Conversation History
|
|
41
|
+
|
|
42
|
+
Prompt:
|
|
43
|
+
`Use slack_get_full_conversation with channel_id="<CHANNEL_ID>", max_messages=2000, include_threads=true, output_file="q1-export.json".`
|
|
44
|
+
|
|
45
|
+
## 9) Lookup a User Profile
|
|
46
|
+
|
|
47
|
+
Prompt:
|
|
48
|
+
`Use slack_users_info with user_id="<USER_ID>" and return role, timezone, and status fields.`
|
|
49
|
+
|
|
50
|
+
## 10) Send a Channel Update
|
|
51
|
+
|
|
52
|
+
Prompt:
|
|
53
|
+
`Use slack_send_message with channel_id="<CHANNEL_ID>" and text="Daily update: build passed, deploy at 4 PM ET."`
|
|
54
|
+
|
|
55
|
+
## 11) Reply in a Thread
|
|
56
|
+
|
|
57
|
+
Prompt:
|
|
58
|
+
`Use slack_send_message with channel_id="<CHANNEL_ID>", thread_ts="<THREAD_TS>", text="Acknowledged. I will post follow-up logs in 30 minutes."`
|
|
59
|
+
|
|
60
|
+
## 12) Directory Snapshot
|
|
61
|
+
|
|
62
|
+
Prompt:
|
|
63
|
+
`Use slack_list_users with limit=500. Return a compact list of users with admin/bot flags.`
|
|
64
|
+
|
|
65
|
+
## Notes
|
|
66
|
+
|
|
67
|
+
- Replace placeholders before running (`<CHANNEL_ID>`, `<THREAD_TS>`, `<USER_ID>`, `<USERNAME>`, timestamps).
|
|
68
|
+
- Timestamp parameters are Unix seconds in string form.
|
|
69
|
+
- For large workspaces, start with smaller limits, then expand.
|
package/docs/WEB-API.md
CHANGED
package/lib/handlers.js
CHANGED
|
@@ -116,7 +116,7 @@ export async function handleHealthCheck() {
|
|
|
116
116
|
return {
|
|
117
117
|
content: [{
|
|
118
118
|
type: "text",
|
|
119
|
-
text: "NO CREDENTIALS\n\nOptions:\n1. Open Slack in Chrome, then use slack_refresh_tokens\n2. Run:
|
|
119
|
+
text: "NO CREDENTIALS\n\nOptions:\n1. Open Slack in Chrome, then use slack_refresh_tokens\n2. Run: npx -y @jtalk22/slack-mcp --setup"
|
|
120
120
|
}],
|
|
121
121
|
isError: true
|
|
122
122
|
};
|
package/lib/slack-client.js
CHANGED
|
@@ -150,7 +150,7 @@ export async function slackAPI(method, params = {}, options = {}) {
|
|
|
150
150
|
|
|
151
151
|
const creds = loadTokens(false, logger);
|
|
152
152
|
if (!creds) {
|
|
153
|
-
throw new Error("No credentials available. Run
|
|
153
|
+
throw new Error("No credentials available. Run npx -y @jtalk22/slack-mcp --setup or open Slack in Chrome.");
|
|
154
154
|
}
|
|
155
155
|
|
|
156
156
|
// Proactive token health check (non-blocking, only on first attempt)
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jtalk22/slack-mcp",
|
|
3
3
|
"mcpName": "io.github.jtalk22/slack-mcp-server",
|
|
4
|
-
"version": "1.2.
|
|
5
|
-
"description": "
|
|
4
|
+
"version": "1.2.3",
|
|
5
|
+
"description": "Session-based Slack access for Claude - DMs, channels, search, and threads. Local-first with your existing Slack session.",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "src/server.js",
|
|
8
8
|
"bin": {
|
|
@@ -17,6 +17,8 @@
|
|
|
17
17
|
"http": "node src/server-http.js",
|
|
18
18
|
"web": "node src/web-server.js",
|
|
19
19
|
"setup": "node scripts/setup-wizard.js --setup",
|
|
20
|
+
"hooks:setup": "bash scripts/setup-git-hooks.sh",
|
|
21
|
+
"verify:owner-attribution": "bash scripts/check-owner-attribution.sh",
|
|
20
22
|
"tokens:status": "node scripts/token-cli.js status",
|
|
21
23
|
"tokens:refresh": "node scripts/token-cli.js refresh",
|
|
22
24
|
"tokens:auto": "node scripts/token-cli.js auto",
|