An HTTP-based Model Context Protocol (MCP) server that allows MCP-compatible clients (including Claude Connectors and Strawberry Browser) to interact with a Slack workspace.
This server exposes Slack functionality (channels, messages, users, and direct messages) over the MCP protocol using a single HTTP endpoint and is designed to be deployed on Railway.
It is inspired by the original Anthropic MCP Slack example, but adapted for remote HTTP/SSE usage rather than local stdin/stdout.
- List public Slack channels
- Join existing public channels
- Create and manage public channels
- Post messages to channels
- Read channel message history
- Add and remove emoji reactions
- Read emoji reactions on messages
- Find Slack users by email or name
- Retrieve detailed user profiles
- Open and list direct message (DM) channels
- Read direct message history
- Send direct messages (DMs) to users
- Create, read, edit, and delete Slack canvases
- A GitHub account
- A Slack workspace where you can create apps
- A Railway account
- Go to
https://api.slack.com/apps - Click Create New App
- Choose From scratch
- Select your Slack workspace
Navigate to OAuth & Permissions and add the following Bot Token Scopes:
app_mentions:readcanvases:readcanvases:writechannels:readchannels:historychannels:joinchannels:managechat:writeim:readim:writeim:historyreactions:readreactions:writeusers:readusers:read.emailusers.profile:read
These scopes are required for posting messages, reading channels, finding users, sending direct messages, managing Canvases, and other tasks possible using the MCP server.
- Click Install to Workspace
- Authorize the app
- Copy the Bot User OAuth Token (starts with
xoxb-)
- Open Slack in a browser
- Open any channel
- From the URL
https://app.slack.com/client/T01234ABCD/C98765432, the value starting withTis your Workspace / Team ID
- Fork this repository into your own GitHub account
- Go to
https://railway.app(sign up with my referral link if needed) - Click New Project
- Choose Deploy from GitHub Repo
- Select your forked repository
- Railway will automatically detect the Node.js app and deploy it
In Railway, open your service and add the following Variables:
SLACK_BOT_TOKEN=xoxb-your-bot-token-here
SLACK_TEAM_ID=T01234567| Variable | Required | Description |
|---|---|---|
SLACK_BOT_TOKEN |
Yes | Slack Bot User OAuth Token |
SLACK_TEAM_ID |
Yes | Slack Workspace / Team ID |
PORT |
No | Automatically set by Railway |
After saving the variables, Railway will automatically redeploy the service.
Once deployed, your service will be available at a Railway-generated URL. You can verify the service is running with the /health endpoint.
The MCP server is exposed at the following path: /sse/mcp
Your full MCP endpoint will look like: https://your-service-name.up.railway.app/sse/mcp
This endpoint handles:
- MCP initialization
- Tool calls
- Streaming responses
- Session management
- Open Claude > Settings > Connectors
- Click Add Connector
- Choose MCP Server
- Enter your MCP endpoint URL:
https://your-service-name.up.railway.app/sse/mcp - Save and connect
Once connected, Claude can call Slack tools directly in chat.
- Open Strawberry > Profile Picture Menu > Settings > Integrations > Custom MCP
- Configure Strawberry Browser to use the MCP endpoint:
https://your-service-name.up.railway.app/sse/mcp
All tools included in the server are enumerated below.
slack_list_channels– List public Slack channelsslack_join_channel– Join an existing public channelslack_create_channel– Create a new public channelslack_rename_channel– Rename an existing channelslack_post_message– Post a message to a channelslack_get_channel_history– Get recent messages from a channelslack_add_reaction– Add an emoji reaction to a messageslack_remove_reaction– Remove an emoji reaction from a messageslack_get_reactions– List reactions on a message
slack_find_user– Find users by email or nameslack_get_user_profile– Retrieve a user’s profile informationslack_open_dm– Open a direct message (DM) channel with a userslack_list_dms– List direct message channelsslack_get_dm_history– Get message history from a DM channelslack_send_dm– Send a direct message to a user
slack_canvas_create– Create a Slack canvasslack_canvas_get– Retrieve a Slack canvasslack_canvas_edit– Edit an existing Slack canvasslack_canvas_delete– Delete a Slack canvas
Issues and pull requests are welcome.
I'm just a guy on the internet and you're deploying powerful code with serious implications for the privacy of your own and others' data. Please make sure that you understand this process, including its risks, completely and protect your Railway URL from exposure as this will give anyone the ability to directly access your Slack Workspace.