@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.
- package/README.md +63 -28
- package/docs/SETUP.md +64 -29
- package/docs/TROUBLESHOOTING.md +28 -0
- package/lib/handlers.js +156 -0
- package/lib/slack-client.js +11 -3
- package/lib/token-store.js +6 -5
- package/lib/tools.js +131 -0
- package/package.json +35 -36
- package/public/index.html +10 -6
- package/public/share.html +128 -0
- package/scripts/setup-wizard.js +1 -1
- package/server.json +10 -4
- package/src/server-http.js +16 -1
- package/src/server.js +31 -7
- package/src/web-server.js +119 -4
- package/docs/CLOUDFLARE-BROWSER-TOOLKIT.md +0 -67
- package/docs/COMMUNICATION-STYLE.md +0 -66
- package/docs/COMPATIBILITY.md +0 -19
- package/docs/DEPLOYMENT-MODES.md +0 -55
- package/docs/HN-LAUNCH.md +0 -72
- package/docs/INDEX.md +0 -40
- package/docs/INSTALL-PROOF.md +0 -18
- package/docs/LAUNCH-COPY-v3.0.0.md +0 -73
- package/docs/LAUNCH-MATRIX.md +0 -22
- package/docs/LAUNCH-OPS.md +0 -71
- package/docs/RELEASE-HEALTH.md +0 -90
- package/docs/SUPPORT-BOUNDARIES.md +0 -49
- package/docs/USE_CASE_RECIPES.md +0 -69
- package/docs/WEB-API.md +0 -303
- package/docs/images/demo-channel-messages.png +0 -0
- package/docs/images/demo-channels.png +0 -0
- package/docs/images/demo-claude-mobile-360x800.png +0 -0
- package/docs/images/demo-claude-mobile-390x844.png +0 -0
- package/docs/images/demo-main-mobile-360x800.png +0 -0
- package/docs/images/demo-main-mobile-390x844.png +0 -0
- package/docs/images/demo-main.png +0 -0
- package/docs/images/demo-messages.png +0 -0
- package/docs/images/demo-poster.png +0 -0
- package/docs/images/demo-sidebar.png +0 -0
- package/docs/images/diagram-oauth-comparison.svg +0 -80
- package/docs/images/diagram-session-flow.svg +0 -105
- package/docs/images/web-api-mobile-360x800.png +0 -0
- package/docs/images/web-api-mobile-390x844.png +0 -0
- package/public/demo-claude.html +0 -1958
- package/public/demo-video.html +0 -235
- package/public/demo.html +0 -1196
- package/scripts/build-release-health-delta.js +0 -201
- package/scripts/capture-screenshots.js +0 -146
- package/scripts/check-owner-attribution.sh +0 -80
- package/scripts/check-public-language.sh +0 -25
- package/scripts/check-version-parity.js +0 -176
- package/scripts/cloudflare-browser-tool.js +0 -237
- package/scripts/collect-release-health.js +0 -150
- package/scripts/record-demo.js +0 -162
- package/scripts/release-preflight.js +0 -243
- package/scripts/setup-git-hooks.sh +0 -15
- package/scripts/verify-core.js +0 -159
- package/scripts/verify-install-flow.js +0 -193
- package/scripts/verify-web.js +0 -269
package/public/demo-video.html
DELETED
|
@@ -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>
|