@jtalk22/slack-mcp 3.2.3 → 3.2.5
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 +33 -6
- package/docs/API.md +1 -1
- package/docs/SETUP.md +7 -7
- package/docs/TROUBLESHOOTING.md +1 -1
- package/lib/public-metadata.js +87 -0
- package/lib/public-pages.js +179 -0
- package/package.json +13 -5
- package/public/index.html +2 -2
- package/public/share.html +22 -12
- package/scripts/setup-wizard.js +2 -1
- package/server.json +3 -3
- package/src/server-http.js +2 -1
- package/src/server.js +2 -2
- package/src/web-server.js +3 -3
package/README.md
CHANGED
|
@@ -2,10 +2,23 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://www.npmjs.com/package/@jtalk22/slack-mcp)
|
|
4
4
|
[](https://www.npmjs.com/package/@jtalk22/slack-mcp)
|
|
5
|
-
[](https://registry.modelcontextprotocol.io)
|
|
6
6
|
[](https://opensource.org/licenses/MIT)
|
|
7
7
|
|
|
8
|
-
Give Claude your Slack. 16 tools
|
|
8
|
+
Give Claude your Slack. 16 self-hosted tools for channels, search, replies, reactions, unread triage, and user search. Self-host free or use Slack MCP Cloud for Claude-first managed transport, Gemini CLI support, hosted credential handling, deployment review, and procurement-ready security review.
|
|
9
|
+
|
|
10
|
+
## Verify & Proof
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
npx -y @jtalk22/slack-mcp --setup
|
|
14
|
+
npx -y @jtalk22/slack-mcp@latest --version
|
|
15
|
+
npx -y @jtalk22/slack-mcp@latest --doctor
|
|
16
|
+
npx -y @jtalk22/slack-mcp@latest --status
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
[20-second demo](https://jtalk22.github.io/slack-mcp-server/public/demo-video.html) · [Interactive demo](https://jtalk22.github.io/slack-mcp-server/public/demo.html) · [Start here discussion](https://github.com/jtalk22/slack-mcp-server/discussions/12) · [Latest release notes](https://github.com/jtalk22/slack-mcp-server/releases/latest) · [Release-day runbook](docs/LAUNCH-OPS.md) · [Commercial surface map](docs/COMMERCIAL-SURFACE.md) · [Distribution ledger](docs/DISTRIBUTION-LEDGER.md) · [Release health snapshot](docs/release-health/latest.md) · [Version parity report](docs/release-health/version-parity.md) · [Cloud pricing](https://mcp.revasserlabs.com/pricing?utm_source=github&utm_medium=readme&utm_campaign=slack_mcp_cloud) · [Workflows](https://mcp.revasserlabs.com/workflows?utm_source=github&utm_medium=readme&utm_campaign=slack_mcp_cloud) · [Gemini CLI](https://mcp.revasserlabs.com/gemini-cli?utm_source=github&utm_medium=readme&utm_campaign=slack_mcp_cloud) · [Readiness](https://mcp.revasserlabs.com/readiness?utm_source=github&utm_medium=readme&utm_campaign=slack_mcp_cloud) · [Cloud deployment](https://mcp.revasserlabs.com/deployment?utm_source=github&utm_medium=readme&utm_campaign=slack_mcp_cloud) · [Cloud security](https://mcp.revasserlabs.com/security?utm_source=github&utm_medium=readme&utm_campaign=slack_mcp_cloud) · [Cloud support](https://mcp.revasserlabs.com/support?utm_source=github&utm_medium=readme&utm_campaign=slack_mcp_cloud)
|
|
20
|
+
|
|
21
|
+
[](https://jtalk22.github.io/slack-mcp-server/public/demo-video.html)
|
|
9
22
|
|
|
10
23
|
## Tools
|
|
11
24
|
|
|
@@ -32,23 +45,37 @@ All tools carry [MCP safety annotations](https://modelcontextprotocol.io/specifi
|
|
|
32
45
|
|
|
33
46
|
\* `slack_refresh_tokens` modifies local token file only — no external Slack state.
|
|
34
47
|
|
|
35
|
-
## Cloud
|
|
48
|
+
## Cloud
|
|
49
|
+
|
|
50
|
+
Slack MCP Cloud provides 15 managed tools with hosted credential handling. Team adds 3 AI compound workflows for summaries, action items, and decisions. Claude is the primary path; Gemini CLI is the second supported client path on the hosted endpoint.
|
|
36
51
|
|
|
37
|
-
|
|
52
|
+
- Self-host if you want 16 tools, npm or Docker, and full operator control over runtime and tokens.
|
|
53
|
+
- Use Cloud if you want one remote endpoint, hosted credential handling, deployment review, buyer-facing security review, support, and a hosted account surface.
|
|
54
|
+
- Solo starts at `$19/mo`; Team is `$49/mo` and adds 3 AI workflows plus higher request capacity.
|
|
55
|
+
- Turnkey Team Launch starts at `$2.5k+`; Managed Reliability starts at `$800/mo+` for teams where rollout and operational continuity matter more than raw seat count.
|
|
38
56
|
|
|
39
57
|
| Plan | Price | Includes |
|
|
40
58
|
|------|-------|----------|
|
|
41
59
|
| Solo | $19/mo | 15 standard tools, AES-256-GCM encrypted storage, 5K requests/mo |
|
|
42
60
|
| Team | $49/mo | 15 standard + 3 AI compound tools, 3 workspaces, 25K requests/mo |
|
|
61
|
+
| Turnkey Team Launch | $2.5k+ | Deployment review, rollout sequencing, client setup guidance, first-production-use path |
|
|
62
|
+
| Managed Reliability | $800/mo+ | Ongoing operating review, token-health follow-up, workflow continuity support |
|
|
63
|
+
|
|
64
|
+
[Pricing](https://mcp.revasserlabs.com/pricing?utm_source=github&utm_medium=readme&utm_campaign=slack_mcp_cloud) · [Workflows](https://mcp.revasserlabs.com/workflows?utm_source=github&utm_medium=readme&utm_campaign=slack_mcp_cloud) · [Gemini CLI](https://mcp.revasserlabs.com/gemini-cli?utm_source=github&utm_medium=readme&utm_campaign=slack_mcp_cloud) · [Readiness](https://mcp.revasserlabs.com/readiness?utm_source=github&utm_medium=readme&utm_campaign=slack_mcp_cloud) · [Cloud Docs](https://mcp.revasserlabs.com/docs?utm_source=github&utm_medium=readme&utm_campaign=slack_mcp_cloud) · [Security & Procurement](https://mcp.revasserlabs.com/security?utm_source=github&utm_medium=readme&utm_campaign=slack_mcp_cloud) · [Procurement Brief](https://mcp.revasserlabs.com/procurement?utm_source=github&utm_medium=readme&utm_campaign=slack_mcp_cloud) · [Account](https://mcp.revasserlabs.com/account?utm_source=github&utm_medium=readme&utm_campaign=slack_mcp_cloud) · [Deployment Review](https://mcp.revasserlabs.com/deployment?utm_source=github&utm_medium=readme&utm_campaign=slack_mcp_cloud) · [Cloud Support](https://mcp.revasserlabs.com/support?utm_source=github&utm_medium=readme&utm_campaign=slack_mcp_cloud) · [Privacy Policy](https://mcp.revasserlabs.com/privacy?utm_source=github&utm_medium=readme&utm_campaign=slack_mcp_cloud)
|
|
65
|
+
|
|
66
|
+
For rollout help or managed deployment review, use [Cloud deployment review](https://mcp.revasserlabs.com/deployment?utm_source=github&utm_medium=readme&utm_campaign=slack_mcp_cloud). For buyer-facing controls, storage, analytics, and procurement questions, use [Cloud security](https://mcp.revasserlabs.com/security?utm_source=github&utm_medium=readme&utm_campaign=slack_mcp_cloud) and the [procurement brief](https://mcp.revasserlabs.com/procurement?utm_source=github&utm_medium=readme&utm_campaign=slack_mcp_cloud). Reproducible self-host bugs stay in standard issues; hosted operational questions belong on [Cloud support](https://mcp.revasserlabs.com/support?utm_source=github&utm_medium=readme&utm_campaign=slack_mcp_cloud).
|
|
43
67
|
|
|
44
|
-
[
|
|
68
|
+
Operated by Revasser. Self-host support is best-effort; managed rollout and Cloud support stay on [mcp.revasserlabs.com](https://mcp.revasserlabs.com/?utm_source=github&utm_medium=readme&utm_campaign=slack_mcp_cloud).
|
|
45
69
|
|
|
46
|
-
## Install (Self-Hosted)
|
|
70
|
+
## Install & Verify (Self-Hosted)
|
|
47
71
|
|
|
48
72
|
**Runtime:** Node.js 20+
|
|
49
73
|
|
|
50
74
|
```bash
|
|
51
75
|
npx -y @jtalk22/slack-mcp --setup
|
|
76
|
+
npx -y @jtalk22/slack-mcp@latest --version
|
|
77
|
+
npx -y @jtalk22/slack-mcp@latest --doctor
|
|
78
|
+
npx -y @jtalk22/slack-mcp@latest --status
|
|
52
79
|
```
|
|
53
80
|
|
|
54
81
|
The setup wizard handles token extraction and validation automatically.
|
package/docs/API.md
CHANGED
package/docs/SETUP.md
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
# Setup Guide
|
|
2
2
|
|
|
3
|
-
## Cloud
|
|
3
|
+
## Cloud
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Use **Slack MCP Cloud** when you want a managed endpoint rather than local token handling:
|
|
6
6
|
|
|
7
|
-
1. Go to [
|
|
7
|
+
1. Go to [Slack MCP Cloud](https://mcp.revasserlabs.com) and purchase a plan ($19/mo Solo, $49/mo Team)
|
|
8
8
|
2. After checkout, you'll receive an API key and ready-to-paste config for Claude Desktop / Claude Code
|
|
9
|
-
3.
|
|
9
|
+
3. Use the hosted endpoint and API key — one URL, 15 managed tools. Team adds 3 AI workflows.
|
|
10
10
|
|
|
11
11
|
**Claude Desktop config (Cloud):**
|
|
12
12
|
```json
|
|
@@ -34,7 +34,7 @@ If you want to skip local setup entirely, use **Slack MCP Cloud**:
|
|
|
34
34
|
}
|
|
35
35
|
```
|
|
36
36
|
|
|
37
|
-
If you prefer self-hosting
|
|
37
|
+
If you prefer self-hosting, continue below.
|
|
38
38
|
|
|
39
39
|
---
|
|
40
40
|
|
|
@@ -46,7 +46,7 @@ If you prefer self-hosting (free), continue below.
|
|
|
46
46
|
- Google Chrome (for token extraction on macOS)
|
|
47
47
|
- macOS (for Keychain storage - other platforms use file storage only)
|
|
48
48
|
|
|
49
|
-
### 1. Install via npm
|
|
49
|
+
### 1. Install via npm
|
|
50
50
|
|
|
51
51
|
```bash
|
|
52
52
|
npm install -g @jtalk22/slack-mcp
|
|
@@ -83,7 +83,7 @@ Expected:
|
|
|
83
83
|
|
|
84
84
|
### 3. Get Slack Tokens
|
|
85
85
|
|
|
86
|
-
**Option A: Setup Wizard
|
|
86
|
+
**Option A: Setup Wizard**
|
|
87
87
|
|
|
88
88
|
1. Open Chrome
|
|
89
89
|
2. Navigate to https://app.slack.com and log in
|
package/docs/TROUBLESHOOTING.md
CHANGED
|
@@ -46,7 +46,7 @@ If `--version` fails here, the issue is install/runtime path, not Slack credenti
|
|
|
46
46
|
|
|
47
47
|
**Cause:** AI compound tools (`slack_channel_summary`, `slack_extract_action_items`, `slack_find_decisions`) are Team plan only ($49/mo).
|
|
48
48
|
|
|
49
|
-
**Solution:** Upgrade to Team plan for AI compound tools, or use the standard
|
|
49
|
+
**Solution:** Upgrade to Team plan for AI compound tools, or use the 15 standard managed tools available on all Cloud plans.
|
|
50
50
|
|
|
51
51
|
### Cloud Endpoint Health Check
|
|
52
52
|
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
|
|
3
|
+
const packageJson = JSON.parse(
|
|
4
|
+
readFileSync(new URL("../package.json", import.meta.url), "utf8")
|
|
5
|
+
);
|
|
6
|
+
|
|
7
|
+
export const RELEASE_VERSION = packageJson.version;
|
|
8
|
+
|
|
9
|
+
function withTrackedUrl(url, medium) {
|
|
10
|
+
const tracked = new URL(url);
|
|
11
|
+
tracked.searchParams.set("utm_source", "github");
|
|
12
|
+
tracked.searchParams.set("utm_medium", medium);
|
|
13
|
+
tracked.searchParams.set("utm_campaign", "slack_mcp_cloud");
|
|
14
|
+
return tracked.toString();
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export const PUBLIC_METADATA = Object.freeze({
|
|
18
|
+
projectName: "slack-mcp-server",
|
|
19
|
+
packageName: packageJson.name,
|
|
20
|
+
canonicalShortDescription: packageJson.description,
|
|
21
|
+
canonicalRepoUrl: "https://github.com/jtalk22/slack-mcp-server",
|
|
22
|
+
canonicalSiteUrl: "https://mcp.revasserlabs.com",
|
|
23
|
+
cloudPricingUrl: "https://mcp.revasserlabs.com/pricing",
|
|
24
|
+
cloudWorkflowsUrl: "https://mcp.revasserlabs.com/workflows",
|
|
25
|
+
cloudGeminiCliUrl: "https://mcp.revasserlabs.com/gemini-cli",
|
|
26
|
+
cloudReadinessUrl: "https://mcp.revasserlabs.com/readiness",
|
|
27
|
+
cloudDocsUrl: "https://mcp.revasserlabs.com/docs",
|
|
28
|
+
cloudSecurityUrl: "https://mcp.revasserlabs.com/security",
|
|
29
|
+
cloudProcurementUrl: "https://mcp.revasserlabs.com/procurement",
|
|
30
|
+
cloudSupportUrl: "https://mcp.revasserlabs.com/support",
|
|
31
|
+
cloudDeploymentUrl: "https://mcp.revasserlabs.com/deployment",
|
|
32
|
+
cloudSelfHostUrl: "https://mcp.revasserlabs.com/self-host",
|
|
33
|
+
cloudAccountUrl: "https://mcp.revasserlabs.com/account",
|
|
34
|
+
cloudUseCasesRootUrl: "https://mcp.revasserlabs.com/use-cases",
|
|
35
|
+
cloudStatusUrl: "https://mcp.revasserlabs.com/status",
|
|
36
|
+
supportEmail: "support@revasserlabs.com",
|
|
37
|
+
privacyEmail: "privacy@revasserlabs.com",
|
|
38
|
+
primaryClient: "Claude",
|
|
39
|
+
secondaryClient: "Gemini CLI",
|
|
40
|
+
selfHostedToolCount: 16,
|
|
41
|
+
cloudManagedToolCount: 15,
|
|
42
|
+
teamAiWorkflowCount: 3,
|
|
43
|
+
cloudSoloPrice: "$19/mo",
|
|
44
|
+
cloudTeamPrice: "$49/mo",
|
|
45
|
+
cloudTurnkeyLaunchPrice: "$2.5k+",
|
|
46
|
+
cloudManagedReliabilityPrice: "$800/mo+",
|
|
47
|
+
tracked: Object.freeze({
|
|
48
|
+
pages: Object.freeze({
|
|
49
|
+
pricing: withTrackedUrl("https://mcp.revasserlabs.com/pricing", "pages"),
|
|
50
|
+
workflows: withTrackedUrl("https://mcp.revasserlabs.com/workflows", "pages"),
|
|
51
|
+
geminiCli: withTrackedUrl("https://mcp.revasserlabs.com/gemini-cli", "pages"),
|
|
52
|
+
readiness: withTrackedUrl("https://mcp.revasserlabs.com/readiness", "pages"),
|
|
53
|
+
docs: withTrackedUrl("https://mcp.revasserlabs.com/docs", "pages"),
|
|
54
|
+
security: withTrackedUrl("https://mcp.revasserlabs.com/security", "pages"),
|
|
55
|
+
procurement: withTrackedUrl("https://mcp.revasserlabs.com/procurement", "pages"),
|
|
56
|
+
deployment: withTrackedUrl("https://mcp.revasserlabs.com/deployment", "pages"),
|
|
57
|
+
support: withTrackedUrl("https://mcp.revasserlabs.com/support", "pages"),
|
|
58
|
+
account: withTrackedUrl("https://mcp.revasserlabs.com/account", "pages"),
|
|
59
|
+
privacy: withTrackedUrl("https://mcp.revasserlabs.com/privacy", "pages"),
|
|
60
|
+
}),
|
|
61
|
+
readme: Object.freeze({
|
|
62
|
+
pricing: withTrackedUrl("https://mcp.revasserlabs.com/pricing", "readme"),
|
|
63
|
+
workflows: withTrackedUrl("https://mcp.revasserlabs.com/workflows", "readme"),
|
|
64
|
+
geminiCli: withTrackedUrl("https://mcp.revasserlabs.com/gemini-cli", "readme"),
|
|
65
|
+
readiness: withTrackedUrl("https://mcp.revasserlabs.com/readiness", "readme"),
|
|
66
|
+
docs: withTrackedUrl("https://mcp.revasserlabs.com/docs", "readme"),
|
|
67
|
+
security: withTrackedUrl("https://mcp.revasserlabs.com/security", "readme"),
|
|
68
|
+
procurement: withTrackedUrl("https://mcp.revasserlabs.com/procurement", "readme"),
|
|
69
|
+
deployment: withTrackedUrl("https://mcp.revasserlabs.com/deployment", "readme"),
|
|
70
|
+
support: withTrackedUrl("https://mcp.revasserlabs.com/support", "readme"),
|
|
71
|
+
account: withTrackedUrl("https://mcp.revasserlabs.com/account", "readme"),
|
|
72
|
+
privacy: withTrackedUrl("https://mcp.revasserlabs.com/privacy", "readme"),
|
|
73
|
+
}),
|
|
74
|
+
docs: Object.freeze({
|
|
75
|
+
pricing: withTrackedUrl("https://mcp.revasserlabs.com/pricing", "docs"),
|
|
76
|
+
workflows: withTrackedUrl("https://mcp.revasserlabs.com/workflows", "docs"),
|
|
77
|
+
geminiCli: withTrackedUrl("https://mcp.revasserlabs.com/gemini-cli", "docs"),
|
|
78
|
+
readiness: withTrackedUrl("https://mcp.revasserlabs.com/readiness", "docs"),
|
|
79
|
+
security: withTrackedUrl("https://mcp.revasserlabs.com/security", "docs"),
|
|
80
|
+
procurement: withTrackedUrl("https://mcp.revasserlabs.com/procurement", "docs"),
|
|
81
|
+
deployment: withTrackedUrl("https://mcp.revasserlabs.com/deployment", "docs"),
|
|
82
|
+
support: withTrackedUrl("https://mcp.revasserlabs.com/support", "docs"),
|
|
83
|
+
account: withTrackedUrl("https://mcp.revasserlabs.com/account", "docs"),
|
|
84
|
+
privacy: withTrackedUrl("https://mcp.revasserlabs.com/privacy", "docs"),
|
|
85
|
+
}),
|
|
86
|
+
}),
|
|
87
|
+
});
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
import { dirname, resolve } from "node:path";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
|
|
5
|
+
import { PUBLIC_METADATA } from "./public-metadata.js";
|
|
6
|
+
|
|
7
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
8
|
+
const ROOT = resolve(__dirname, "..");
|
|
9
|
+
const TEMPLATE_DIR = resolve(ROOT, "templates", "public-pages");
|
|
10
|
+
|
|
11
|
+
const GITHUB_PAGES_ROOT = "https://jtalk22.github.io/slack-mcp-server";
|
|
12
|
+
const GITHUB_DOCS_ROOT = `${PUBLIC_METADATA.canonicalRepoUrl}/blob/main/docs`;
|
|
13
|
+
const SOCIAL_IMAGE_URL = `${GITHUB_PAGES_ROOT}/docs/images/social-preview-v3.png`;
|
|
14
|
+
const ICON_URL = `${GITHUB_PAGES_ROOT}/docs/assets/icon-512.png`;
|
|
15
|
+
const NPM_URL = "https://www.npmjs.com/package/@jtalk22/slack-mcp";
|
|
16
|
+
const RELEASES_URL = `${PUBLIC_METADATA.canonicalRepoUrl}/releases/latest`;
|
|
17
|
+
const SETUP_URL = `${PUBLIC_METADATA.canonicalRepoUrl}/blob/main/docs/SETUP.md`;
|
|
18
|
+
const RELEASE_HEALTH_URL = `${GITHUB_DOCS_ROOT}/release-health/latest.md`;
|
|
19
|
+
const VERSION_PARITY_URL = `${GITHUB_DOCS_ROOT}/release-health/version-parity.md`;
|
|
20
|
+
const RUNBOOK_URL = `${GITHUB_DOCS_ROOT}/LAUNCH-OPS.md`;
|
|
21
|
+
const DEMO_VIDEO_URL = `${GITHUB_PAGES_ROOT}/docs/videos/demo-claude-mobile-20s.mp4`;
|
|
22
|
+
|
|
23
|
+
function template(name) {
|
|
24
|
+
return readFileSync(resolve(TEMPLATE_DIR, name), "utf8");
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
function replaceTokens(source, replacements) {
|
|
28
|
+
return source.replace(/\{\{([A-Z0-9_]+)\}\}/g, (match, key) => {
|
|
29
|
+
if (!(key in replacements)) {
|
|
30
|
+
throw new Error(`Missing template token: ${key}`);
|
|
31
|
+
}
|
|
32
|
+
return replacements[key];
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
function rootDecisionPanel() {
|
|
37
|
+
return `
|
|
38
|
+
<section class="stage" style="padding-top:0">
|
|
39
|
+
<div class="decision-grid" aria-label="Cloud versus self-host decision guide">
|
|
40
|
+
<article class="decision-card">
|
|
41
|
+
<span class="decision-label">Self-host</span>
|
|
42
|
+
<h2>16 tools and full operator control.</h2>
|
|
43
|
+
<p>Choose the open-source path if you want npm or Docker, local-first transport control, and direct ownership of token extraction, storage, and process management.</p>
|
|
44
|
+
<ul>
|
|
45
|
+
<li>stdio, web, and Docker paths stay fully under your control</li>
|
|
46
|
+
<li>Best fit for local development, custom transport, or internal operator ownership</li>
|
|
47
|
+
<li>Proof surfaces: install guide, release health, and version parity remain public</li>
|
|
48
|
+
</ul>
|
|
49
|
+
<p class="decision-links"><a href="${SETUP_URL}">Setup guide</a> · <a href="${VERSION_PARITY_URL}">Version parity</a> · <a href="${RELEASE_HEALTH_URL}">Release health</a></p>
|
|
50
|
+
</article>
|
|
51
|
+
<article class="decision-card accent">
|
|
52
|
+
<span class="decision-label">Cloud</span>
|
|
53
|
+
<h2>${PUBLIC_METADATA.cloudManagedToolCount} managed tools, ${PUBLIC_METADATA.teamAiWorkflowCount} Team AI workflows.</h2>
|
|
54
|
+
<p>Choose Cloud if you want one remote endpoint, hosted credential handling, deployment review, and an operational support path instead of running the transport yourself. ${PUBLIC_METADATA.primaryClient} stays primary; ${PUBLIC_METADATA.secondaryClient} is supported as the second client path.</p>
|
|
55
|
+
<ul>
|
|
56
|
+
<li>Solo: ${PUBLIC_METADATA.cloudSoloPrice} for the managed endpoint and hosted credential handling</li>
|
|
57
|
+
<li>Team: ${PUBLIC_METADATA.cloudTeamPrice} and adds ${PUBLIC_METADATA.teamAiWorkflowCount} AI workflows</li>
|
|
58
|
+
<li>Turnkey Team Launch: from ${PUBLIC_METADATA.cloudTurnkeyLaunchPrice}; Managed Reliability: from ${PUBLIC_METADATA.cloudManagedReliabilityPrice}</li>
|
|
59
|
+
</ul>
|
|
60
|
+
<p class="decision-links"><a href="${PUBLIC_METADATA.tracked.pages.pricing}">Pricing</a> · <a href="${PUBLIC_METADATA.tracked.pages.workflows}">Workflows</a> · <a href="${PUBLIC_METADATA.tracked.pages.geminiCli}">Gemini CLI</a> · <a href="${PUBLIC_METADATA.tracked.pages.deployment}">Deployment review</a> · <a href="${PUBLIC_METADATA.tracked.pages.security}">Security</a></p>
|
|
61
|
+
</article>
|
|
62
|
+
<article class="decision-card">
|
|
63
|
+
<span class="decision-label">Buyer proof</span>
|
|
64
|
+
<h2>Technical trust surfaces stay public.</h2>
|
|
65
|
+
<p>The static Pages root shows npm, GitHub release, and hosted status together. The hosted site publishes <code>/status</code>, <code>/pricing</code>, <code>/docs</code>, <code>/security</code>, <code>/deployment</code>, <code>/support</code>, and <code>/account</code> as the operator-facing Cloud surface.</p>
|
|
66
|
+
<ul>
|
|
67
|
+
<li>GitHub Pages reads the hosted <code>/status</code> contract live</li>
|
|
68
|
+
<li>Registry, npm, runtime parity, and hosted funnel reporting are tracked in the public reports</li>
|
|
69
|
+
<li>Rollout and security questions route to hosted review surfaces instead of ad hoc GitHub issues</li>
|
|
70
|
+
</ul>
|
|
71
|
+
<p class="decision-links"><a href="${RUNBOOK_URL}">Runbook</a> · <a href="${PUBLIC_METADATA.cloudStatusUrl}">Raw status JSON</a> · <a href="${PUBLIC_METADATA.tracked.pages.procurement}">Procurement</a> · <a href="${PUBLIC_METADATA.tracked.pages.readiness}">Readiness</a> · <a href="${PUBLIC_METADATA.tracked.pages.pricing}">Plans & offers</a></p>
|
|
72
|
+
</article>
|
|
73
|
+
</div>
|
|
74
|
+
</section>
|
|
75
|
+
`.trim();
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
function shareLinks() {
|
|
79
|
+
return `
|
|
80
|
+
<a href="${SETUP_URL}" rel="noopener">Install (\`--setup\`)</a>
|
|
81
|
+
<a href="${SETUP_URL}" rel="noopener">Verify (\`--version/--doctor/--status\`)</a>
|
|
82
|
+
<a href="${RELEASES_URL}" rel="noopener">Latest Release</a>
|
|
83
|
+
<a href="${PUBLIC_METADATA.tracked.pages.pricing}" rel="noopener">Pricing</a>
|
|
84
|
+
<a href="${PUBLIC_METADATA.tracked.pages.workflows}" rel="noopener">Workflows</a>
|
|
85
|
+
<a href="${PUBLIC_METADATA.tracked.pages.geminiCli}" rel="noopener">Gemini CLI</a>
|
|
86
|
+
<a href="${PUBLIC_METADATA.tracked.pages.docs}" rel="noopener">Cloud Docs</a>
|
|
87
|
+
<a href="${PUBLIC_METADATA.tracked.pages.security}" rel="noopener">Security</a>
|
|
88
|
+
<a href="${PUBLIC_METADATA.tracked.pages.procurement}" rel="noopener">Procurement</a>
|
|
89
|
+
<a href="${PUBLIC_METADATA.tracked.pages.deployment}" rel="noopener">Deployment Review</a>
|
|
90
|
+
<a href="${PUBLIC_METADATA.tracked.pages.support}" rel="noopener">Cloud Support</a>
|
|
91
|
+
<a href="${PUBLIC_METADATA.cloudUseCasesRootUrl}/support-triage?utm_source=github&utm_medium=pages&utm_campaign=slack_mcp_cloud" rel="noopener">Support Triage Use Case</a>
|
|
92
|
+
<a href="${GITHUB_PAGES_ROOT}/" rel="noopener">Autoplay Demo Landing</a>
|
|
93
|
+
<a href="${DEMO_VIDEO_URL}" rel="noopener">20s Mobile Clip</a>
|
|
94
|
+
<a href="${NPM_URL}" rel="noopener">npm Package</a>
|
|
95
|
+
<a href="${PUBLIC_METADATA.canonicalSiteUrl}" rel="noopener" style="background:rgba(240,194,70,0.18);border-color:rgba(240,194,70,0.45);color:#f0c246">Cloud</a>
|
|
96
|
+
`.trim();
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
function shareNote() {
|
|
100
|
+
return `<strong>Verify in 30 seconds:</strong> <code>--version</code>, <code>--doctor</code>, <code>--status</code>. Self-host gives ${PUBLIC_METADATA.selfHostedToolCount} tools and full operator control. Cloud starts at ${PUBLIC_METADATA.cloudSoloPrice} for ${PUBLIC_METADATA.cloudManagedToolCount} managed tools, deployment review, procurement-ready security, readiness guidance, and support. Team at ${PUBLIC_METADATA.cloudTeamPrice} adds ${PUBLIC_METADATA.teamAiWorkflowCount} AI workflows. ${PUBLIC_METADATA.primaryClient} is the primary path; ${PUBLIC_METADATA.secondaryClient} is supported on the hosted endpoint.`;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
function demoLinks() {
|
|
104
|
+
return `
|
|
105
|
+
<a href="${PUBLIC_METADATA.canonicalSiteUrl}" target="_blank" rel="noopener noreferrer" style="background:rgba(240,194,70,0.18);border-color:rgba(240,194,70,0.45);color:#f0c246">Cloud</a>
|
|
106
|
+
<a href="${NPM_URL}" target="_blank" rel="noopener noreferrer">npm Install</a>
|
|
107
|
+
<a href="${PUBLIC_METADATA.tracked.pages.pricing}" target="_blank" rel="noopener noreferrer">Pricing</a>
|
|
108
|
+
<a href="${PUBLIC_METADATA.tracked.pages.workflows}" target="_blank" rel="noopener noreferrer">Workflows</a>
|
|
109
|
+
<a href="${PUBLIC_METADATA.tracked.pages.geminiCli}" target="_blank" rel="noopener noreferrer">Gemini CLI</a>
|
|
110
|
+
<a href="${SETUP_URL}" target="_blank" rel="noopener noreferrer">Setup Guide</a>
|
|
111
|
+
<a href="${PUBLIC_METADATA.tracked.pages.docs}" target="_blank" rel="noopener noreferrer">Cloud Docs</a>
|
|
112
|
+
<a href="${PUBLIC_METADATA.tracked.pages.security}" target="_blank" rel="noopener noreferrer">Security</a>
|
|
113
|
+
<a href="${PUBLIC_METADATA.tracked.pages.procurement}" target="_blank" rel="noopener noreferrer">Procurement</a>
|
|
114
|
+
<a href="${PUBLIC_METADATA.tracked.pages.deployment}" target="_blank" rel="noopener noreferrer">Deployment Review</a>
|
|
115
|
+
<a href="${PUBLIC_METADATA.tracked.pages.support}" target="_blank" rel="noopener noreferrer">Cloud Support</a>
|
|
116
|
+
`.trim();
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
function demoNote() {
|
|
120
|
+
return `Self-host free for ${PUBLIC_METADATA.selfHostedToolCount} tools and full transport control, or use <a href="${PUBLIC_METADATA.tracked.pages.pricing}" target="_blank" rel="noopener noreferrer">Cloud</a> for ${PUBLIC_METADATA.cloudManagedToolCount} managed tools, deployment review, procurement-ready security, and support. Solo starts at ${PUBLIC_METADATA.cloudSoloPrice}; Team at ${PUBLIC_METADATA.cloudTeamPrice} adds ${PUBLIC_METADATA.teamAiWorkflowCount} AI workflows. Turnkey Team Launch starts at ${PUBLIC_METADATA.cloudTurnkeyLaunchPrice}; Managed Reliability starts at ${PUBLIC_METADATA.cloudManagedReliabilityPrice}.`;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
function demoFooterLinks() {
|
|
124
|
+
return `<a href="${PUBLIC_METADATA.canonicalRepoUrl}">GitHub</a> · <a href="${PUBLIC_METADATA.tracked.pages.pricing}" style="color:#f0c246;text-decoration:none;font-size:0.875rem">Cloud Plans</a> · <a href="${PUBLIC_METADATA.tracked.pages.workflows}" style="color:#94a3b8;text-decoration:none;font-size:0.875rem">Workflows</a> · <a href="${PUBLIC_METADATA.tracked.pages.geminiCli}" style="color:#94a3b8;text-decoration:none;font-size:0.875rem">Gemini CLI</a> · <a href="${PUBLIC_METADATA.tracked.pages.security}" style="color:#94a3b8;text-decoration:none;font-size:0.875rem">Security</a> · <a href="${PUBLIC_METADATA.tracked.pages.deployment}" style="color:#94a3b8;text-decoration:none;font-size:0.875rem">Deployment Review</a> · <a href="${PUBLIC_METADATA.tracked.pages.support}" style="color:#94a3b8;text-decoration:none;font-size:0.875rem">Cloud Support</a> · <a href="${NPM_URL}" style="color:#94a3b8;text-decoration:none;font-size:0.875rem">npm</a>`;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
function commonTokens() {
|
|
128
|
+
return {
|
|
129
|
+
CANONICAL_SITE_URL: PUBLIC_METADATA.canonicalSiteUrl,
|
|
130
|
+
CLOUD_PRICING_URL: PUBLIC_METADATA.tracked.pages.pricing,
|
|
131
|
+
CLOUD_WORKFLOWS_URL: PUBLIC_METADATA.tracked.pages.workflows,
|
|
132
|
+
CLOUD_GEMINI_CLI_URL: PUBLIC_METADATA.tracked.pages.geminiCli,
|
|
133
|
+
CLOUD_READINESS_URL: PUBLIC_METADATA.tracked.pages.readiness,
|
|
134
|
+
CLOUD_DOCS_URL: PUBLIC_METADATA.tracked.pages.docs,
|
|
135
|
+
CLOUD_SECURITY_URL: PUBLIC_METADATA.tracked.pages.security,
|
|
136
|
+
CLOUD_PROCUREMENT_URL: PUBLIC_METADATA.tracked.pages.procurement,
|
|
137
|
+
CLOUD_SUPPORT_URL: PUBLIC_METADATA.tracked.pages.support,
|
|
138
|
+
CLOUD_DEPLOYMENT_URL: PUBLIC_METADATA.tracked.pages.deployment,
|
|
139
|
+
CLOUD_STATUS_URL: PUBLIC_METADATA.cloudStatusUrl,
|
|
140
|
+
CLOUD_SELF_HOST_URL: PUBLIC_METADATA.cloudSelfHostUrl,
|
|
141
|
+
CLOUD_ACCOUNT_URL: PUBLIC_METADATA.cloudAccountUrl,
|
|
142
|
+
GITHUB_REPO_URL: PUBLIC_METADATA.canonicalRepoUrl,
|
|
143
|
+
GITHUB_PAGES_ROOT,
|
|
144
|
+
GITHUB_DOCS_ROOT,
|
|
145
|
+
ICON_URL,
|
|
146
|
+
SOCIAL_IMAGE_URL,
|
|
147
|
+
NPM_URL,
|
|
148
|
+
RELEASES_URL,
|
|
149
|
+
SETUP_URL,
|
|
150
|
+
RELEASE_HEALTH_URL,
|
|
151
|
+
VERSION_PARITY_URL,
|
|
152
|
+
RUNBOOK_URL,
|
|
153
|
+
SELF_HOSTED_TOOL_COUNT: String(PUBLIC_METADATA.selfHostedToolCount),
|
|
154
|
+
CLOUD_MANAGED_TOOL_COUNT: String(PUBLIC_METADATA.cloudManagedToolCount),
|
|
155
|
+
TEAM_AI_WORKFLOW_COUNT: String(PUBLIC_METADATA.teamAiWorkflowCount),
|
|
156
|
+
CLOUD_SOLO_PRICE: PUBLIC_METADATA.cloudSoloPrice,
|
|
157
|
+
CLOUD_TEAM_PRICE: PUBLIC_METADATA.cloudTeamPrice,
|
|
158
|
+
CLOUD_TURNKEY_LAUNCH_PRICE: PUBLIC_METADATA.cloudTurnkeyLaunchPrice,
|
|
159
|
+
CLOUD_MANAGED_RELIABILITY_PRICE: PUBLIC_METADATA.cloudManagedReliabilityPrice,
|
|
160
|
+
SUPPORT_EMAIL: PUBLIC_METADATA.supportEmail,
|
|
161
|
+
ROOT_DECISION_PANEL: rootDecisionPanel(),
|
|
162
|
+
SHARE_LINKS: shareLinks(),
|
|
163
|
+
SHARE_NOTE: shareNote(),
|
|
164
|
+
DEMO_LINKS: demoLinks(),
|
|
165
|
+
DEMO_NOTE: demoNote(),
|
|
166
|
+
DEMO_FOOTER_LINKS: demoFooterLinks(),
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
export function buildPublicPages() {
|
|
171
|
+
const tokens = commonTokens();
|
|
172
|
+
return {
|
|
173
|
+
"index.html": replaceTokens(template("index.html.tpl"), tokens),
|
|
174
|
+
"public/share.html": replaceTokens(template("share.html.tpl"), tokens),
|
|
175
|
+
"public/demo.html": replaceTokens(template("demo.html.tpl"), tokens),
|
|
176
|
+
"public/demo-video.html": replaceTokens(template("demo-video.html.tpl"), tokens),
|
|
177
|
+
"public/demo-claude.html": replaceTokens(template("demo-claude.html.tpl"), tokens),
|
|
178
|
+
};
|
|
179
|
+
}
|
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": "3.2.
|
|
5
|
-
"description": "
|
|
4
|
+
"version": "3.2.5",
|
|
5
|
+
"description": "Claude-first Slack MCP for self-host or managed Cloud, with Gemini CLI, deployment review, and secure-default HTTP.",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "src/server.js",
|
|
8
8
|
"bin": {
|
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
"tokens:clear": "node scripts/token-cli.js clear",
|
|
26
26
|
"screenshot": "node scripts/capture-screenshots.js",
|
|
27
27
|
"build:social-preview": "node scripts/build-social-preview.js",
|
|
28
|
+
"build:public-pages": "node scripts/generate-public-pages.js",
|
|
28
29
|
"build:demo-mobile": "node scripts/build-mobile-demo.js",
|
|
29
30
|
"build:demo-mobile:gif": "node scripts/build-mobile-demo.js --gif",
|
|
30
31
|
"record-demo": "node scripts/record-demo.js",
|
|
@@ -34,8 +35,13 @@
|
|
|
34
35
|
"metrics:release-health:delta": "node scripts/build-release-health-delta.js",
|
|
35
36
|
"impact:push:v3": "node scripts/impact-push-v3.js --dry-run",
|
|
36
37
|
"impact:push:v3:apply": "node scripts/impact-push-v3.js --apply",
|
|
38
|
+
"verify:attribution-guardrail": "node scripts/verify-attribution-guardrail.js",
|
|
39
|
+
"verify:public-pages": "node scripts/verify-generated-public-pages.js",
|
|
37
40
|
"verify:version-parity": "node scripts/check-version-parity.js",
|
|
38
|
-
"verify:
|
|
41
|
+
"verify:public-surface": "node scripts/check-public-surface-integrity.js",
|
|
42
|
+
"verify:release-dry-run": "node scripts/release-preflight.js",
|
|
43
|
+
"smoke:browser": "node scripts/browser-smoke.js",
|
|
44
|
+
"smoke:browser:live": "node scripts/browser-smoke.js --mode live"
|
|
39
45
|
},
|
|
40
46
|
"keywords": [
|
|
41
47
|
"claude",
|
|
@@ -49,7 +55,9 @@
|
|
|
49
55
|
"mcp-server",
|
|
50
56
|
"session-based",
|
|
51
57
|
"claude-code",
|
|
58
|
+
"gemini-cli",
|
|
52
59
|
"local-first",
|
|
60
|
+
"remote-mcp",
|
|
53
61
|
"session-mirroring",
|
|
54
62
|
"slack-mcp",
|
|
55
63
|
"secure-by-default",
|
|
@@ -60,9 +68,9 @@
|
|
|
60
68
|
"productivity"
|
|
61
69
|
],
|
|
62
70
|
"author": {
|
|
63
|
-
"name": "
|
|
71
|
+
"name": "Revasser",
|
|
64
72
|
"email": "support@revasserlabs.com",
|
|
65
|
-
"url": "https://
|
|
73
|
+
"url": "https://mcp.revasserlabs.com"
|
|
66
74
|
},
|
|
67
75
|
"license": "MIT",
|
|
68
76
|
"repository": {
|
package/public/index.html
CHANGED
|
@@ -253,9 +253,9 @@
|
|
|
253
253
|
</div>
|
|
254
254
|
|
|
255
255
|
<div class="container">
|
|
256
|
-
<h1>Slack Web API <span
|
|
256
|
+
<h1>Slack Web API <span id="status" class="status"></span></h1>
|
|
257
257
|
<div style="background:rgba(240,194,70,0.08);border:1px solid rgba(240,194,70,0.2);border-radius:8px;padding:8px 14px;margin-bottom:16px;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px;font-size:13px;color:#d4c48a">
|
|
258
|
-
<span>Skip local setup? <strong style="color:#f0c246">Slack MCP Cloud</strong> gives you
|
|
258
|
+
<span>Skip local setup? <strong style="color:#f0c246">Slack MCP Cloud</strong> gives you 15 managed tools with one URL. Team adds 3 AI workflows.</span>
|
|
259
259
|
<a href="https://mcp.revasserlabs.com" style="color:#f0c246;font-weight:600;text-decoration:none;white-space:nowrap" target="_blank">Learn more →</a>
|
|
260
260
|
</div>
|
|
261
261
|
<div class="grid">
|
package/public/share.html
CHANGED
|
@@ -3,19 +3,20 @@
|
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="utf-8">
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
6
|
-
<title>Slack MCP Server
|
|
7
|
-
<meta name="description" content="Session-based Slack MCP for Claude.
|
|
6
|
+
<title>Slack MCP Server</title>
|
|
7
|
+
<meta name="description" content="Session-based Slack MCP for Claude. Self-host locally or use the managed Cloud path with Gemini CLI support, pricing, security/procurement review, deployment review, and hosted credentials.">
|
|
8
8
|
<meta property="og:type" content="website">
|
|
9
|
-
<meta property="og:title" content="Slack MCP Server
|
|
10
|
-
<meta property="og:description" content="Session-based Slack MCP for Claude.
|
|
9
|
+
<meta property="og:title" content="Slack MCP Server">
|
|
10
|
+
<meta property="og:description" content="Session-based Slack MCP for Claude. Self-host 16 tools for free or use Cloud for 15 managed tools, Gemini CLI support, security/procurement review, deployment review, and support.">
|
|
11
11
|
<meta property="og:url" content="https://jtalk22.github.io/slack-mcp-server/public/share.html">
|
|
12
12
|
<meta property="og:image" content="https://jtalk22.github.io/slack-mcp-server/docs/images/social-preview-v3.png">
|
|
13
13
|
<meta property="og:image:width" content="1280">
|
|
14
14
|
<meta property="og:image:height" content="640">
|
|
15
15
|
<meta name="twitter:card" content="summary_large_image">
|
|
16
|
-
<meta name="twitter:title" content="Slack MCP Server
|
|
17
|
-
<meta name="twitter:description" content="Session-based Slack MCP for Claude.
|
|
16
|
+
<meta name="twitter:title" content="Slack MCP Server">
|
|
17
|
+
<meta name="twitter:description" content="Session-based Slack MCP for Claude. Self-host 16 tools for free or use Cloud for 15 managed tools, Gemini CLI support, security/procurement review, deployment review, and support.">
|
|
18
18
|
<meta name="twitter:image" content="https://jtalk22.github.io/slack-mcp-server/docs/images/social-preview-v3.png">
|
|
19
|
+
<link rel="icon" href="https://jtalk22.github.io/slack-mcp-server/docs/assets/icon-512.png" type="image/png">
|
|
19
20
|
<style>
|
|
20
21
|
:root {
|
|
21
22
|
--bg-1: #0b1436;
|
|
@@ -105,24 +106,33 @@
|
|
|
105
106
|
</head>
|
|
106
107
|
<body>
|
|
107
108
|
<main class="wrap">
|
|
108
|
-
<h1>Slack MCP Server
|
|
109
|
-
<p class="sub">Give Claude full access to your Slack.
|
|
109
|
+
<h1>Slack MCP Server</h1>
|
|
110
|
+
<p class="sub">Give Claude full access to your Slack. Self-host 16 tools for free, or use Cloud for 15 managed tools, Gemini CLI support, hosted credentials, rollout support, and buyer-facing security review.</p>
|
|
110
111
|
|
|
111
112
|
<a class="preview" href="https://github.com/jtalk22/slack-mcp-server" rel="noopener">
|
|
112
113
|
<img src="https://jtalk22.github.io/slack-mcp-server/docs/images/social-preview-v3.png" alt="Slack MCP Server social preview card">
|
|
113
114
|
</a>
|
|
114
115
|
|
|
115
116
|
<div class="links">
|
|
116
|
-
|
|
117
|
-
<a href="https://github.com/jtalk22/slack-mcp-server/blob/main/
|
|
117
|
+
<a href="https://github.com/jtalk22/slack-mcp-server/blob/main/docs/SETUP.md" rel="noopener">Install (`--setup`)</a>
|
|
118
|
+
<a href="https://github.com/jtalk22/slack-mcp-server/blob/main/docs/SETUP.md" rel="noopener">Verify (`--version/--doctor/--status`)</a>
|
|
118
119
|
<a href="https://github.com/jtalk22/slack-mcp-server/releases/latest" rel="noopener">Latest Release</a>
|
|
120
|
+
<a href="https://mcp.revasserlabs.com/pricing?utm_source=github&utm_medium=pages&utm_campaign=slack_mcp_cloud" rel="noopener">Pricing</a>
|
|
121
|
+
<a href="https://mcp.revasserlabs.com/workflows?utm_source=github&utm_medium=pages&utm_campaign=slack_mcp_cloud" rel="noopener">Workflows</a>
|
|
122
|
+
<a href="https://mcp.revasserlabs.com/gemini-cli?utm_source=github&utm_medium=pages&utm_campaign=slack_mcp_cloud" rel="noopener">Gemini CLI</a>
|
|
123
|
+
<a href="https://mcp.revasserlabs.com/docs?utm_source=github&utm_medium=pages&utm_campaign=slack_mcp_cloud" rel="noopener">Cloud Docs</a>
|
|
124
|
+
<a href="https://mcp.revasserlabs.com/security?utm_source=github&utm_medium=pages&utm_campaign=slack_mcp_cloud" rel="noopener">Security</a>
|
|
125
|
+
<a href="https://mcp.revasserlabs.com/procurement?utm_source=github&utm_medium=pages&utm_campaign=slack_mcp_cloud" rel="noopener">Procurement</a>
|
|
126
|
+
<a href="https://mcp.revasserlabs.com/deployment?utm_source=github&utm_medium=pages&utm_campaign=slack_mcp_cloud" rel="noopener">Deployment Review</a>
|
|
127
|
+
<a href="https://mcp.revasserlabs.com/support?utm_source=github&utm_medium=pages&utm_campaign=slack_mcp_cloud" rel="noopener">Cloud Support</a>
|
|
128
|
+
<a href="https://mcp.revasserlabs.com/use-cases/support-triage?utm_source=github&utm_medium=pages&utm_campaign=slack_mcp_cloud" rel="noopener">Support Triage Use Case</a>
|
|
119
129
|
<a href="https://jtalk22.github.io/slack-mcp-server/" rel="noopener">Autoplay Demo Landing</a>
|
|
120
130
|
<a href="https://jtalk22.github.io/slack-mcp-server/docs/videos/demo-claude-mobile-20s.mp4" rel="noopener">20s Mobile Clip</a>
|
|
121
131
|
<a href="https://www.npmjs.com/package/@jtalk22/slack-mcp" rel="noopener">npm Package</a>
|
|
122
|
-
<a href="https://mcp.revasserlabs.com" rel="noopener" style="background:rgba(240,194,70,0.18);border-color:rgba(240,194,70,0.45);color:#f0c246">Cloud
|
|
132
|
+
<a href="https://mcp.revasserlabs.com" rel="noopener" style="background:rgba(240,194,70,0.18);border-color:rgba(240,194,70,0.45);color:#f0c246">Cloud</a>
|
|
123
133
|
</div>
|
|
124
134
|
|
|
125
|
-
<p class="note"><strong>Verify in 30 seconds:</strong> <code>--version</code>, <code>--doctor</code>, <code>--status</code>.
|
|
135
|
+
<p class="note"><strong>Verify in 30 seconds:</strong> <code>--version</code>, <code>--doctor</code>, <code>--status</code>. Self-host gives 16 tools and full operator control. Cloud starts at $19/mo for 15 managed tools, deployment review, procurement-ready security, readiness guidance, and support. Team at $49/mo adds 3 AI workflows. Claude is the primary path; Gemini CLI is supported on the hosted endpoint.</p>
|
|
126
136
|
</main>
|
|
127
137
|
</body>
|
|
128
138
|
</html>
|
package/scripts/setup-wizard.js
CHANGED
|
@@ -21,9 +21,10 @@ import {
|
|
|
21
21
|
getFromFile,
|
|
22
22
|
getFromKeychain,
|
|
23
23
|
} from "../lib/token-store.js";
|
|
24
|
+
import { RELEASE_VERSION } from "../lib/public-metadata.js";
|
|
24
25
|
|
|
25
26
|
const IS_MACOS = platform() === 'darwin';
|
|
26
|
-
const VERSION =
|
|
27
|
+
const VERSION = RELEASE_VERSION;
|
|
27
28
|
const MIN_NODE_MAJOR = 20;
|
|
28
29
|
const AUTH_TEST_URL = process.env.SLACK_MCP_AUTH_TEST_URL || "https://slack.com/api/auth.test";
|
|
29
30
|
|
package/server.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
|
|
3
3
|
"name": "io.github.jtalk22/slack-mcp-server",
|
|
4
4
|
"title": "Slack MCP Server",
|
|
5
|
-
"description": "
|
|
5
|
+
"description": "Claude-first Slack MCP for self-host or managed Cloud, with Gemini CLI, deployment review, and secure-default HTTP.",
|
|
6
6
|
"websiteUrl": "https://mcp.revasserlabs.com",
|
|
7
7
|
"icons": [
|
|
8
8
|
{
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"url": "https://github.com/jtalk22/slack-mcp-server",
|
|
18
18
|
"source": "github"
|
|
19
19
|
},
|
|
20
|
-
"version": "3.2.
|
|
20
|
+
"version": "3.2.5",
|
|
21
21
|
"remotes": [
|
|
22
22
|
{
|
|
23
23
|
"type": "streamable-http",
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
{
|
|
29
29
|
"registryType": "npm",
|
|
30
30
|
"identifier": "@jtalk22/slack-mcp",
|
|
31
|
-
"version": "3.2.
|
|
31
|
+
"version": "3.2.5",
|
|
32
32
|
"transport": {
|
|
33
33
|
"type": "stdio"
|
|
34
34
|
},
|
package/src/server-http.js
CHANGED
|
@@ -33,9 +33,10 @@ import {
|
|
|
33
33
|
handleConversationsUnreads,
|
|
34
34
|
handleUsersSearch,
|
|
35
35
|
} from "../lib/handlers.js";
|
|
36
|
+
import { RELEASE_VERSION } from "../lib/public-metadata.js";
|
|
36
37
|
|
|
37
38
|
const SERVER_NAME = "slack-mcp-server";
|
|
38
|
-
const SERVER_VERSION =
|
|
39
|
+
const SERVER_VERSION = RELEASE_VERSION;
|
|
39
40
|
const PORT = process.env.PORT || 3000;
|
|
40
41
|
const HTTP_INSECURE = process.env.SLACK_MCP_HTTP_INSECURE === "1";
|
|
41
42
|
const HTTP_AUTH_TOKEN = process.env.SLACK_MCP_HTTP_AUTH_TOKEN || process.env.SLACK_API_KEY || null;
|
package/src/server.js
CHANGED
|
@@ -11,7 +11,6 @@
|
|
|
11
11
|
* - Network error retry with exponential backoff
|
|
12
12
|
* - Background token health monitoring
|
|
13
13
|
*
|
|
14
|
-
* @version 3.2.0
|
|
15
14
|
*/
|
|
16
15
|
|
|
17
16
|
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
@@ -27,6 +26,7 @@ import {
|
|
|
27
26
|
} from "@modelcontextprotocol/sdk/types.js";
|
|
28
27
|
|
|
29
28
|
import { loadTokensReadOnly } from "../lib/token-store.js";
|
|
29
|
+
import { RELEASE_VERSION } from "../lib/public-metadata.js";
|
|
30
30
|
import { checkTokenHealth } from "../lib/slack-client.js";
|
|
31
31
|
import { TOOLS } from "../lib/tools.js";
|
|
32
32
|
import {
|
|
@@ -53,7 +53,7 @@ const BACKGROUND_REFRESH_INTERVAL = 4 * 60 * 60 * 1000;
|
|
|
53
53
|
|
|
54
54
|
// Package info
|
|
55
55
|
const SERVER_NAME = "slack-mcp-server";
|
|
56
|
-
const SERVER_VERSION =
|
|
56
|
+
const SERVER_VERSION = RELEASE_VERSION;
|
|
57
57
|
|
|
58
58
|
// MCP Prompts - predefined prompt templates for common Slack operations
|
|
59
59
|
const PROMPTS = [
|
package/src/web-server.js
CHANGED
|
@@ -5,7 +5,6 @@
|
|
|
5
5
|
* Exposes Slack MCP tools as REST endpoints for browser access.
|
|
6
6
|
* Run alongside or instead of the MCP server for web-based access.
|
|
7
7
|
*
|
|
8
|
-
* @version 3.2.0
|
|
9
8
|
*/
|
|
10
9
|
|
|
11
10
|
import express from "express";
|
|
@@ -16,6 +15,7 @@ import { existsSync, readFileSync, writeFileSync } from "fs";
|
|
|
16
15
|
import { execSync } from "child_process";
|
|
17
16
|
import { homedir } from "os";
|
|
18
17
|
import { loadTokensReadOnly } from "../lib/token-store.js";
|
|
18
|
+
import { PUBLIC_METADATA, RELEASE_VERSION } from "../lib/public-metadata.js";
|
|
19
19
|
|
|
20
20
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
21
21
|
import {
|
|
@@ -141,7 +141,7 @@ function extractContent(result) {
|
|
|
141
141
|
app.get("/", (req, res) => {
|
|
142
142
|
res.json({
|
|
143
143
|
name: "Slack Web API Server",
|
|
144
|
-
version:
|
|
144
|
+
version: RELEASE_VERSION,
|
|
145
145
|
status: "ok",
|
|
146
146
|
code: "ok",
|
|
147
147
|
message: "Web API server is running.",
|
|
@@ -450,7 +450,7 @@ async function main() {
|
|
|
450
450
|
app.listen(PORT, '127.0.0.1', () => {
|
|
451
451
|
// Print to stderr to keep logs clean (stdout reserved for JSON in some setups)
|
|
452
452
|
console.error(`\n${"═".repeat(60)}`);
|
|
453
|
-
console.error(` Slack Web API Server
|
|
453
|
+
console.error(` Slack Web API Server v${RELEASE_VERSION}`);
|
|
454
454
|
console.error(`${"═".repeat(60)}`);
|
|
455
455
|
console.error(`\n Dashboard: http://localhost:${PORT}/?key=${API_KEY}`);
|
|
456
456
|
console.error(`\n API Key: ${API_KEY}`);
|