Slack Notifier MCP Server
An MCP server that connects to Slack via Socket Mode (WebSocket) and surfaces real-time message notifications through MCP tools. No public URL or ngrok needed.
How It Works
This server runs two things simultaneously in a single process:
- Slack Socket Mode client — connects outbound to Slack over WebSocket and receives events in real time
- MCP server (stdio) — exposes tools to query, filter, and manage those notifications
When someone posts a message in Slack, the Socket Mode connection pushes the event to your server. The server stores it in memory (with optional disk persistence), and you can query it via the MCP tools.
Setup
1. Create a Slack App
- Go to api.slack.com/apps and click Create New App → From scratch
- Name it something like "Message Notifier" and pick your workspace
2. Enable Socket Mode
- Go to Settings → Socket Mode and toggle it On
- You'll be prompted to create an App-Level Token — name it something like "socket-mode-token"
- Give it the
connections:writescope - Copy the token (starts with
xapp-) — this is yourSLACK_APP_TOKEN
3. Subscribe to Events
- Go to Features → Event Subscriptions and toggle it On
- Under Subscribe to bot events, add:
message.channels— messages in public channelsmessage.groups— messages in private channelsmessage.im— direct messagesmessage.mpim— group direct messages
- Save changes
4. Add Bot Token Scopes
- Go to Features → OAuth & Permissions
- Under Bot Token Scopes, add:
channels:history— read messages in public channelsgroups:history— read messages in private channelsim:history— read direct messagesmpim:history— read group DMs
- Install (or reinstall) the app to your workspace
5. Invite the Bot
Invite your bot to the channels you want to monitor: `` /invite @Message Notifier ``
6. Configure the MCP Server
Add this to your Claude Desktop / Claude Code MCP config:
{
"mcpServers": {
"slack-notifier": {
"command": "node",
"args": ["/path/to/slack-notifier-mcp-server/dist/index.js"],
"env": {
"SLACK_APP_TOKEN": "xapp-1-your-token-here",
"PERSIST_PATH": "/path/to/notifications.json"
}
}
}
}
Environment Variables
| Variable | Required | Default | Description | |----------|----------|---------|-------------| | SLACK_APP_TOKEN | Yes | — | App-level token (xapp-...) with connections:write scope | | PERSIST_PATH | No | — | File path to persist notifications across restarts |
Available MCP Tools
slack_get_notifications
Retrieve stored message notifications with filtering:
- Filter by channel, read status, time range
- Pagination support
- Returns newest messages first
slack_mark_notifications_read
Mark notifications as read:
- By specific IDs
- All at once (optionally per-channel)
slack_notification_stats
Get a summary of notification counts grouped by channel — total and unread per channel.
slack_clear_notifications
Permanently delete all stored notifications (requires confirmation).
Building
npm install
npm run build
Running
SLACK_APP_TOKEN=xapp-1-... npm start
The server will connect to Slack via Socket Mode and start the MCP stdio server simultaneously.






