@jtalk22/slack-mcp 1.2.0 → 1.2.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/LICENSE +1 -1
- package/README.md +61 -61
- package/docs/COMMUNICATION-STYLE.md +58 -0
- package/docs/DEPLOYMENT-MODES.md +48 -0
- package/docs/SETUP.md +11 -5
- package/docs/SUPPORT-BOUNDARIES.md +49 -0
- package/docs/TROUBLESHOOTING.md +5 -2
- package/docs/USE_CASE_RECIPES.md +69 -0
- package/docs/WEB-API.md +2 -0
- package/docs/assets/icon-512.png +0 -0
- package/docs/assets/icon.svg +27 -0
- package/docs/images/demo-claude-v1.2.gif +0 -0
- package/docs/images/demo-poster.png +0 -0
- package/docs/images/demo-readme.gif +0 -0
- package/docs/images/diagram-oauth-comparison.svg +80 -0
- package/docs/images/diagram-session-flow.svg +105 -0
- package/lib/handlers.js +1 -1
- package/lib/slack-client.js +36 -7
- package/lib/tools.js +69 -0
- package/package.json +6 -3
- package/public/demo-claude.html +56 -9
- package/public/demo-video.html +206 -0
- package/public/demo.html +49 -6
- package/scripts/check-owner-attribution.sh +80 -0
- package/scripts/record-demo.js +4 -0
- package/scripts/setup-git-hooks.sh +15 -0
- package/scripts/setup-wizard.js +28 -25
- package/src/cli.js +57 -0
- package/src/server-http.js +1 -1
- package/src/server.js +170 -3
- package/src/web-server.js +3 -3
- package/docs/images/demo-session.gif +0 -0
package/LICENSE
CHANGED
package/README.md
CHANGED
|
@@ -1,25 +1,45 @@
|
|
|
1
|
-
|
|
1
|
+
<p align="center">
|
|
2
|
+
<a href="https://jtalk22.github.io/slack-mcp-server/public/demo.html"><img src="docs/assets/icon-512.png" alt="Slack MCP Server" width="80"></a>
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
<h1 align="center">Slack MCP Server</h1>
|
|
6
|
+
|
|
7
|
+
<p align="center">
|
|
8
|
+
<em>Give Claude the same Slack access you have.<br>
|
|
9
|
+
DMs, threads, history—using your existing Slack session.</em>
|
|
10
|
+
</p>
|
|
11
|
+
|
|
12
|
+
<p align="center">
|
|
13
|
+
<a href="https://jtalk22.github.io/slack-mcp-server/public/demo-video.html">
|
|
14
|
+
<img src="docs/images/demo-readme.gif" alt="Slack MCP tools in action" width="640">
|
|
15
|
+
</a>
|
|
16
|
+
</p>
|
|
2
17
|
|
|
3
|
-
|
|
18
|
+
<p align="center">
|
|
19
|
+
<a href="https://www.npmjs.com/package/@jtalk22/slack-mcp"><img src="https://img.shields.io/badge/npm-Install-blue?style=for-the-badge&logo=npm&logoColor=white" alt="npm"></a>
|
|
20
|
+
<a href="https://github.com/jtalk22/slack-mcp-server/pkgs/container/slack-mcp-server"><img src="https://img.shields.io/badge/Docker-Pull-2496ED?style=for-the-badge&logo=docker&logoColor=white" alt="Docker"></a>
|
|
21
|
+
</p>
|
|
4
22
|
|
|
5
|
-
|
|
6
|
-
|
|
23
|
+
<p align="center">
|
|
24
|
+
<a href="https://jtalk22.github.io/slack-mcp-server/public/demo.html"><img src="https://img.shields.io/badge/LIVE%20DEMO-Try%20It%20Now-00C853?style=for-the-badge&logo=slack&logoColor=white" alt="Live Demo"></a>
|
|
25
|
+
<a href="https://jtalk22.github.io/slack-mcp-server/public/demo-claude.html"><img src="https://img.shields.io/badge/CLAUDE%20DEMO-See%20MCP%20Tools-da7756?style=for-the-badge" alt="Claude Demo"></a>
|
|
26
|
+
</p>
|
|
7
27
|
|
|
8
|
-
|
|
9
|
-
[](https://github.com/jtalk22/slack-mcp-server/pkgs/container/slack-mcp-server)
|
|
10
|
-
[](https://opensource.org/licenses/MIT)
|
|
11
|
-
[](https://nodejs.org/)
|
|
12
|
-
[](https://github.com/sponsors/jtalk22)
|
|
28
|
+
<br>
|
|
13
29
|
|
|
14
30
|
<p align="center">
|
|
15
|
-
<img src="https://
|
|
31
|
+
<a href="https://www.npmjs.com/package/@jtalk22/slack-mcp"><img src="https://img.shields.io/npm/dm/@jtalk22/slack-mcp?label=downloads&color=CB3837" alt="npm downloads"></a>
|
|
32
|
+
<a href="https://github.com/jtalk22/slack-mcp-server/actions/workflows/ci.yml"><img src="https://img.shields.io/github/actions/workflow/status/jtalk22/slack-mcp-server/ci.yml?label=build" alt="Build Status"></a>
|
|
33
|
+
<a href="https://smithery.ai/server/jtalk22/slack-mcp-server"><img src="https://img.shields.io/badge/Smithery-Registry-4A154B" alt="Smithery"></a>
|
|
34
|
+
<a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="License: MIT"></a>
|
|
35
|
+
<a href="https://github.com/sponsors/jtalk22"><img src="https://img.shields.io/badge/Sponsor-♡-ea4aaa?logo=github" alt="Sponsor"></a>
|
|
16
36
|
</p>
|
|
17
37
|
|
|
18
38
|
---
|
|
19
39
|
|
|
20
40
|
### Why This Exists
|
|
21
41
|
|
|
22
|
-
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?"—
|
|
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?"—and standard app/OAuth flows were too constrained for that workflow.
|
|
23
43
|
|
|
24
44
|
Screenshotting messages is not a workflow.
|
|
25
45
|
|
|
@@ -27,59 +47,17 @@ This server bridges the gap. It creates a secure, local bridge between Claude an
|
|
|
27
47
|
|
|
28
48
|

|
|
29
49
|
|
|
30
|
-
> **[Try the Interactive Demo](https://jtalk22.github.io/slack-mcp-server/public/demo.html)** - See the Web UI in action
|
|
31
|
-
>
|
|
32
|
-
> **[See Claude Desktop Demo](https://jtalk22.github.io/slack-mcp-server/public/demo-claude.html)** - Watch MCP tools in action
|
|
33
|
-
|
|
34
50
|
---
|
|
35
51
|
|
|
36
52
|
## Architecture: Local Session Mirroring
|
|
37
53
|
|
|
38
54
|
Instead of authenticating as a bot, this server leverages your existing Chrome session credentials (macOS) or manual token injection (Linux/Windows). It mirrors your user access exactly—if you can see it in Slack, Claude can see it too.
|
|
39
55
|
|
|
40
|
-
|
|
41
|
-
sequenceDiagram
|
|
42
|
-
participant Chrome as Chrome Browser
|
|
43
|
-
participant Script as AppleScript
|
|
44
|
-
participant Store as Token Store
|
|
45
|
-
participant MCP as MCP Server
|
|
46
|
-
participant Slack as Slack API
|
|
47
|
-
|
|
48
|
-
Note over Chrome: You're logged into Slack
|
|
49
|
-
Script->>Chrome: Execute JavaScript in Slack tab
|
|
50
|
-
Chrome-->>Script: xoxc- token + xoxd- cookie
|
|
51
|
-
Script->>Store: Save to ~/.slack-mcp-tokens.json
|
|
52
|
-
Store->>Store: Encrypt in macOS Keychain
|
|
53
|
-
|
|
54
|
-
Note over MCP: Claude asks for DMs
|
|
55
|
-
MCP->>Store: Load credentials
|
|
56
|
-
Store-->>MCP: Token + Cookie
|
|
57
|
-
MCP->>Slack: GET conversations.history
|
|
58
|
-
Slack-->>MCP: Full message history
|
|
59
|
-
MCP-->>MCP: Return to Claude
|
|
60
|
-
```
|
|
56
|
+

|
|
61
57
|
|
|
62
58
|
### Why Not OAuth?
|
|
63
59
|
|
|
64
|
-
|
|
65
|
-
flowchart LR
|
|
66
|
-
subgraph Traditional["Official Slack API (OAuth)"]
|
|
67
|
-
A[Create App] --> B[Request Scopes]
|
|
68
|
-
B --> C[Admin Approval]
|
|
69
|
-
C --> D[User Authorization]
|
|
70
|
-
D --> E[Limited Access]
|
|
71
|
-
E --> F["No DMs without<br/>per-conversation consent"]
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
subgraph ThisServer["Session Mirroring"]
|
|
75
|
-
G[Open Slack in Chrome] --> H[Mirror Session]
|
|
76
|
-
H --> I[Full Access]
|
|
77
|
-
I --> J["Your DMs, Channels,<br/>Search, History"]
|
|
78
|
-
end
|
|
79
|
-
|
|
80
|
-
style Traditional fill:#ffcccc
|
|
81
|
-
style ThisServer fill:#ccffcc
|
|
82
|
-
```
|
|
60
|
+

|
|
83
61
|
|
|
84
62
|
**Trade-off:** Session tokens expire every 1-2 weeks. Auto-refresh (macOS) or manual update keeps things running.
|
|
85
63
|
|
|
@@ -120,6 +98,18 @@ flowchart LR
|
|
|
120
98
|
|
|
121
99
|
## Quick Start
|
|
122
100
|
|
|
101
|
+
**Runtime:** Node.js 20+
|
|
102
|
+
|
|
103
|
+
### 2-Minute Verify
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
npx -y @jtalk22/slack-mcp --version
|
|
107
|
+
npx -y @jtalk22/slack-mcp --setup
|
|
108
|
+
npx -y @jtalk22/slack-mcp --status
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
If `--status` returns valid workspace/user info, your install path is working.
|
|
112
|
+
|
|
123
113
|
### Option A: npm (Recommended)
|
|
124
114
|
|
|
125
115
|
```bash
|
|
@@ -151,7 +141,7 @@ docker pull ghcr.io/jtalk22/slack-mcp-server:latest
|
|
|
151
141
|
The interactive setup wizard handles token extraction and validation automatically:
|
|
152
142
|
|
|
153
143
|
```bash
|
|
154
|
-
npx @jtalk22/slack-mcp --setup
|
|
144
|
+
npx -y @jtalk22/slack-mcp --setup
|
|
155
145
|
```
|
|
156
146
|
|
|
157
147
|
- **macOS**: Auto-extracts tokens from Chrome (have Slack open in a tab)
|
|
@@ -162,7 +152,7 @@ npx @jtalk22/slack-mcp --setup
|
|
|
162
152
|
#### Check Token Status
|
|
163
153
|
|
|
164
154
|
```bash
|
|
165
|
-
npx @jtalk22/slack-mcp --status
|
|
155
|
+
npx -y @jtalk22/slack-mcp --status
|
|
166
156
|
```
|
|
167
157
|
|
|
168
158
|
#### Alternative: Manual Token Scripts
|
|
@@ -297,20 +287,20 @@ finally { refreshInProgress = false; }
|
|
|
297
287
|
|
|
298
288
|
---
|
|
299
289
|
|
|
300
|
-
## Web UI (for claude.ai)
|
|
290
|
+
## Web UI (for claude.ai — no MCP support)
|
|
301
291
|
|
|
302
|
-
|
|
292
|
+
If you're using claude.ai in a browser (which doesn't support MCP), you can use the REST server instead:
|
|
303
293
|
|
|
304
294
|
```bash
|
|
305
295
|
npm run web
|
|
306
|
-
# Or: npx @jtalk22/slack-mcp web
|
|
296
|
+
# Or: npx -y @jtalk22/slack-mcp web
|
|
307
297
|
```
|
|
308
298
|
|
|
309
299
|
**Magic Link:** The console prints a one-click URL with the API key embedded:
|
|
310
300
|
|
|
311
301
|
```
|
|
312
302
|
════════════════════════════════════════════════════════════
|
|
313
|
-
Slack Web API Server v1.
|
|
303
|
+
Slack Web API Server v1.2.2
|
|
314
304
|
════════════════════════════════════════════════════════════
|
|
315
305
|
|
|
316
306
|
Dashboard: http://localhost:3000/?key=smcp_xxxxxxxxxxxx
|
|
@@ -329,6 +319,16 @@ Just click the link - no copy-paste needed. The key is saved to your browser and
|
|
|
329
319
|
|
|
330
320
|
---
|
|
331
321
|
|
|
322
|
+
## Operations Guides
|
|
323
|
+
|
|
324
|
+
- [Deployment Modes](docs/DEPLOYMENT-MODES.md) - Choose the right operating model (`stdio`, `web`, hosted HTTP, Smithery/Worker)
|
|
325
|
+
- [Use Case Recipes](docs/USE_CASE_RECIPES.md) - 12 copy/paste prompts mapped to current tool contracts
|
|
326
|
+
- [Support Boundaries](docs/SUPPORT-BOUNDARIES.md) - Scope, response targets, and solo-maintainer capacity limits
|
|
327
|
+
|
|
328
|
+
If you're evaluating team rollout, start with [Deployment Modes](docs/DEPLOYMENT-MODES.md) before exposing remote endpoints.
|
|
329
|
+
|
|
330
|
+
---
|
|
331
|
+
|
|
332
332
|
## Troubleshooting
|
|
333
333
|
|
|
334
334
|
### Tokens Expired
|
|
@@ -0,0 +1,58 @@
|
|
|
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
|
+
- `<change 1>`
|
|
22
|
+
- `<change 2>`
|
|
23
|
+
|
|
24
|
+
Install/update:
|
|
25
|
+
- `npx -y @jtalk22/slack-mcp`
|
|
26
|
+
- `npm i -g @jtalk22/slack-mcp@<version>`
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Release Notes Template
|
|
30
|
+
|
|
31
|
+
````md
|
|
32
|
+
## <version> — <short title>
|
|
33
|
+
|
|
34
|
+
### Fixed
|
|
35
|
+
- <item>
|
|
36
|
+
- <item>
|
|
37
|
+
|
|
38
|
+
### Runtime / Security
|
|
39
|
+
- <item>
|
|
40
|
+
|
|
41
|
+
### Verify
|
|
42
|
+
```bash
|
|
43
|
+
<command>
|
|
44
|
+
<command>
|
|
45
|
+
```
|
|
46
|
+
````
|
|
47
|
+
|
|
48
|
+
## Changelog Entry Template
|
|
49
|
+
|
|
50
|
+
```md
|
|
51
|
+
## [<version>] - YYYY-MM-DD
|
|
52
|
+
|
|
53
|
+
### Fixed
|
|
54
|
+
- <item>
|
|
55
|
+
|
|
56
|
+
### Changed
|
|
57
|
+
- <item>
|
|
58
|
+
```
|
|
@@ -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.
|
package/docs/SETUP.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
## Prerequisites
|
|
4
4
|
|
|
5
|
-
- Node.js
|
|
5
|
+
- Node.js 20+
|
|
6
6
|
- Google Chrome (for token extraction)
|
|
7
7
|
- macOS (for Keychain storage - other platforms use file storage only)
|
|
8
8
|
|
|
@@ -25,16 +25,22 @@ npm install
|
|
|
25
25
|
|
|
26
26
|
### 3. Get Slack Tokens
|
|
27
27
|
|
|
28
|
-
**Option A:
|
|
28
|
+
**Option A: Setup Wizard (recommended)**
|
|
29
29
|
|
|
30
30
|
1. Open Chrome
|
|
31
31
|
2. Navigate to https://app.slack.com and log in
|
|
32
32
|
3. Run:
|
|
33
33
|
```bash
|
|
34
|
-
|
|
34
|
+
npx -y @jtalk22/slack-mcp --setup
|
|
35
35
|
```
|
|
36
36
|
|
|
37
|
-
**Option B:
|
|
37
|
+
**Option B: Automatic Extraction (repo clone workflow)**
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
npm run tokens:auto
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
**Option C: Manual Extraction**
|
|
38
44
|
|
|
39
45
|
1. Open https://app.slack.com in Chrome
|
|
40
46
|
2. Press F12 to open DevTools
|
|
@@ -114,7 +120,7 @@ You should see your username and team name.
|
|
|
114
120
|
|
|
115
121
|
### "No credentials found"
|
|
116
122
|
|
|
117
|
-
Run `
|
|
123
|
+
Run `npx -y @jtalk22/slack-mcp --setup` with Slack open in Chrome, or `npm run tokens:refresh` to enter manually.
|
|
118
124
|
|
|
119
125
|
### "invalid_auth" Error
|
|
120
126
|
|
|
@@ -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
|
@@ -54,10 +54,13 @@ slack_list_conversations limit=50
|
|
|
54
54
|
# Option 1: In Claude Code/Desktop
|
|
55
55
|
slack_refresh_tokens
|
|
56
56
|
|
|
57
|
-
# Option 2:
|
|
57
|
+
# Option 2: Package setup wizard
|
|
58
|
+
npx -y @jtalk22/slack-mcp --setup
|
|
59
|
+
|
|
60
|
+
# Option 3: Repo CLI
|
|
58
61
|
npm run tokens:auto
|
|
59
62
|
|
|
60
|
-
# Option
|
|
63
|
+
# Option 4: Manual
|
|
61
64
|
npm run tokens:refresh
|
|
62
65
|
```
|
|
63
66
|
|
|
@@ -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
|
Binary file
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" width="512" height="512">
|
|
2
|
+
<defs>
|
|
3
|
+
<linearGradient id="bg" x1="0%" y1="0%" x2="100%" y2="100%">
|
|
4
|
+
<stop offset="0%" style="stop-color:#4A154B"/>
|
|
5
|
+
<stop offset="100%" style="stop-color:#3D1140"/>
|
|
6
|
+
</linearGradient>
|
|
7
|
+
</defs>
|
|
8
|
+
|
|
9
|
+
<!-- Background rounded square -->
|
|
10
|
+
<rect x="0" y="0" width="512" height="512" rx="96" ry="96" fill="url(#bg)"/>
|
|
11
|
+
|
|
12
|
+
<!-- Stylized hashtag/channel symbol -->
|
|
13
|
+
<g fill="none" stroke="#FFFFFF" stroke-width="36" stroke-linecap="round">
|
|
14
|
+
<!-- Vertical lines -->
|
|
15
|
+
<line x1="180" y1="140" x2="160" y2="372"/>
|
|
16
|
+
<line x1="352" y1="140" x2="332" y2="372"/>
|
|
17
|
+
<!-- Horizontal lines -->
|
|
18
|
+
<line x1="120" y1="200" x2="392" y2="200"/>
|
|
19
|
+
<line x1="120" y1="312" x2="392" y2="312"/>
|
|
20
|
+
</g>
|
|
21
|
+
|
|
22
|
+
<!-- Slack-colored connection dots (representing MCP bridge) -->
|
|
23
|
+
<circle cx="420" cy="92" r="28" fill="#36C5F0"/>
|
|
24
|
+
<circle cx="92" cy="420" r="28" fill="#2EB67D"/>
|
|
25
|
+
<circle cx="420" cy="420" r="28" fill="#ECB22E"/>
|
|
26
|
+
<circle cx="92" cy="92" r="28" fill="#E01E5A"/>
|
|
27
|
+
</svg>
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 900 420">
|
|
2
|
+
<defs>
|
|
3
|
+
<linearGradient id="bgGrad2" x1="0%" y1="0%" x2="100%" y2="100%">
|
|
4
|
+
<stop offset="0%" style="stop-color:#1a1a2e"/>
|
|
5
|
+
<stop offset="100%" style="stop-color:#16213e"/>
|
|
6
|
+
</linearGradient>
|
|
7
|
+
<marker id="arrowRed2" markerWidth="10" markerHeight="10" refX="9" refY="3" orient="auto">
|
|
8
|
+
<path d="M0,0 L0,6 L9,3 z" fill="#e94560"/>
|
|
9
|
+
</marker>
|
|
10
|
+
<marker id="arrowTeal2" markerWidth="10" markerHeight="10" refX="9" refY="3" orient="auto">
|
|
11
|
+
<path d="M0,0 L0,6 L9,3 z" fill="#4ecdc4"/>
|
|
12
|
+
</marker>
|
|
13
|
+
</defs>
|
|
14
|
+
|
|
15
|
+
<!-- Background -->
|
|
16
|
+
<rect width="900" height="420" fill="url(#bgGrad2)" rx="12"/>
|
|
17
|
+
|
|
18
|
+
<!-- Left Side: OAuth (Red-tinted) -->
|
|
19
|
+
<rect x="30" y="50" width="400" height="340" rx="12" fill="#e94560" opacity="0.1" stroke="#e94560" stroke-width="2"/>
|
|
20
|
+
<text x="230" y="85" text-anchor="middle" fill="#fca5a5" font-family="system-ui, -apple-system, sans-serif" font-size="16" font-weight="600">Official Slack API (OAuth)</text>
|
|
21
|
+
|
|
22
|
+
<!-- OAuth Flow - Row 1 -->
|
|
23
|
+
<rect x="45" y="110" width="120" height="45" rx="8" fill="#2d2d2d" stroke="#e94560" stroke-width="1"/>
|
|
24
|
+
<text x="105" y="138" text-anchor="middle" fill="#ffffff" font-family="system-ui, -apple-system, sans-serif" font-size="12">Create App</text>
|
|
25
|
+
|
|
26
|
+
<path d="M 170 132 L 190 132" stroke="#e94560" stroke-width="2" marker-end="url(#arrowRed2)"/>
|
|
27
|
+
|
|
28
|
+
<rect x="195" y="110" width="120" height="45" rx="8" fill="#2d2d2d" stroke="#e94560" stroke-width="1"/>
|
|
29
|
+
<text x="255" y="138" text-anchor="middle" fill="#ffffff" font-family="system-ui, -apple-system, sans-serif" font-size="12">Request Scopes</text>
|
|
30
|
+
|
|
31
|
+
<path d="M 320 132 L 340 132" stroke="#e94560" stroke-width="2" marker-end="url(#arrowRed2)"/>
|
|
32
|
+
|
|
33
|
+
<rect x="345" y="110" width="75" height="45" rx="8" fill="#e94560" opacity="0.4" stroke="#e94560" stroke-width="1"/>
|
|
34
|
+
<text x="382" y="128" text-anchor="middle" fill="#ffffff" font-family="system-ui, -apple-system, sans-serif" font-size="11" font-weight="600">Admin</text>
|
|
35
|
+
<text x="382" y="144" text-anchor="middle" fill="#ffffff" font-family="system-ui, -apple-system, sans-serif" font-size="11" font-weight="600">Approval</text>
|
|
36
|
+
|
|
37
|
+
<!-- Arrow down from Admin Approval -->
|
|
38
|
+
<path d="M 382 160 L 382 195" stroke="#e94560" stroke-width="2" marker-end="url(#arrowRed2)"/>
|
|
39
|
+
|
|
40
|
+
<!-- OAuth Flow - Row 2 -->
|
|
41
|
+
<rect x="95" y="205" width="140" height="45" rx="8" fill="#2d2d2d" stroke="#e94560" stroke-width="1"/>
|
|
42
|
+
<text x="165" y="233" text-anchor="middle" fill="#ffffff" font-family="system-ui, -apple-system, sans-serif" font-size="12">User Authorization</text>
|
|
43
|
+
|
|
44
|
+
<path d="M 240 227 L 260 227" stroke="#e94560" stroke-width="2" marker-end="url(#arrowRed2)"/>
|
|
45
|
+
|
|
46
|
+
<rect x="265" y="205" width="140" height="45" rx="8" fill="#2d2d2d" stroke="#e94560" stroke-width="1"/>
|
|
47
|
+
<text x="335" y="233" text-anchor="middle" fill="#ffffff" font-family="system-ui, -apple-system, sans-serif" font-size="12">Limited Access</text>
|
|
48
|
+
|
|
49
|
+
<!-- OAuth Result (blocked) -->
|
|
50
|
+
<rect x="70" y="280" width="290" height="60" rx="8" fill="#e94560" opacity="0.15" stroke="#e94560" stroke-width="2" stroke-dasharray="4"/>
|
|
51
|
+
<text x="215" y="305" text-anchor="middle" fill="#fca5a5" font-family="system-ui, -apple-system, sans-serif" font-size="13" font-weight="500">No DMs without</text>
|
|
52
|
+
<text x="215" y="325" text-anchor="middle" fill="#fca5a5" font-family="system-ui, -apple-system, sans-serif" font-size="13" font-weight="500">per-conversation consent</text>
|
|
53
|
+
|
|
54
|
+
<!-- Right Side: Session Mirroring (Green-tinted) -->
|
|
55
|
+
<rect x="470" y="50" width="400" height="340" rx="12" fill="#4ecdc4" opacity="0.1" stroke="#4ecdc4" stroke-width="2"/>
|
|
56
|
+
<text x="670" y="85" text-anchor="middle" fill="#5eead4" font-family="system-ui, -apple-system, sans-serif" font-size="16" font-weight="600">Session Mirroring</text>
|
|
57
|
+
|
|
58
|
+
<!-- Session Mirroring Flow -->
|
|
59
|
+
<rect x="495" y="120" width="160" height="50" rx="8" fill="#3b82f6" opacity="0.9"/>
|
|
60
|
+
<text x="575" y="150" text-anchor="middle" fill="#ffffff" font-family="system-ui, -apple-system, sans-serif" font-size="12" font-weight="500">Open Slack in Chrome</text>
|
|
61
|
+
|
|
62
|
+
<path d="M 660 145 L 700 145" stroke="#4ecdc4" stroke-width="3" marker-end="url(#arrowTeal2)"/>
|
|
63
|
+
|
|
64
|
+
<rect x="705" y="120" width="140" height="50" rx="8" fill="#da7756" opacity="0.9"/>
|
|
65
|
+
<text x="775" y="150" text-anchor="middle" fill="#ffffff" font-family="system-ui, -apple-system, sans-serif" font-size="12" font-weight="500">Mirror Session</text>
|
|
66
|
+
|
|
67
|
+
<path d="M 775 175 L 775 210" stroke="#4ecdc4" stroke-width="3" marker-end="url(#arrowTeal2)"/>
|
|
68
|
+
|
|
69
|
+
<rect x="605" y="220" width="160" height="50" rx="8" fill="#4ecdc4" opacity="0.9"/>
|
|
70
|
+
<text x="685" y="250" text-anchor="middle" fill="#1a1a2e" font-family="system-ui, -apple-system, sans-serif" font-size="13" font-weight="600">Full Access</text>
|
|
71
|
+
|
|
72
|
+
<!-- Session Mirroring Result (success) -->
|
|
73
|
+
<rect x="510" y="295" width="340" height="60" rx="8" fill="#4ecdc4" opacity="0.2" stroke="#4ecdc4" stroke-width="2"/>
|
|
74
|
+
<text x="680" y="320" text-anchor="middle" fill="#5eead4" font-family="system-ui, -apple-system, sans-serif" font-size="13" font-weight="500">Your DMs, Channels, Search, History</text>
|
|
75
|
+
<text x="680" y="340" text-anchor="middle" fill="#5eead4" font-family="system-ui, -apple-system, sans-serif" font-size="11">✓ Same access as your browser</text>
|
|
76
|
+
|
|
77
|
+
<!-- VS divider -->
|
|
78
|
+
<circle cx="450" cy="210" r="24" fill="#1a1a2e" stroke="#ffffff" stroke-width="2" opacity="0.9"/>
|
|
79
|
+
<text x="450" y="216" text-anchor="middle" fill="#ffffff" font-family="system-ui, -apple-system, sans-serif" font-size="14" font-weight="700">vs</text>
|
|
80
|
+
</svg>
|