@chinchillaenterprises/mcp-slack
npm
v4.14.0
Published by @chinchillaenterprises — no publish provenance, so origin is unverified, but the source is public: the repository link below is self-declared yet readable, so you can inspect the code before adopting it.
MCP server for Slack. Single account loaded from env (SLACK_BOT_TOKEN); multi-workspace via separate server entries.
The grade answers one question — how safe is this server for you to adopt — so it is computed in two auditable stages. Nothing below is an opinion or an LLM's guess; every line is a real term the deterministic engine applied, and the same input always yields the same number.
1. Threat score — 100 − 0 = 100. What the published surface and source actually contain:
The deterministic scan raised no scored threat in the surface it inspected — the threat score stayed at 100. Capability observations and advisory notes are recorded but never lower it.
2. Client adoption risk — 100 − 7 = 93. Three small, subtract-only factors that reflect your risk in adopting it — a clean scan proves less on a powerful, unverified or barely-inspectable package, so the grade says so plainly:
| Points | Adoption-risk factor |
|---|---|
| −6 | capability blast radius (high) — client exposure if the model is manipulated |
| −1 | publisher verification (public source) — no provenance, but the source is public and inspectable |
Capability observations and info notes are shown under Findings but never scored.
Open any row's finding below for the file, line and evidence behind a deduction.
In the server's implementation (`dist/http.js:22`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.
Evidence: ecFileSync } from "node:child_process"; import { randomUUID } from "node:crypto"; import { StreamableHTTPServerTransport
Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.
Location: server dist/http.js
In the server's implementation (`dist/index.js:14`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.
Evidence: e, execFileSync } from "child_process"; import { promisify } from "util"; import { fileURLToPath } from "url"; import Fu
Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.
Location: server dist/index.js
Untrusted-input tools ([slack_get_channel_history, slack_pull_filtered, slack_download_file, slack_get_thread_replies]) co-exist with external-action tools ([slack_send_message, slack_forward_message, slack_bulk_forward_messages, slack_upload_file]). A prompt injection could cause unwanted external actions, though no direct sensitive-data leak path was found.
Evidence: untrusted [slack_get_channel_history, slack_pull_filtered, slack_download_file, slack_get_thread_replies] → sinks [slack_send_message, slack_forward_message, sl
Fix: Require confirmation for state-changing/egress actions triggered after processing untrusted content.
Location: flow slack_get_channel_history → slack_send_message
Tool "slack_send_message" takes a URL/host parameter "icon_url" with no allowlist/pattern. An outbound-request tool with an unbounded destination enables SSRF and cloud-metadata access (e.g. 169.254.169.254).
Fix: Allowlist destinations or constrain the parameter; block private/link-local addresses server-side.
Location: tool slack_send_message · inputSchema.properties.icon_url
Tool "slack_download_file" takes a URL/host parameter "url" with no allowlist/pattern. An outbound-request tool with an unbounded destination enables SSRF and cloud-metadata access (e.g. 169.254.169.254).
Fix: Allowlist destinations or constrain the parameter; block private/link-local addresses server-side.
Location: tool slack_download_file · inputSchema.properties.url
Each tool and what it can reach — statically extracted from the published source.
slack_bulk_forward_messagesnetwork egressslack_download_fileingests untrusted inputslack_forward_messagenetwork egressslack_get_channel_historyingests untrusted inputslack_get_thread_repliesingests untrusted inputslack_pull_filteredingests untrusted inputslack_send_messagenetwork egressslack_upload_filenetwork egressget_active_accountno sensitive capabilitylist_accountsno sensitive capabilityslack_add_reactionno sensitive capabilityslack_archive_channelno sensitive capabilityslack_audit_user_activityno sensitive capabilityslack_bulk_react_messagesno sensitive capabilityslack_checkinno sensitive capabilityslack_claim_laneno sensitive capabilityslack_complete_taskno sensitive capabilityslack_create_channelno sensitive capabilityslack_create_reminderno sensitive capabilityslack_delete_messageno sensitive capabilityslack_digestno sensitive capabilityslack_edit_messageno sensitive capabilityslack_get_custom_emojino sensitive capabilityslack_get_user_by_nameno sensitive capabilityslack_get_user_infono sensitive capabilityslack_get_user_profileno sensitive capabilityslack_get_user_statusno sensitive capabilityslack_get_workspace_statsno sensitive capabilityslack_invite_externalno sensitive capabilityslack_invite_usersno sensitive capabilityslack_list_channel_membersno sensitive capabilityslack_list_channelsno sensitive capabilityslack_list_external_usersno sensitive capabilityslack_list_remindersno sensitive capabilityslack_list_usersno sensitive capabilityslack_mine_incidentsno sensitive capabilityslack_pin_messageno sensitive capabilityslack_pollno sensitive capabilityslack_pull_sinceno sensitive capabilityslack_remove_usersno sensitive capabilityslack_rename_channelno sensitive capabilityslack_schedule_messageno sensitive capabilityslack_search_by_date_rangeno sensitive capabilityslack_search_by_userno sensitive capabilityslack_search_filesno sensitive capabilityslack_search_messagesno sensitive capabilityslack_send_cardno sensitive capabilityslack_send_diagramno sensitive capabilityslack_send_formatted_messageno sensitive capabilityslack_send_tableno sensitive capabilityslack_set_channel_topicno sensitive capabilityslack_start_taskno sensitive capabilityslack_unpin_messageno sensitive capabilityslack_update_taskno sensitive capabilityCross-tool combinations that form a data-exfiltration primitive (untrusted input → sensitive source → external sink).
Scan history per published version. The engine is deterministic — the same version always yields the same score, so a changed score means the package itself changed.
| Version | Score | Findings | Engine | Scanned |
|---|---|---|---|---|
v4.14.0 latest |
A 93/100 | 5 | 1.13.0 | 2026-09-05 |
Show this server's live Trust Score in your README, docs or website. The badge is served straight from the registry and updates automatically after every rescan — no API key needed. It links back to this page, so anyone who sees the grade can also read the findings behind it instead of taking a number on faith.
The score above is reproducible: the same package version always yields the same result. Run it locally or over the free API — no account, no LLM, fully deterministic.
npx mcptrustchecker scan @chinchillaenterprises/mcp-slack --online
Independent packages implementing the same tool, scanned with the same engine. Compare all 30 side by side →
User-token (xoxp) Slack MCP server over stdio
Integrate the Slack Web API into agentic workflows via MCP
MCP server for Slack Web API — send messages, manage channels, search, reactions, files, pins, bookmarks, and more through 38 tools
MCP server for the Slack **Web API**, acting as a bot user (`xoxb-` token). A good fit for internal team notifications and reports.
Channel lookup, history, and messaging tools for Slack workspaces.
MCP Server for Slack API integration
One key, 100+ models — chat with any LLM and generate video, images, speech. Free trial at 370.ai.
Retired compatibility stub for the AgentCanary MCP server. Daily briefs continue on X and Telegram.
A Backstage plugin that provides a chat interface for interacting with the MCP Servers.
Signal-first Bitcoin intelligence: sovereign, hiring & hashrate signals over MCP.
WhatsApp® reminders and rescheduling for Calendly. Public read-only MCP endpoint.
Open Source Generic MCP Client for testing & evaluating mcp servers and agents