MCP Directory

Slack MCP Server (Ubie)

Bot-token Slack MCP for posting, reading channels and searching messages

Verified
stdio (local)
API key
Stale
TypeScript

Add to your client

Copy the config for your MCP client and paste it into its config file.

Install / run
npx -y @ubie-oss/slack-mcp-server

Paste 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_channels

List public channels in the workspace, with pagination support

slack_post_message

Post a new message to a Slack channel

slack_reply_to_thread

Reply within an existing message thread

slack_add_reaction

Add an emoji reaction to a message

slack_get_channel_history

Retrieve recent messages from a channel

slack_get_thread_replies

Get all replies in a thread

slack_get_users

Retrieve basic user profile information

slack_get_user_profiles

Bulk-retrieve user profile information

slack_search_messages

Search 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

  1. 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)
  2. 2Configure an .npmrc with your GitHub PAT so npm can resolve @ubie-oss from the GitHub Packages registry
  3. 3Set SLACK_BOT_TOKEN (and SLACK_USER_TOKEN for search) as environment variables or in a .env file
  4. 4Add the server to your MCP client config, e.g. running `npx @ubie-oss/slack-mcp-server` over stdio
  5. 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

Verified
stdio (local)
No auth
Python
12 tools
Updated 26 days agoRepo

Powerful Slack MCP with stdio/SSE/HTTP, DMs, group DMs and no-admin token auth

Verified
stdio (local)
API key
Go
12 tools
Updated 1 month agoRepo

Full Telegram user-account MCP via MTProto: read chats, manage groups, send messages

Verified
stdio (local)
API key
Python
11 tools
Updated 7 days agoRepo