@jtalk22/slack-mcp 2.0.0 → 3.1.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 (65) hide show
  1. package/README.md +118 -67
  2. package/docs/CLOUDFLARE-BROWSER-TOOLKIT.md +67 -0
  3. package/docs/DEPLOYMENT-MODES.md +10 -3
  4. package/docs/HN-LAUNCH.md +47 -36
  5. package/docs/INDEX.md +9 -5
  6. package/docs/INSTALL-PROOF.md +5 -5
  7. package/docs/LAUNCH-COPY-v3.0.0.md +101 -0
  8. package/docs/LAUNCH-MATRIX.md +4 -2
  9. package/docs/LAUNCH-OPS.md +25 -24
  10. package/docs/RELEASE-HEALTH.md +44 -48
  11. package/docs/TROUBLESHOOTING.md +27 -0
  12. package/docs/WEB-API.md +13 -4
  13. package/docs/images/demo-channel-messages.png +0 -0
  14. package/docs/images/demo-channels.png +0 -0
  15. package/docs/images/demo-claude-mobile-360x800.png +0 -0
  16. package/docs/images/demo-claude-mobile-390x844.png +0 -0
  17. package/docs/images/demo-claude-mobile-poster.png +0 -0
  18. package/docs/images/demo-main-mobile-360x800.png +0 -0
  19. package/docs/images/demo-main-mobile-390x844.png +0 -0
  20. package/docs/images/demo-main.png +0 -0
  21. package/docs/images/demo-poster.png +0 -0
  22. package/docs/images/demo-sidebar.png +0 -0
  23. package/docs/images/social-preview-v3.png +0 -0
  24. package/docs/images/web-api-mobile-360x800.png +0 -0
  25. package/docs/images/web-api-mobile-390x844.png +0 -0
  26. package/package.json +31 -31
  27. package/public/demo-claude.html +100 -11
  28. package/public/demo-video.html +45 -7
  29. package/public/demo.html +138 -4
  30. package/public/index.html +132 -69
  31. package/public/share.html +127 -0
  32. package/scripts/build-mobile-demo.js +168 -0
  33. package/scripts/build-release-health-delta.js +2 -2
  34. package/scripts/build-social-preview.js +189 -0
  35. package/scripts/capture-screenshots.js +109 -53
  36. package/scripts/check-owner-attribution.sh +53 -2
  37. package/scripts/check-public-language.sh +1 -0
  38. package/scripts/check-version-parity.js +70 -14
  39. package/scripts/cloudflare-browser-tool.js +237 -0
  40. package/scripts/collect-release-health.js +14 -2
  41. package/scripts/impact-push-v3.js +781 -0
  42. package/scripts/record-demo.js +26 -12
  43. package/scripts/release-preflight.js +247 -0
  44. package/scripts/setup-wizard.js +1 -1
  45. package/scripts/update-github-social-preview.js +208 -0
  46. package/scripts/verify-install-flow.js +2 -1
  47. package/scripts/verify-web.js +53 -1
  48. package/server.json +47 -0
  49. package/smithery.yaml +34 -0
  50. package/src/server-http.js +98 -5
  51. package/src/server.js +18 -6
  52. package/src/web-server.js +7 -3
  53. package/docs/LAUNCH-COPY-v2.0.0.md +0 -59
  54. package/docs/images/demo-claude-v1.2.gif +0 -0
  55. package/docs/images/demo-readme.gif +0 -0
  56. package/docs/release-health/2026-02-25.md +0 -33
  57. package/docs/release-health/2026-02-26.md +0 -33
  58. package/docs/release-health/24h-delta.md +0 -21
  59. package/docs/release-health/24h-end.md +0 -33
  60. package/docs/release-health/24h-start.md +0 -33
  61. package/docs/release-health/latest.md +0 -33
  62. package/docs/release-health/launch-log-template.md +0 -21
  63. package/docs/release-health/version-parity.md +0 -21
  64. package/docs/videos/.gitkeep +0 -0
  65. package/docs/videos/demo-claude-v1.2.webm +0 -0
package/README.md CHANGED
@@ -1,46 +1,70 @@
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>
17
-
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>
22
-
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>
27
-
28
- <br>
29
-
30
- <p align="center">
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
- </p>
1
+ # Slack MCP Server
36
2
 
37
- ---
3
+ Session-based Slack MCP for Claude and MCP clients. Local-first `stdio`/`web` with secure-default hosted HTTP in v3.
4
+
5
+ ## Install + Verify
6
+
7
+ ```bash
8
+ npx -y @jtalk22/slack-mcp --setup
9
+ npx -y @jtalk22/slack-mcp@latest --version
10
+ npx -y @jtalk22/slack-mcp@latest --doctor
11
+ npx -y @jtalk22/slack-mcp@latest --status
12
+ ```
13
+
14
+ [Setup guide](https://github.com/jtalk22/slack-mcp-server/blob/main/docs/SETUP.md) · [30-second verify reference](https://github.com/jtalk22/slack-mcp-server/blob/main/README.md#install--verify) · [Autoplay demo landing](https://jtalk22.github.io/slack-mcp-server/) · [Latest release](https://github.com/jtalk22/slack-mcp-server/releases/latest) · [npm package](https://www.npmjs.com/package/@jtalk22/slack-mcp)
15
+
16
+ [![Live demo poster](https://jtalk22.github.io/slack-mcp-server/docs/images/demo-poster.png)](https://jtalk22.github.io/slack-mcp-server/public/demo-video.html)
17
+
18
+ Motion proof: [20-second mobile clip](https://jtalk22.github.io/slack-mcp-server/docs/videos/demo-claude-mobile-20s.mp4) · [Live demo walkthrough](https://jtalk22.github.io/slack-mcp-server/public/demo-video.html) · [Share card](https://jtalk22.github.io/slack-mcp-server/public/share.html)
19
+
20
+ Hosted migration note: `v3.0.0` keeps local `stdio`/`web` flows unchanged; hosted `/mcp` requires `SLACK_MCP_HTTP_AUTH_TOKEN` and `SLACK_MCP_HTTP_ALLOWED_ORIGINS`.
21
+
22
+ Maintainer/operator: `jtalk22` (`james@revasser.nyc`)
23
+ Release: [`v3.1.0`](https://github.com/jtalk22/slack-mcp-server/releases/tag/v3.1.0) · Notes: [v3.1.0 notes](https://github.com/jtalk22/slack-mcp-server/blob/main/.github/v3.1.0-release-notes.md) · Support: [deployment intake](https://github.com/jtalk22/slack-mcp-server/issues/new?template=deployment-intake.md)
24
+
25
+ If this saved you setup time, consider starring the repo. Maintenance support: [GitHub Sponsors](https://github.com/sponsors/jtalk22) · [Ko-fi](https://ko-fi.com/jtalk22) · [Buy Me a Coffee](https://buymeacoffee.com/jtalk22)
38
26
 
39
- > **Release:** `v2.0.0` is live with deterministic diagnostics and no MCP tool renames/removals.
40
- > Release notes: [.github/v2.0.0-release-notes.md](.github/v2.0.0-release-notes.md)
41
- > Install proof: [docs/INSTALL-PROOF.md](docs/INSTALL-PROOF.md)
27
+ ## v3.0.0 at a Glance
42
28
 
43
- > Free local-first path: install with `npx -y @jtalk22/slack-mcp`, run on your own machine, and keep full control of session tokens.
29
+ - Hosted HTTP `/mcp` now requires bearer auth by default (`SLACK_MCP_HTTP_AUTH_TOKEN`).
30
+ - Hosted HTTP CORS now uses explicit allowlisting (`SLACK_MCP_HTTP_ALLOWED_ORIGINS`).
31
+ - Local-first paths (`stdio`, `web`) stay compatible.
32
+ - MCP tool names stay stable (no renames/removals).
33
+
34
+ ## Slack MCP Cloud
35
+
36
+ Skip all setup. One URL, 13 tools, encrypted token storage, managed on Cloudflare edge.
37
+
38
+ | Plan | Price | Includes |
39
+ |------|-------|----------|
40
+ | Solo | $19/mo | 10 standard tools, encrypted storage, 5K requests/mo |
41
+ | Team | $49/mo | 13 tools (incl. compound intelligence), 3 workspaces, 25K requests/mo |
42
+
43
+ [Get started](https://jtalk22.github.io/slack-mcp-server/cloud.html) — no Docker, no tokens, no admin approval.
44
+
45
+ ## 60-Second Hosted Migration
46
+
47
+ ```bash
48
+ export SLACK_TOKEN=xoxc-...
49
+ export SLACK_COOKIE=xoxd-...
50
+ export SLACK_MCP_HTTP_AUTH_TOKEN=change-this
51
+ export SLACK_MCP_HTTP_ALLOWED_ORIGINS=https://claude.ai
52
+ node src/server-http.js
53
+ ```
54
+
55
+ Request with:
56
+
57
+ ```bash
58
+ Authorization: Bearer <SLACK_MCP_HTTP_AUTH_TOKEN>
59
+ ```
60
+
61
+ Emergency local fallback only:
62
+
63
+ ```bash
64
+ SLACK_MCP_HTTP_INSECURE=1 node src/server-http.js
65
+ ```
66
+
67
+ For guided hosted rollout requirements, open: [deployment intake](https://github.com/jtalk22/slack-mcp-server/issues/new?template=deployment-intake.md)
44
68
 
45
69
  ### Why This Exists
46
70
 
@@ -50,7 +74,7 @@ Screenshotting messages is not a workflow.
50
74
 
51
75
  This server bridges the gap. It creates a secure, local bridge between Claude and your Slack web session. It gives your MCP client the same access **you** already have in the browser—search history, summarize threads, and retrieve prior context—without fighting the platform.
52
76
 
53
- ![Slack MCP Server Web UI](docs/images/demo-main.png)
77
+ ![Slack MCP Server Web UI](https://jtalk22.github.io/slack-mcp-server/docs/images/demo-main.png)
54
78
 
55
79
  ---
56
80
 
@@ -58,11 +82,11 @@ This server bridges the gap. It creates a secure, local bridge between Claude an
58
82
 
59
83
  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.
60
84
 
61
- ![Session Mirroring Flow](docs/images/diagram-session-flow.svg)
85
+ ![Session Mirroring Flow](https://jtalk22.github.io/slack-mcp-server/docs/images/diagram-session-flow.svg)
62
86
 
63
87
  ### Why Not OAuth?
64
88
 
65
- ![OAuth vs Session Mirroring](docs/images/diagram-oauth-comparison.svg)
89
+ ![OAuth vs Session Mirroring](https://jtalk22.github.io/slack-mcp-server/docs/images/diagram-oauth-comparison.svg)
66
90
 
67
91
  **Trade-off:** Session tokens expire every 1-2 weeks. Auto-refresh (macOS) or manual update keeps things running.
68
92
 
@@ -88,7 +112,7 @@ Instead of authenticating as a bot, this server leverages your existing Chrome s
88
112
  | Tool | Description |
89
113
  |------|-------------|
90
114
  | `slack_health_check` | Verify token validity and workspace info |
91
- | `slack_token_status` | **New:** Detailed token age, health, and cache stats |
115
+ | `slack_token_status` | Detailed token age, health, and cache stats |
92
116
  | `slack_refresh_tokens` | Auto-extract fresh tokens from Chrome |
93
117
  | `slack_list_conversations` | List DMs/channels (with lazy discovery cache) |
94
118
  | `slack_conversations_history` | Get messages from a channel or DM |
@@ -108,21 +132,21 @@ Instead of authenticating as a bot, this server leverages your existing Chrome s
108
132
  ### 30-Second Compatibility Check
109
133
 
110
134
  ```bash
111
- npx -y @jtalk22/slack-mcp --version
112
- npx -y @jtalk22/slack-mcp --doctor
113
135
  npx -y @jtalk22/slack-mcp --setup
136
+ npx -y @jtalk22/slack-mcp --doctor
137
+ npx -y @jtalk22/slack-mcp --status
114
138
  ```
115
139
 
116
140
  Expected:
117
- - `--version` prints `slack-mcp-server v2.0.x`
141
+ - `--setup` launches the interactive wizard
118
142
  - `--doctor` returns one clear next action with exit code:
119
143
  - `0` ready
120
144
  - `1` missing credentials
121
145
  - `2` invalid/expired credentials
122
146
  - `3` connectivity/runtime issue
123
- - `--setup` launches the interactive wizard
147
+ - `--status` is read-only and non-mutating
124
148
 
125
- Command reference: [docs/HN-LAUNCH.md](docs/HN-LAUNCH.md)
149
+ Command reference: [HN launch kit](https://github.com/jtalk22/slack-mcp-server/blob/main/docs/HN-LAUNCH.md)
126
150
 
127
151
  ### Known Working Clients
128
152
 
@@ -132,7 +156,7 @@ Command reference: [docs/HN-LAUNCH.md](docs/HN-LAUNCH.md)
132
156
  - Hosted Node runtime (`http`)
133
157
  - Cloudflare Worker / Smithery transport
134
158
 
135
- Compatibility matrix: [docs/COMPATIBILITY.md](docs/COMPATIBILITY.md)
159
+ Compatibility matrix: [compatibility matrix](https://github.com/jtalk22/slack-mcp-server/blob/main/docs/COMPATIBILITY.md)
136
160
 
137
161
  ### Option A: npm (Recommended)
138
162
 
@@ -326,9 +350,15 @@ finally { refreshInProgress = false; }
326
350
 
327
351
  ---
328
352
 
329
- ## Web UI (for claude.ai — no MCP support)
353
+ ## Web UI (optional browser/local fallback)
354
+
355
+ Claude now supports remote MCP connectors on paid plans. For claude.ai, the preferred path is adding a remote connector in Settings -> Connectors.
356
+
357
+ Reference:
358
+ - https://support.anthropic.com/en/articles/11995447-connectors-in-claude
359
+ - https://support.anthropic.com/en/articles/11175166-about-custom-integrations-using-remote-mcp
330
360
 
331
- If you're using claude.ai in a browser (which doesn't support MCP), you can use the REST server instead:
361
+ Use this Web UI when you want a local localhost dashboard, REST access, or a fallback workflow without remote connector hosting:
332
362
 
333
363
  ```bash
334
364
  npm run web
@@ -339,7 +369,7 @@ npm run web
339
369
 
340
370
  ```
341
371
  ════════════════════════════════════════════════════════════
342
- Slack Web API Server v2.0.0
372
+ Slack Web API Server v3.0.0
343
373
  ════════════════════════════════════════════════════════════
344
374
 
345
375
  Dashboard: http://localhost:3000/?key=smcp_xxxxxxxxxxxx
@@ -352,21 +382,40 @@ Just click the link - no copy-paste needed. The key is saved to your browser and
352
382
 
353
383
  | DMs View | Channels View |
354
384
  |----------|---------------|
355
- | ![DMs](docs/images/demo-main.png) | ![Channels](docs/images/demo-channels.png) |
385
+ | ![DMs](https://jtalk22.github.io/slack-mcp-server/docs/images/demo-main.png) | ![Channels](https://jtalk22.github.io/slack-mcp-server/docs/images/demo-channels.png) |
356
386
 
357
387
  </details>
358
388
 
359
389
  ---
360
390
 
391
+ ## Hosted HTTP Mode (Secure Defaults)
392
+
393
+ Use this mode only when you need a remote MCP endpoint:
394
+
395
+ ```bash
396
+ SLACK_TOKEN=xoxc-...
397
+ SLACK_COOKIE=xoxd-...
398
+ SLACK_MCP_HTTP_AUTH_TOKEN=change-this
399
+ SLACK_MCP_HTTP_ALLOWED_ORIGINS=https://claude.ai
400
+ node src/server-http.js
401
+ ```
402
+
403
+ Behavior:
404
+ - `/mcp` requires `Authorization: Bearer <SLACK_MCP_HTTP_AUTH_TOKEN>` by default.
405
+ - Cross-origin browser calls are denied unless origin is listed in `SLACK_MCP_HTTP_ALLOWED_ORIGINS`.
406
+ - For local testing only, you can opt out with `SLACK_MCP_HTTP_INSECURE=1`.
407
+
408
+ ---
409
+
361
410
  ## Operations Guides
362
411
 
363
- - [Docs Index](docs/INDEX.md) - One-click index for setup, API, troubleshooting, deployment, and support docs
364
- - [Deployment Modes](docs/DEPLOYMENT-MODES.md) - Choose the right operating model (`stdio`, `web`, hosted HTTP, Smithery/Worker)
365
- - [Use Case Recipes](docs/USE_CASE_RECIPES.md) - 12 copy/paste prompts mapped to current tool contracts
366
- - [Support Boundaries](docs/SUPPORT-BOUNDARIES.md) - Scope, response targets, and solo-maintainer capacity limits
367
- - [Release Health](docs/RELEASE-HEALTH.md) - Track setup reliability and support-load targets through this release cycle
412
+ - [Docs Index](https://github.com/jtalk22/slack-mcp-server/blob/main/docs/INDEX.md) - One-click index for setup, API, troubleshooting, deployment, and support docs
413
+ - [Deployment Modes](https://github.com/jtalk22/slack-mcp-server/blob/main/docs/DEPLOYMENT-MODES.md) - Choose the right operating model (`stdio`, `web`, hosted HTTP, Smithery/Worker)
414
+ - [Use Case Recipes](https://github.com/jtalk22/slack-mcp-server/blob/main/docs/USE_CASE_RECIPES.md) - 12 copy/paste prompts mapped to current tool contracts
415
+ - [Support Boundaries](https://github.com/jtalk22/slack-mcp-server/blob/main/docs/SUPPORT-BOUNDARIES.md) - Scope, response targets, and solo-maintainer capacity limits
416
+ - [Release Health](https://github.com/jtalk22/slack-mcp-server/blob/main/docs/RELEASE-HEALTH.md) - Track setup reliability and support-load targets through this release cycle
368
417
 
369
- If you're evaluating team rollout, start with [Deployment Modes](docs/DEPLOYMENT-MODES.md) before exposing remote endpoints.
418
+ If you're evaluating team rollout, start with [Deployment Modes](https://github.com/jtalk22/slack-mcp-server/blob/main/docs/DEPLOYMENT-MODES.md) before exposing remote endpoints.
370
419
 
371
420
  ---
372
421
 
@@ -382,11 +431,13 @@ If you're evaluating team rollout, start with [Deployment Modes](docs/DEPLOYMENT
382
431
  npx -y @jtalk22/slack-mcp --setup
383
432
  ```
384
433
  3. Open an issue with full environment details:
385
- - [Bug Report Template](.github/ISSUE_TEMPLATE/bug_report.md)
386
- - [Deployment Intake Template](.github/ISSUE_TEMPLATE/deployment-intake.md)
387
- 4. Check scope and response targets:
388
- - [Support Boundaries](docs/SUPPORT-BOUNDARIES.md)
389
- - [Troubleshooting Guide](docs/TROUBLESHOOTING.md)
434
+ - [Bug Report Template](https://github.com/jtalk22/slack-mcp-server/issues/new?template=bug_report.md)
435
+ - [Deployment Intake Template](https://github.com/jtalk22/slack-mcp-server/issues/new?template=deployment-intake.md)
436
+ 4. For guided hosted rollout support:
437
+ - [GitHub Discussions](https://github.com/jtalk22/slack-mcp-server/discussions)
438
+ 5. Check scope and response targets:
439
+ - [Support Boundaries](https://github.com/jtalk22/slack-mcp-server/blob/main/docs/SUPPORT-BOUNDARIES.md)
440
+ - [Troubleshooting Guide](https://github.com/jtalk22/slack-mcp-server/blob/main/docs/TROUBLESHOOTING.md)
390
441
 
391
442
  ---
392
443
 
@@ -472,13 +523,13 @@ slack-mcp-server/
472
523
 
473
524
  PRs welcome. Run `node --check` on modified files before submitting.
474
525
 
475
- If you find this project useful, consider starring the repo.
526
+ If this project saves you setup time, consider starring the repository.
476
527
 
477
528
  ---
478
529
 
479
530
  ## License
480
531
 
481
- MIT - See [LICENSE](LICENSE)
532
+ MIT - See LICENSE
482
533
 
483
534
  ---
484
535
 
@@ -0,0 +1,67 @@
1
+ # Cloudflare Browser Toolkit
2
+
3
+ Use Cloudflare Browser Rendering from this repo to run resilient page checks and captures when local browser automation is blocked.
4
+
5
+ ## Prerequisites
6
+
7
+ - `CLOUDFLARE_ACCOUNT_ID` set
8
+ - `CLOUDFLARE_API_TOKEN` **or** `CF_TERRAFORM_TOKEN` set
9
+ - Token needs Browser Rendering access
10
+ - Account API tokens are supported (recommended for this workflow)
11
+
12
+ ## Verify Access
13
+
14
+ ```bash
15
+ npm run cf:browser -- verify
16
+ ```
17
+
18
+ The verifier checks account-token auth (`/accounts/{account_id}/tokens/verify`) first and falls back to user-token verification automatically.
19
+
20
+ ## Quick Commands
21
+
22
+ Rendered HTML:
23
+
24
+ ```bash
25
+ npm run cf:browser -- content "https://example.com"
26
+ ```
27
+
28
+ Markdown extract:
29
+
30
+ ```bash
31
+ npm run cf:browser -- markdown "https://example.com"
32
+ ```
33
+
34
+ Link extraction:
35
+
36
+ ```bash
37
+ npm run cf:browser -- links "https://example.com"
38
+ ```
39
+
40
+ Selector scrape:
41
+
42
+ ```bash
43
+ npm run cf:browser -- scrape "https://example.com" --selectors "h1,.card a"
44
+ ```
45
+
46
+ Screenshot:
47
+
48
+ ```bash
49
+ npm run cf:browser -- screenshot "https://example.com" --out ./tmp/example.png --type png
50
+ ```
51
+
52
+ PDF:
53
+
54
+ ```bash
55
+ npm run cf:browser -- pdf "https://example.com" --out ./tmp/example.pdf
56
+ ```
57
+
58
+ Structured JSON:
59
+
60
+ ```bash
61
+ npm run cf:browser -- json "https://example.com" --schema '{"title":"string","links":["string"]}'
62
+ ```
63
+
64
+ ## Notes
65
+
66
+ - This toolkit is for page rendering, extraction, and evidence capture.
67
+ - It does not manage third-party account logins for posting workflows.
@@ -15,7 +15,7 @@ Use this guide to choose the right operating mode before rollout.
15
15
  |------|---------------|----------|---------------|----------|-------|
16
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
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 |
18
+ | Hosted MCP (`http`) | `node src/server-http.js` | Controlled hosted integration | Env-injected Slack token/cookie + HTTP bearer token | Remote endpoint | `/mcp` is bearer-protected by default; configure CORS allowlist |
19
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
20
 
21
21
  ## Team Deployment Guidance
@@ -44,5 +44,12 @@ If you are deploying for more than one operator:
44
44
  ### Hosted (`http` or Worker)
45
45
 
46
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.
47
+ 2. Verify HTTP auth behavior:
48
+ - missing `SLACK_MCP_HTTP_AUTH_TOKEN` returns `503`
49
+ - bad bearer token returns `401`
50
+ - valid bearer token succeeds
51
+ 3. Verify CORS behavior:
52
+ - denied by default
53
+ - allowed origins work when listed in `SLACK_MCP_HTTP_ALLOWED_ORIGINS`
54
+ 4. Confirm `slack_get_thread`, `slack_search_messages`, and `slack_users_info` behavior.
55
+ 5. Confirm token handling mode (ephemeral vs env persistence) is documented.
package/docs/HN-LAUNCH.md CHANGED
@@ -1,61 +1,72 @@
1
- # HN Launch Kit (v2.0.0)
1
+ # HN Launch Kit (v3.0.0)
2
2
 
3
- Use this file for Show HN posting and first-comment follow-up.
3
+ Use this for Show HN and follow-up comments.
4
4
 
5
5
  ## Title Options
6
6
 
7
- - `Show HN: Slack MCP Server v2.0.0 (deterministic Slack MCP diagnostics)`
8
- - `Show HN: Slack MCP Server v2.0.0 (session-based Slack access, stable contracts)`
9
- - `Show HN: Slack MCP Server v2.0.0 (local-first Slack context for Claude)`
7
+ - `Show HN: Slack MCP Server v3.0.0 (secure-default hosted mode, local-first unchanged)`
8
+ - `Show HN: Slack MCP Server v3.0.0 (session-based Slack access for MCP clients)`
9
+ - `Show HN: Slack MCP Server v3.0.0 (hosted HTTP now auth-by-default)`
10
10
 
11
- ## Launch Post Template
11
+ ## Main Post Draft
12
12
 
13
13
  ```md
14
- Released `@jtalk22/slack-mcp@2.0.0` today.
14
+ Released `@jtalk22/slack-mcp@3.0.0`.
15
15
 
16
- This release focuses on install reliability and deterministic diagnostics:
17
- - read-only `--status` behavior enforced in install-path verification
18
- - deterministic `--doctor` exits (`0/1/2/3`)
19
- - structured MCP/web error payloads for triage consistency
20
- - token health handles missing timestamp as unknown age, not false critical
21
- - no MCP tool renames or removals
16
+ This release keeps local session-mirroring intact (`stdio`, `web`) and hardens hosted HTTP defaults:
17
+ - `/mcp` requires bearer auth by default
18
+ - CORS requires explicit origin allowlisting
19
+ - no MCP tool renames/removals
20
+ - `--doctor` stays deterministic (`0/1/2/3`)
21
+ - `--status` stays read-only
22
22
 
23
- Verify:
24
- - `npx -y @jtalk22/slack-mcp --version`
25
- - `npx -y @jtalk22/slack-mcp --doctor`
26
- - `npx -y @jtalk22/slack-mcp --status`
23
+ Verify in 30 seconds:
24
+ - `npx -y @jtalk22/slack-mcp@latest --version`
25
+ - `npx -y @jtalk22/slack-mcp@latest --doctor`
26
+ - `npx -y @jtalk22/slack-mcp@latest --status`
27
27
 
28
28
  Repo: https://github.com/jtalk22/slack-mcp-server
29
29
  npm: https://www.npmjs.com/package/@jtalk22/slack-mcp
30
+ Release notes: https://github.com/jtalk22/slack-mcp-server/blob/main/.github/v3.0.0-release-notes.md
31
+ Maintainer/operator: `jtalk22` (`james@revasser.nyc`)
30
32
  ```
31
33
 
32
34
  ## First Comment Draft
33
35
 
34
36
  ```md
35
- Quick notes:
36
- - Default path is local-first (`stdio`) and remains fully supported.
37
- - `--status` is read-only by design in this release.
38
- - `--doctor` has deterministic exit codes for automation and triage.
39
- - If registry pages lag, metadata is propagating; npm and GitHub release are authoritative first.
40
-
41
- If anything fails, include OS, Node version, runtime mode (`stdio|web|http|worker`), and exact output.
37
+ Additional operator notes:
38
+ - Local users (`stdio`, `web`) do not need migration.
39
+ - Hosted users need `SLACK_MCP_HTTP_AUTH_TOKEN` and `SLACK_MCP_HTTP_ALLOWED_ORIGINS` configured.
40
+ - Emergency local fallback is available via `SLACK_MCP_HTTP_INSECURE=1`.
41
+
42
+ If something fails, include:
43
+ - OS + Node version
44
+ - runtime mode (`stdio|web|http|worker`)
45
+ - exact command + output
42
46
  ```
43
47
 
44
- ## FAQ Macro
48
+ ## Reply Macros
49
+
50
+ ### Why not Slack OAuth?
51
+
52
+ Session mirroring uses the access already present in the signed-in Slack web session, which is useful for operator workflows where a bot scope model is too limiting.
53
+
54
+ ### Is hosted required?
55
+
56
+ No. Local-first use is still the default and fully supported.
57
+
58
+ ### Did the tool API change?
59
+
60
+ No MCP tool names were removed or renamed in `v3.0.0`.
45
61
 
46
- ### Why session-based instead of OAuth app scopes?
47
- Session mirroring provides the same access visible in the signed-in Slack web session.
62
+ ### Why a major version?
48
63
 
49
- ### Is hosted deployment required?
50
- No. Local operator path is primary. Hosted paths are optional.
64
+ Hosted HTTP defaults changed to auth-by-default behavior, which can change existing hosted deployments.
51
65
 
52
- ### Are tool contracts changed in v2.0.0?
53
- No. This release keeps existing MCP tool names.
66
+ ### What should users run first?
54
67
 
55
- ### What should I run first?
56
- Use:
57
68
  ```bash
58
- npx -y @jtalk22/slack-mcp --version
59
- npx -y @jtalk22/slack-mcp --doctor
60
- npx -y @jtalk22/slack-mcp --status
69
+ npx -y @jtalk22/slack-mcp@latest --version
70
+ npx -y @jtalk22/slack-mcp@latest --doctor
71
+ npx -y @jtalk22/slack-mcp@latest --status
61
72
  ```
package/docs/INDEX.md CHANGED
@@ -13,23 +13,27 @@ Start here for setup, compatibility checks, operations, and support.
13
13
  ## Operations
14
14
 
15
15
  - [Deployment Modes](DEPLOYMENT-MODES.md)
16
+ - [Cloudflare Browser Toolkit](CLOUDFLARE-BROWSER-TOOLKIT.md)
16
17
  - [Use Case Recipes](USE_CASE_RECIPES.md)
17
18
  - [Support Boundaries](SUPPORT-BOUNDARIES.md)
18
19
 
19
20
  ## Launch and Communication
20
21
 
21
22
  - [HN Launch Kit](HN-LAUNCH.md)
22
- - [Launch Copy (v2.0.0)](LAUNCH-COPY-v2.0.0.md)
23
+ - [Launch Copy (v3.0.0)](LAUNCH-COPY-v3.0.0.md)
23
24
  - [Launch Ops Runbook](LAUNCH-OPS.md)
24
25
  - [Capability Matrix](LAUNCH-MATRIX.md)
25
26
  - [Install Proof Block](INSTALL-PROOF.md)
27
+ - [Release Notes (v3.0.0)](../.github/v3.0.0-release-notes.md)
26
28
  - [Communication Style](COMMUNICATION-STYLE.md)
27
- - [Release Health Guide](RELEASE-HEALTH.md)
28
- - [Latest Release Health Snapshot](release-health/latest.md)
29
- - [Version Parity Report](release-health/version-parity.md)
30
- - [Launch Log Template](release-health/launch-log-template.md)
31
29
  - [Changelog](../CHANGELOG.md)
32
30
 
31
+ ## Public Health
32
+
33
+ - [Latest Public Health Snapshot](release-health/latest.md)
34
+ - [Version Parity](release-health/version-parity.md)
35
+ - [State of Union (2026-02-28)](release-health/state-of-union-2026-02-28.md)
36
+
33
37
  ## Issue Intake
34
38
 
35
39
  - [Bug Report Template](../.github/ISSUE_TEMPLATE/bug_report.md)
@@ -1,15 +1,15 @@
1
- # Install Proof Block (v2.0.0)
1
+ # Install Proof Block (v3.0.0)
2
2
 
3
3
  Use this command block in release notes, HN/X/Reddit follow-ups, and issue replies.
4
4
 
5
5
  ```bash
6
- npx -y @jtalk22/slack-mcp --version
7
- npx -y @jtalk22/slack-mcp --doctor
8
- npx -y @jtalk22/slack-mcp --status
6
+ npx -y @jtalk22/slack-mcp@latest --version
7
+ npx -y @jtalk22/slack-mcp@latest --doctor
8
+ npx -y @jtalk22/slack-mcp@latest --status
9
9
  ```
10
10
 
11
11
  Expected:
12
- - `--version` prints `slack-mcp-server v2.0.0`
12
+ - `--version` prints `slack-mcp-server v3.0.0`
13
13
  - `--doctor` exits with:
14
14
  - `0` ready
15
15
  - `1` missing credentials
@@ -0,0 +1,101 @@
1
+ # Launch Copy (v3.0.0)
2
+
3
+ Canonical text blocks for GitHub release surfaces, listings, and operator updates.
4
+
5
+ ## Short Summary (Public)
6
+
7
+ `@jtalk22/slack-mcp v3.0.0` is live. `v3.0.0` flips hosted `/mcp` from permissive to secure-default without breaking local workflows. Local-first operation stays unchanged (`stdio`, `web`) while hosted HTTP now requires bearer authentication (`SLACK_MCP_HTTP_AUTH_TOKEN`) and explicit origin allowlisting (`SLACK_MCP_HTTP_ALLOWED_ORIGINS`). The major version reflects this hosted behavior shift; MCP tool names remain stable. Diagnostics remain deterministic (`--doctor` returns `0|1|2|3`), and `--status` remains read-only. Public demo/media checks are now included in web verification so broken assets are caught before publish. Maintainer/operator: `jtalk22` (`james@revasser.nyc`).
8
+
9
+ ## GitHub Release Block
10
+
11
+ ````md
12
+ `v3.0.0` flips hosted `/mcp` from permissive to secure-default without breaking local workflows.
13
+
14
+ ```bash
15
+ npx -y @jtalk22/slack-mcp@latest --version
16
+ npx -y @jtalk22/slack-mcp@latest --doctor
17
+ npx -y @jtalk22/slack-mcp@latest --status
18
+ ```
19
+
20
+ What changed:
21
+ - `/mcp` requires bearer auth by default
22
+ - CORS is origin-allowlist driven (`SLACK_MCP_HTTP_ALLOWED_ORIGINS`)
23
+ - no MCP tool renames/removals
24
+ - deterministic diagnostics are preserved
25
+ ````
26
+
27
+ ## Hosted Migration Block
28
+
29
+ ````md
30
+ Hosted migration in under a minute:
31
+ ```bash
32
+ export SLACK_TOKEN=xoxc-...
33
+ export SLACK_COOKIE=xoxd-...
34
+ export SLACK_MCP_HTTP_AUTH_TOKEN=change-this
35
+ export SLACK_MCP_HTTP_ALLOWED_ORIGINS=https://claude.ai
36
+ node src/server-http.js
37
+ ```
38
+
39
+ Requests must include:
40
+ `Authorization: Bearer <SLACK_MCP_HTTP_AUTH_TOKEN>`
41
+
42
+ Emergency local fallback only:
43
+ `SLACK_MCP_HTTP_INSECURE=1 node src/server-http.js`
44
+ ````
45
+
46
+ ## v3 Quick Proof Maintainer Comment
47
+
48
+ ````md
49
+ Maintainer update:
50
+ `v3.0.0` flips hosted `/mcp` from permissive to secure-default without breaking local workflows.
51
+
52
+ ```bash
53
+ npx -y @jtalk22/slack-mcp@latest --version
54
+ npx -y @jtalk22/slack-mcp@latest --doctor
55
+ npx -y @jtalk22/slack-mcp@latest --status
56
+ ```
57
+
58
+ Hosted migration in under a minute:
59
+ ```bash
60
+ export SLACK_TOKEN=xoxc-...
61
+ export SLACK_COOKIE=xoxd-...
62
+ export SLACK_MCP_HTTP_AUTH_TOKEN=change-this
63
+ export SLACK_MCP_HTTP_ALLOWED_ORIGINS=https://claude.ai
64
+ node src/server-http.js
65
+ ```
66
+
67
+ If you hit a blocker, include runtime mode + exact output.
68
+ ````
69
+
70
+ ## GitHub Discussion Announcement
71
+
72
+ ```md
73
+ `v3.0.0` is published.
74
+
75
+ - Hosted HTTP now enforces auth-by-default and explicit CORS policy.
76
+ - Local-first paths (`stdio`, `web`) remain unchanged.
77
+ - MCP tool names remain unchanged.
78
+
79
+ If you hit a deployment blocker, open deployment intake and include runtime mode + exact output.
80
+ ```
81
+
82
+ ## Listing Snippet (awesome-mcp-servers / registries)
83
+
84
+ ```md
85
+ Session-based Slack MCP server for local-first operators. `v3.0.0` hardens hosted HTTP defaults (bearer auth + origin allowlist) while keeping local tool contracts stable.
86
+ ```
87
+
88
+ ## Support Intake Snippet
89
+
90
+ ```md
91
+ Need guided hosted deployment help?
92
+ - Open deployment intake: `https://github.com/jtalk22/slack-mcp-server/issues/new?template=deployment-intake.md`
93
+ - Continue in Discussions: `https://github.com/jtalk22/slack-mcp-server/discussions`
94
+ - Support ongoing maintenance: `https://github.com/sponsors/jtalk22`, `https://ko-fi.com/jtalk22`, `https://buymeacoffee.com/jtalk22`
95
+ ```
96
+
97
+ ## Propagation Note
98
+
99
+ Use when listing or registry caches lag:
100
+
101
+ `Release is published. Metadata propagation is in progress as of <UTC timestamp>.`