
Slack MCP Server (Ubie)
Bot-token Slack MCP for posting, reading channels and searching messages
Add to your client
Copy the config for your MCP client and paste it into its config file.
npx -y @ubie-oss/slack-mcp-serverPaste into ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"slack-mcp-server-ubie": {
"command": "npx",
"args": [
"-y",
"@ubie-oss/slack-mcp-server"
],
"env": {
"SLACK_BOT_TOKEN": "<your-slack-bot-token-xoxb>",
"SLACK_USER_TOKEN": "<your-slack-user-token-xoxp>"
}
}
}
}Before you start
- Node.js (version pinned in the repo's .node-version file)
- A Slack app installed to your workspace with a Bot User OAuth token (SLACK_BOT_TOKEN), with scopes for the actions you need (e.g. channels:read, chat:write, reactions:write, users:read)
- A Slack User OAuth token (SLACK_USER_TOKEN) with search:read — required only for the message search tool
- A GitHub Personal Access Token with read:packages scope plus an .npmrc, since the package is hosted on the GitHub Packages registry (not public npm)
About Slack MCP Server (Ubie)
Slack MCP Server (Ubie) is a Model Context Protocol server, maintained by Ubie's open-source org, that lets AI assistants interact with a Slack workspace through Slack's Web API. It exposes a focused set of tools for posting messages, replying in threads, reading channel history, reacting, looking up users, and searching messages.
The server is written in TypeScript and validates all tool input/output with Zod schemas. It supports both stdio (the default for local MCP clients) and an HTTP transport via a -port flag, so it can run as a child process or as a standalone HTTP service.
Authentication is bot-token based: a Slack Bot User OAuth token drives posting and reading, while a separate Slack User OAuth token is required for the message-search tool. An optional SLACK_SAFE_SEARCH flag can exclude private channels and DMs from search results.
Note: the package is published to the GitHub Packages npm registry rather than the public npmjs.com registry, so installing it requires a GitHub Personal Access Token and an .npmrc pointing @ubie-oss at npm.pkg.github.com.
Tools & capabilities (9)
slack_list_channelsList public channels in the workspace, with pagination support
slack_post_messagePost a new message to a Slack channel
slack_reply_to_threadReply within an existing message thread
slack_add_reactionAdd an emoji reaction to a message
slack_get_channel_historyRetrieve recent messages from a channel
slack_get_thread_repliesGet all replies in a thread
slack_get_usersRetrieve basic user profile information
slack_get_user_profilesBulk-retrieve user profile information
slack_search_messagesSearch workspace messages with filters by channel, user, date, or content (requires a user token)
When to use it
- Let an assistant post status updates, summaries, or alerts into specific Slack channels
- Have an agent read recent channel or thread history to answer 'what did the team decide?' questions
- Search across the workspace for messages matching a topic, person, or date range
- React to messages programmatically as part of a workflow (e.g. acknowledging a request)
- Resolve Slack user IDs to names/profiles in bulk when building reports or notifications
Quick setup
- 1Create a Slack app, add the bot scopes you need, and install it to your workspace to obtain the Bot User OAuth token (and a User token if you need search)
- 2Configure an .npmrc with your GitHub PAT so npm can resolve @ubie-oss from the GitHub Packages registry
- 3Set SLACK_BOT_TOKEN (and SLACK_USER_TOKEN for search) as environment variables or in a .env file
- 4Add the server to your MCP client config, e.g. running `npx @ubie-oss/slack-mcp-server` over stdio
- 5Restart the MCP client and verify by calling slack_list_channels or posting a test message
Security notes
Requires a Slack bot token with broad scopes; grant only the scopes you need and set SLACK_SAFE_SEARCH=true to exclude private channels, DMs and group DMs from search results.
Slack MCP Server (Ubie) FAQ
Why does npm install fail for @ubie-oss/slack-mcp-server?
The package is published to the GitHub Packages registry, not public npm. You need a GitHub Personal Access Token with read:packages and an .npmrc mapping the @ubie-oss scope to npm.pkg.github.com.
Do I need a Slack user token, or is the bot token enough?
The bot token (SLACK_BOT_TOKEN) covers posting, reading, reactions, and user lookups. The slack_search_messages tool additionally requires a User OAuth token (SLACK_USER_TOKEN) with the search:read scope.
Can it run over HTTP instead of stdio?
Yes. By default it speaks stdio for local MCP clients, but you can start it as an HTTP server by passing a port, e.g. `npx @ubie-oss/slack-mcp-server -port 3000`.
How do I keep search from leaking private channels and DMs?
Set the optional SLACK_SAFE_SEARCH environment variable to true, which excludes private channels and direct messages from slack_search_messages results.
Is this an official Slack product?
No. It is an open-source server maintained by Ubie (ubie-oss), not by Slack. It is licensed Apache-2.0.
Alternatives to Slack MCP Server (Ubie)
Connect your personal WhatsApp: search, read and send messages and media locally
Powerful Slack MCP with stdio/SSE/HTTP, DMs, group DMs and no-admin token auth
Full Telegram user-account MCP via MTProto: read chats, manage groups, send messages
Compare Slack MCP Server (Ubie) with: