slack-mcp@5.2.1
CAUTIONPublisher claims: "Catch up on Slack without reading it. Unreads, threads, search. Browser-session or hosted OAuth." Observed in sandbox: no network, touches nothing outside the project, writes no memory.
Coverage
Server started and answered tools/list.- Tested
- MCP initialize and tools/list · every tool description, for hidden instructions · every file read, file written and host contacted by what ran
- Not tested
- what the tools do when called with real credentials
Before you give it your token
- It will ask for
API_KEYSLACK_API_KEYSLACK_MCP_AUTH_TEST_URLSLACK_MCP_HTTP_AUTH_TOKENSLACK_MCP_TOKEN_STORAGESLACK_TOKENor--oauth-lifeboat/--refresh-tokensConfiguration, not credentials: SLACK_COOKIE, SLACK_MCP_CHROME_PROFILE, SLACK_MCP_CHROME_USER_DATA_DIR, SLACK_MCP_EXTRACTION_MODE, SLACK_MCP_HTTP_ALLOWED_ORIGINS, SLACK_MCP_HTTP_INSECURE, SLACK_MCP_KEYCHAIN_TIMEOUT_MS, SLACK_MCP_NO_UPSELL, SLACK_MCP_PROFILE, SLACK_MCP_PROVENANCE, SLACK_MCP_READ_ONLY, SLACK_MCP_SKILLS, SLACK_MCP_SKILLS_DIR, SLACK_MCP_TOOLS, WRITE_PATH_TOOLS- Where it talks to
- revasserlabs.com (its own)Also slack.com — not the publisher's domain; check what for before connecting.
- What the honeypot saw
- no credential files read · no network
- What we could not test
- what the tools do when called with real credentials
Connect it with a scoped credential, under the guard, and read the third-party hosts first. The code names slack.com as well as its own vendor. The guard injects API_KEY, SLACK_API_KEY, SLACK_MCP_AUTH_TEST_URL, SLACK_MCP_HTTP_AUTH_TOKEN, SLACK_MCP_TOKEN_STORAGE, SLACK_TOKEN only into requests to revasserlabs.com (and its subdomains) and refuses the rest.
Never paste a credential into a chat, a ticket or a report, including ours. How the guard holds it.
Is [email protected] safe to install?
KillerSkills ran it in the KillerSkills honeypot sandbox (2 scenarios) on 2026-11-11 and scored it 64/100 (Caution). It is not known to be malicious, but it has behaviour or code a security policy should decide on before install. Notable findings: Prompting user to enter sensitive credentials; document.cookie access; Prompting user to enter sensitive credentials. Summary: no network, touches nothing outside the project, writes no memory.
Behavior trace
Honeypot run · 24 s · 2 scenarios · 0 deviationsStatic findings
"Enter the token manually, or set SLACK_TOKEN and SLACK_COOKIE in the environment.",Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.const SETUP_CMD = "npx -y @jtalk22/slack-mcp --setup";Fix: Pin versions and sources; vendor anything fetched at install time.npx -y @jtalk22/slack-mcp --apply-template oncall-handoff --channels C012345,C067890 --priority-people U0PRIMEFix: Pin versions and sources; vendor anything fetched at install time.// Token-only one-liner (cookie is HttpOnly and cannot be read via document.cookie)Fix: Replace encoded or assembled strings with plain literals and remove undeclared network calls.console.log("Or enter the token by hand: npx -y @jtalk22/slack-mcp --setup");Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.IS_MACOS ? "SLACK_MCP_TOKEN_STORAGE=keychain-only npx -y @jtalk22/slack-mcp --setup"Fix: Pin versions and sources; vendor anything fetched at install time.* File: ~/.slack-mcp-workflows.json (chmod 600)Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.<summary><strong>Author labels on every message</strong></summary> Each message carries `origin` (`self`, `internal`, `external`, `bot`, `unknown`) and `author_Fix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.next_action: "Run npx -y @jtalk22/slack-mcp --setup"Fix: Pin versions and sources; vendor anything fetched at install time.<summary><strong>Read-only mode, for when a label is not enough</strong></summary> ```bash npx -y @jtalk22/slack-mcp --read-only # or SLACK_MCP_READ_ONLY=1 ``` Fix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.: 'Tokens saved with chmod 600';Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts."npx -y @jtalk22/slack-mcp --read-only # or SLACK_MCP_READ_ONLY=1, if this agent only needs to read");Fix: Pin versions and sources; vendor anything fetched at install time.`At ${TOKEN_FILE}. Restrict it with the file's own permissions; chmod does not apply here.`);Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.// Reachable from an npx install as `npx -y @jtalk22/slack-mcpFix: Pin versions and sources; vendor anything fetched at install time.* Atomic write pattern (temp → chmod → rename) prevents corruption fromFix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.throw new Error("No credentials available. Run npx -y @jtalk22/slack-mcp --setup or open Slack in Chrome.");Fix: Pin versions and sources; vendor anything fetched at install time.print("Run setup wizard to refresh: npx -y @jtalk22/slack-mcp --setup");Fix: Pin versions and sources; vendor anything fetched at install time.`~/.slack-mcp-workflows.json`. Saving one sends nothing to Slack.Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.next_action: "Run npx -y @jtalk22/slack-mcp --setup"Fix: Pin versions and sources; vendor anything fetched at install time.? "Run npx -y @jtalk22/slack-mcp --setup"Fix: Pin versions and sources; vendor anything fetched at install time.console.log("Or enter the token by hand: npx -y @jtalk22/slack-mcp --setup");Fix: Pin versions and sources; vendor anything fetched at install time.print(` 1) Token file (chmod 600) + macOS Keychain backup${current !== 'keychain-only' ? ` ${colors.dim}(current)${colors.reset}` : ''}`);Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts."Readable by more than you.", `chmod 600 ${TOKEN_FILE}`);Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts."src": "https://raw.githubusercontent.com/jtalk22/slack-mcp-server/main/docs/assets/icon-512.png",Fix: Namespace tool names and keep tool descriptions literal; no instructions to the agent inside them.// handlers below to kill zombie processes on stdin EOF and signals.Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.print("Run setup wizard: npx -y @jtalk22/slack-mcp --setup");Fix: Pin versions and sources; vendor anything fetched at install time.print(` ${colors.cyan}claude mcp add slack -- npx ${args.join(" ")}${colors.reset}`);Fix: Pin versions and sources; vendor anything fetched at install time.const FRONTMATTER = /^?---[ \t]*\r?\n[\s\S]*?\r?\n---[ \t]*(?:\r?\n|$)/;Fix: Keep SKILL.md to visible, descriptive text. Remove comments and encoded text that address the agent.<summary><strong>Side by side: the managed integration path vs. the local session path</strong></summary> <br> | | Slack official MCP | **Slack MCP Server — locFix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct.console.error("Use npx -y @jtalk22/slack-mcp --setup to configure credentials");Fix: Pin versions and sources; vendor anything fetched at install time.console.error("Run: npx -y @jtalk22/slack-mcp --setup");Fix: Pin versions and sources; vendor anything fetched at install time.Cost to the agent
Tokens estimated at four characters each. The tool list is re-read by the agent on every turn, so it is the number to compare between servers that do the same job: ranked across the index.
Known vulnerabilities
No advisories in OSV for @jtalk22/slack-mcp@5.2.1 as of 3d ago. This is the package itself, not its dependencies.
What would make this Verified
16 points to 80 · weights: behavior 45%, static 25%, prompt 15%, publisher 15%- Prompting user to enter sensitive credentials≈ +9 on the totalStop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
- Unclaimed publisher≈ +8 on the totalClaim jtalk22: a verified publisher gets +50 on publisher trust. It is free and usually instant with GitHub sign-in.
- Hidden instructions≈ +6 on the totalRemove HTML comments, zero-width characters and white-on-white text that carry instructions. Everything the agent is meant to read should be visible to the person reading the file.
- document.cookie access≈ +4 on the totalReplace encoded or assembled strings with plain literals and remove undeclared network calls.
- Hidden zero-width characters detected≈ +4 on the totalKeep SKILL.md to visible, descriptive text. Remove comments and encoded text that address the agent.
- npx invocation of non-well-known package≈ +2 on the totalPin versions and sources; vendor anything fetched at install time.