Discord MCP
Runs a Discord bot as an MCP server for administering one Discord server: roles, channels, members, moderation
Read, search and post in a Slack workspace, including DMs, threads, unreads and user groups
By Dmitrii Korotovskii (individual) Go Local · stdio Communication
84 popularity score ★ 1.9k ↓ 54k/wk
Opens the app, which asks before it adds the server.
claude mcp add slack -- npx -y slack-mcp-server@latest --transport stdio{
"mcpServers": {
"slack": {
"command": "npx",
"args": [
"-y",
"slack-mcp-server@latest",
"--transport",
"stdio"
]
}
}
}{
"mcpServers": {
"slack": {
"command": "npx",
"args": [
"-y",
"slack-mcp-server@latest",
"--transport",
"stdio"
]
}
}
}{
"servers": {
"slack": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"slack-mcp-server@latest",
"--transport",
"stdio"
]
}
}
}[mcp_servers.slack]
command = "npx"
args = ["-y", "slack-mcp-server@latest", "--transport", "stdio"]gemini mcp add --scope user slack npx -- -y slack-mcp-server@latest --transport stdioOpens the app, which asks before it adds the server.
claude mcp add slack -- docker run -i --rm -e SLACK_MCP_XOXP_TOKEN ghcr.io/korotovsky/slack-mcp-server --transport stdio{
"mcpServers": {
"slack": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"SLACK_MCP_XOXP_TOKEN",
"ghcr.io/korotovsky/slack-mcp-server",
"--transport",
"stdio"
]
}
}
}{
"mcpServers": {
"slack": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"SLACK_MCP_XOXP_TOKEN",
"ghcr.io/korotovsky/slack-mcp-server",
"--transport",
"stdio"
]
}
}
}{
"servers": {
"slack": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"SLACK_MCP_XOXP_TOKEN",
"ghcr.io/korotovsky/slack-mcp-server",
"--transport",
"stdio"
]
}
}
}[mcp_servers.slack]
command = "docker"
args = ["run", "-i", "--rm", "-e", "SLACK_MCP_XOXP_TOKEN", "ghcr.io/korotovsky/slack-mcp-server", "--transport", "stdio"]gemini mcp add --scope user slack docker -- run -i --rm -e SLACK_MCP_XOXP_TOKEN ghcr.io/korotovsky/slack-mcp-server --transport stdioSLACK_MCP_XOXP_TOKEN |
Optional: User OAuth token (xoxp-...). One of xoxp, xoxb or the xoxc/xoxd pair is needed. |
|---|---|
SLACK_MCP_XOXB_TOKEN |
Optional: Bot token (xoxb-...); invited channels only, no search. |
SLACK_MCP_XOXC_TOKEN |
Optional: Browser session token (xoxc-...), used with SLACK_MCP_XOXD_TOKEN. |
SLACK_MCP_XOXD_TOKEN |
Optional: Browser cookie d (xoxd-...), used with SLACK_MCP_XOXC_TOKEN. |
SLACK_MCP_PORT |
Optional: Listen port for SSE/HTTP, default 13080. |
SLACK_MCP_HOST |
Optional: Listen host for SSE/HTTP, default 127.0.0.1. |
SLACK_MCP_API_KEY |
Optional: Bearer token clients must send to the SSE and HTTP transports. |
SLACK_MCP_PROXY |
Optional: Proxy URL for outgoing requests. |
SLACK_MCP_USER_AGENT |
Optional: Custom User-Agent, for Enterprise Slack. |
SLACK_MCP_CUSTOM_TLS |
Optional: Send a browser-like TLS handshake, for Enterprise Slack. |
SLACK_MCP_SERVER_CA |
Optional: Path to a CA certificate. |
SLACK_MCP_SERVER_CA_TOOLKIT |
Optional: Add the HTTPToolkit CA for traffic debugging. |
SLACK_MCP_SERVER_CA_INSECURE |
Optional: Trust all certificates; its docs advise against it. |
SLACK_MCP_ADD_MESSAGE_TOOL |
Optional: Turn on conversations_add_message: true, a channel ID list, or !ID exclusions. |
SLACK_MCP_ADD_MESSAGE_MARK |
Optional: Mark sent messages as read. |
SLACK_MCP_ADD_MESSAGE_UNFURLING |
Optional: Allow link previews in posts, for all or listed domains. |
SLACK_MCP_REACTION_TOOL |
Optional: Turn on reactions_add and reactions_remove, for all or listed channels. |
SLACK_MCP_ATTACHMENT_TOOL |
Optional: Turn on attachment_get_data. |
SLACK_MCP_MARK_TOOL |
Optional: Turn on conversations_mark. |
SLACK_MCP_USERS_CACHE |
Optional: Path of the users cache file. |
SLACK_MCP_CHANNELS_CACHE |
Optional: Path of the channels cache file. |
SLACK_MCP_LOG_LEVEL |
Optional: Log level, default info. |
SLACK_MCP_GOVSLACK |
Optional: Send calls to slack-gov.com for GovSlack workspaces. |
SLACK_MCP_ENABLED_TOOLS |
Optional: Comma-separated list of tools to register. |
In a container, a setting goes in with -e NAME=value after docker run.
Slack MCP Server connects an MCP client to one Slack workspace. It reads channel and DM history with paging by time span or message count, follows threads, runs Slack's message search with filters for channel, person and date, collects unread messages across channels with DMs first, and lists channels, users and user groups. Channels and people can be named as #name or @name instead of IDs, and two resources give the whole channel and user directories as CSV.
It can also act in the workspace: post messages, add or remove reactions, mark conversations read, join or leave channels, create and edit user groups, and manage items in Slack's Save for Later list. Posting, reactions, attachment download and mark-as-read stay off until a setting turns them on, and posting and reactions can be limited to a list of channels. Joining and leaving channels and the user-group tools are registered by default; SLACK_MCP_ENABLED_TOOLS narrows the set.
It signs in one of three ways: a user OAuth token (xoxp), a bot token (xoxb), or the xoxc token and d cookie copied out of a logged-in Slack browser session, which its makers call stealth mode because no Slack app has to be installed or approved. Which tools work depends on the token. It is written in Go, published on npm as a wrapper that runs the binary and as a container image on ghcr.io, speaks stdio, SSE or streamable HTTP, supports GovSlack (slack-gov.com) workspaces, and can route traffic through a proxy. Its README states that it is not an official Slack product.
| Runtime | Node.jsorDocker |
|---|
A Slack workspace and one credential: a user OAuth token (xoxp) or bot token (xoxb) from a Slack app you create with the listed scopes, or the xoxc token and d cookie from a browser session. Node.js for npx, or Docker for the ghcr.io image. Enterprise Slack may need SLACK_MCP_USER_AGENT and SLACK_MCP_CUSTOM_TLS set.
Bot tokens see only channels the bot was invited to and cannot use conversations_search_messages or conversations_unreads. saved_list, saved_update and saved_clear_completed work only with browser session tokens; the mentions_only unread filter too. With xoxp, conversations_unreads makes one call per channel and is slow on large workspaces. Without the users and channels caches, channels_list does not work and #name/@name lookups fail. attachment_get_data stops at 5 MB. Leaving #general is refused. The README's tool list omits four tools the source registers.
Suits someone who wants an assistant to read, search and triage their own Slack, including DMs and unreads, and who can either create a Slack app or is willing to use their browser session tokens. The session-token route avoids admin approval, but it acts with your full user access and may conflict with your workspace's policies, so a user or bot token is the cleaner pick where an app can be approved. It is a third-party project, not Slack's own; anyone who needs a vendor-supported integration should look for one from Slack. Write tools beyond joining channels and user groups need to be switched on, which suits cautious read-first use.
conversations_historyconversations_repliesconversations_add_messageconversations_search_messagesconversations_unreadsconversations_markconversations_joinconversations_leavechannels_listchannels_mereactions_addreactions_removeattachment_get_datausers_searchusergroups_listusergroups_createusergroups_updateusergroups_users_updateusergroups_mesaved_listsaved_updatesaved_clear_completed