@jtalk22/slack-mcp 3.0.0 → 3.2.0

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.
Files changed (59) hide show
  1. package/README.md +63 -28
  2. package/docs/SETUP.md +64 -29
  3. package/docs/TROUBLESHOOTING.md +28 -0
  4. package/lib/handlers.js +156 -0
  5. package/lib/slack-client.js +11 -3
  6. package/lib/token-store.js +6 -5
  7. package/lib/tools.js +131 -0
  8. package/package.json +35 -36
  9. package/public/index.html +10 -6
  10. package/public/share.html +128 -0
  11. package/scripts/setup-wizard.js +1 -1
  12. package/server.json +10 -4
  13. package/src/server-http.js +16 -1
  14. package/src/server.js +31 -7
  15. package/src/web-server.js +119 -4
  16. package/docs/CLOUDFLARE-BROWSER-TOOLKIT.md +0 -67
  17. package/docs/COMMUNICATION-STYLE.md +0 -66
  18. package/docs/COMPATIBILITY.md +0 -19
  19. package/docs/DEPLOYMENT-MODES.md +0 -55
  20. package/docs/HN-LAUNCH.md +0 -72
  21. package/docs/INDEX.md +0 -40
  22. package/docs/INSTALL-PROOF.md +0 -18
  23. package/docs/LAUNCH-COPY-v3.0.0.md +0 -73
  24. package/docs/LAUNCH-MATRIX.md +0 -22
  25. package/docs/LAUNCH-OPS.md +0 -71
  26. package/docs/RELEASE-HEALTH.md +0 -90
  27. package/docs/SUPPORT-BOUNDARIES.md +0 -49
  28. package/docs/USE_CASE_RECIPES.md +0 -69
  29. package/docs/WEB-API.md +0 -303
  30. package/docs/images/demo-channel-messages.png +0 -0
  31. package/docs/images/demo-channels.png +0 -0
  32. package/docs/images/demo-claude-mobile-360x800.png +0 -0
  33. package/docs/images/demo-claude-mobile-390x844.png +0 -0
  34. package/docs/images/demo-main-mobile-360x800.png +0 -0
  35. package/docs/images/demo-main-mobile-390x844.png +0 -0
  36. package/docs/images/demo-main.png +0 -0
  37. package/docs/images/demo-messages.png +0 -0
  38. package/docs/images/demo-poster.png +0 -0
  39. package/docs/images/demo-sidebar.png +0 -0
  40. package/docs/images/diagram-oauth-comparison.svg +0 -80
  41. package/docs/images/diagram-session-flow.svg +0 -105
  42. package/docs/images/web-api-mobile-360x800.png +0 -0
  43. package/docs/images/web-api-mobile-390x844.png +0 -0
  44. package/public/demo-claude.html +0 -1958
  45. package/public/demo-video.html +0 -235
  46. package/public/demo.html +0 -1196
  47. package/scripts/build-release-health-delta.js +0 -201
  48. package/scripts/capture-screenshots.js +0 -146
  49. package/scripts/check-owner-attribution.sh +0 -80
  50. package/scripts/check-public-language.sh +0 -25
  51. package/scripts/check-version-parity.js +0 -176
  52. package/scripts/cloudflare-browser-tool.js +0 -237
  53. package/scripts/collect-release-health.js +0 -150
  54. package/scripts/record-demo.js +0 -162
  55. package/scripts/release-preflight.js +0 -243
  56. package/scripts/setup-git-hooks.sh +0 -15
  57. package/scripts/verify-core.js +0 -159
  58. package/scripts/verify-install-flow.js +0 -193
  59. package/scripts/verify-web.js +0 -269
@@ -1,235 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>Slack MCP Server Demo</title>
7
- <meta name="description" content="Session-based Slack access for Claude with your existing workspace permissions. Video demo for DMs, channels, search, and threads.">
8
- <meta property="og:type" content="website">
9
- <meta property="og:title" content="Slack MCP Server - Session-Based Slack Access Demo">
10
- <meta property="og:description" content="Session-based Slack access for Claude with your existing workspace permissions. Video walkthrough for Slack workflows.">
11
- <meta property="og:url" content="https://jtalk22.github.io/slack-mcp-server/public/demo-video.html">
12
- <meta property="og:image" content="https://raw.githubusercontent.com/jtalk22/slack-mcp-server/main/docs/images/demo-poster.png">
13
- <meta name="twitter:card" content="summary_large_image">
14
- <meta name="twitter:title" content="Slack MCP Server - Session-Based Slack Access Demo">
15
- <meta name="twitter:description" content="Session-based Slack access for Claude with your existing workspace permissions. Video walkthrough for Slack workflows.">
16
- <meta name="twitter:image" content="https://raw.githubusercontent.com/jtalk22/slack-mcp-server/main/docs/images/demo-poster.png">
17
- <style>
18
- @import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@400;500;600&family=Space+Grotesk:wght@500;600;700&display=swap');
19
-
20
- :root {
21
- --font-heading: "Space Grotesk", "Avenir Next", "Segoe UI", sans-serif;
22
- --font-body: "IBM Plex Sans", "Inter", "Segoe UI", sans-serif;
23
- }
24
-
25
- * {
26
- margin: 0;
27
- padding: 0;
28
- box-sizing: border-box;
29
- }
30
- body {
31
- font-family: var(--font-body);
32
- background: linear-gradient(135deg, #1a1a2e 0%, #16213e 100%);
33
- min-height: 100vh;
34
- display: flex;
35
- flex-direction: column;
36
- align-items: center;
37
- justify-content: center;
38
- padding: 2rem;
39
- }
40
- .container {
41
- max-width: 900px;
42
- width: 100%;
43
- }
44
- h1 {
45
- color: #ffffff;
46
- font-size: 1.75rem;
47
- font-weight: 600;
48
- text-align: center;
49
- margin-bottom: 0.5rem;
50
- font-family: var(--font-heading);
51
- letter-spacing: -0.02em;
52
- }
53
- .subtitle {
54
- color: #94a3b8;
55
- text-align: center;
56
- margin-bottom: 1.5rem;
57
- font-size: 1rem;
58
- }
59
- .cta-strip {
60
- margin: 0 auto 1rem;
61
- background: rgba(15, 52, 96, 0.72);
62
- border: 1px solid rgba(255, 255, 255, 0.16);
63
- border-radius: 12px;
64
- padding: 10px 14px;
65
- display: flex;
66
- justify-content: space-between;
67
- align-items: center;
68
- gap: 10px;
69
- flex-wrap: wrap;
70
- font-size: 0.8125rem;
71
- }
72
- .cta-strip .links {
73
- display: flex;
74
- gap: 8px;
75
- flex-wrap: wrap;
76
- }
77
- .cta-strip .links a {
78
- color: #d8efff;
79
- text-decoration: none;
80
- border: 1px solid rgba(255, 255, 255, 0.24);
81
- border-radius: 999px;
82
- padding: 4px 8px;
83
- }
84
- .cta-strip .links a:hover {
85
- background: rgba(255, 255, 255, 0.08);
86
- }
87
- .cta-strip .note {
88
- color: rgba(255, 255, 255, 0.82);
89
- }
90
- .cta-strip .note a {
91
- color: #9ee7ff;
92
- text-decoration: underline;
93
- }
94
- .video-wrapper {
95
- position: relative;
96
- border-radius: 12px;
97
- overflow: hidden;
98
- box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.5);
99
- background: #0f0f1a;
100
- }
101
- video {
102
- width: 100%;
103
- display: block;
104
- border-radius: 12px;
105
- }
106
- .controls {
107
- display: flex;
108
- justify-content: center;
109
- gap: 1rem;
110
- margin-top: 1.5rem;
111
- }
112
- .btn {
113
- padding: 0.75rem 1.5rem;
114
- border-radius: 8px;
115
- border: none;
116
- font-size: 0.875rem;
117
- font-weight: 500;
118
- cursor: pointer;
119
- transition: all 0.2s;
120
- }
121
- .btn-primary {
122
- background: #4ecdc4;
123
- color: #1a1a2e;
124
- }
125
- .btn-primary:hover {
126
- background: #5eead4;
127
- transform: translateY(-1px);
128
- }
129
- .btn-secondary {
130
- background: rgba(255, 255, 255, 0.1);
131
- color: #ffffff;
132
- border: 1px solid rgba(255, 255, 255, 0.2);
133
- }
134
- .btn-secondary:hover {
135
- background: rgba(255, 255, 255, 0.15);
136
- }
137
- .back-link {
138
- margin-top: 2rem;
139
- text-align: center;
140
- }
141
- .back-link a {
142
- color: #94a3b8;
143
- text-decoration: none;
144
- font-size: 0.875rem;
145
- }
146
- .back-link a:hover {
147
- color: #ffffff;
148
- }
149
-
150
- @media (max-width: 640px) {
151
- body {
152
- padding: 1rem 0.75rem;
153
- }
154
-
155
- .cta-strip .links {
156
- width: 100%;
157
- }
158
-
159
- .controls {
160
- gap: 0.75rem;
161
- }
162
-
163
- .btn {
164
- flex: 1;
165
- min-width: 0;
166
- padding: 0.72rem 0.95rem;
167
- }
168
- }
169
- </style>
170
- </head>
171
- <body>
172
- <div class="container">
173
- <h1>Slack MCP Server</h1>
174
- <p class="subtitle">Free local-first Slack access using your existing session permissions</p>
175
- <div class="cta-strip">
176
- <div class="links">
177
- <a href="https://www.npmjs.com/package/@jtalk22/slack-mcp" target="_blank" rel="noopener noreferrer">Install</a>
178
- <a href="https://github.com/jtalk22/slack-mcp-server/blob/main/docs/SETUP.md" target="_blank" rel="noopener noreferrer">Setup Guide</a>
179
- <a href="https://github.com/jtalk22/slack-mcp-server#30-second-compatibility-check" target="_blank" rel="noopener noreferrer">30-Second Check</a>
180
- </div>
181
- <div class="note">
182
- Free local-first path with team rollout references in <a href="https://github.com/jtalk22/slack-mcp-server/blob/main/docs/DEPLOYMENT-MODES.md" target="_blank" rel="noopener noreferrer">Deployment Modes</a>.
183
- </div>
184
- </div>
185
-
186
- <div class="video-wrapper">
187
- <video id="demo" poster="https://jtalk22.github.io/slack-mcp-server/docs/images/demo-poster.png" playsinline>
188
- <source src="../docs/videos/demo-claude.webm" type="video/webm">
189
- <source src="https://jtalk22.github.io/slack-mcp-server/docs/videos/demo-claude.webm" type="video/webm">
190
- Your browser does not support the video tag.
191
- </video>
192
- </div>
193
-
194
- <div class="controls">
195
- <button class="btn btn-primary" onclick="togglePlay()">Play / Pause</button>
196
- <button class="btn btn-secondary" onclick="restart()">Restart</button>
197
- </div>
198
-
199
- <div class="back-link">
200
- <a href="https://github.com/jtalk22/slack-mcp-server">← Back to Repository</a>
201
- </div>
202
- </div>
203
-
204
- <script>
205
- const video = document.getElementById('demo');
206
-
207
- // Autoplay with 1 second delay
208
- setTimeout(() => {
209
- video.play().catch(() => {
210
- // Autoplay blocked, user will need to click
211
- console.log('Autoplay blocked, click to play');
212
- });
213
- }, 1000);
214
-
215
- function togglePlay() {
216
- if (video.paused) {
217
- video.play();
218
- } else {
219
- video.pause();
220
- }
221
- }
222
-
223
- function restart() {
224
- video.currentTime = 0;
225
- video.play();
226
- }
227
-
228
- // Loop the video
229
- video.addEventListener('ended', () => {
230
- video.currentTime = 0;
231
- video.play();
232
- });
233
- </script>
234
- </body>
235
- </html>