Slack Notifier MCP
Enables bidirectional communication between MCP clients and Slack, allowing users to receive task notifications and respond to AI inquiries directly within Slack threads. It supports various urgency levels, message threading, and interactive question-and-answer workflows.
README
Slack Notifier MCP
MCP server for bidirectional Slack communication with Claude Code. Get notified when tasks complete, and respond to Claude's questions directly from Slack.
Quick Start
# Add to Claude Code (one command)
claude mcp add slack-notifier -s user \
-e SLACK_BOT_TOKEN=xoxb-your-token \
-e SLACK_DEFAULT_CHANNEL=YOUR-CHANNEL-ID \
-- uvx slack-notifier-mcp@latest
Features
- Send Messages - Send messages with optional urgency levels and thread support
- Ask & Wait - Ask questions and wait for replies via Slack threads
- Bidirectional - Reply to Claude from Slack, get responses back in your terminal
- Urgency Levels - Normal, important, and critical notifications with appropriate formatting
Slack App Setup
Before using this server, you need to create a Slack app:
- Go to api.slack.com/apps and click Create New App
- Choose From scratch, name it (e.g., "Claude Code"), and select your workspace
- Go to OAuth & Permissions in the sidebar
- Under Scopes > Bot Token Scopes, add:
chat:write- Send messageschannels:history- Read public channel messagesgroups:history- Read private channel messagesim:history- Read DM messagesusers:read- Get user display names
- Click Install to Workspace at the top
- Copy the Bot User OAuth Token (starts with
xoxb-)
To get your default channel ID:
- Open Slack, right-click the channel, and select View channel details
- At the bottom, copy the Channel ID (starts with
C)
Installation
Claude Code (Recommended)
claude mcp add slack-notifier -s user \
-e SLACK_BOT_TOKEN=xoxb-your-token \
-e SLACK_DEFAULT_CHANNEL=YOUR-CHANNEL-ID \
-- uvx slack-notifier-mcp@latest
VS Code
code --add-mcp '{"name":"slack-notifier","command":"uvx","args":["slack-notifier-mcp@latest"],"env":{"SLACK_BOT_TOKEN":"xoxb-your-token","SLACK_DEFAULT_CHANNEL":"YOUR-CHANNEL-ID"}}'
Other MCP Clients
<details> <summary><strong>Claude Desktop</strong></summary>
Add to your Claude Desktop config:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"slack-notifier": {
"command": "uvx",
"args": ["slack-notifier-mcp@latest"],
"env": {
"SLACK_BOT_TOKEN": "xoxb-your-token",
"SLACK_DEFAULT_CHANNEL": "YOUR-CHANNEL-ID"
}
}
}
}
</details>
<details> <summary><strong>Cursor</strong></summary>
- Go to Settings → MCP → Add new MCP Server
- Select
commandtype - Enter command:
uvx slack-notifier-mcp@latest - Add environment variables for
SLACK_BOT_TOKENandSLACK_DEFAULT_CHANNEL
Or add to ~/.cursor/mcp.json:
{
"mcpServers": {
"slack-notifier": {
"command": "uvx",
"args": ["slack-notifier-mcp@latest"],
"env": {
"SLACK_BOT_TOKEN": "xoxb-your-token",
"SLACK_DEFAULT_CHANNEL": "YOUR-CHANNEL-ID"
}
}
}
}
</details>
<details> <summary><strong>Windsurf / Other MCP Clients</strong></summary>
Any MCP-compatible client can use slack-notifier:
{
"mcpServers": {
"slack-notifier": {
"command": "uvx",
"args": ["slack-notifier-mcp@latest"],
"env": {
"SLACK_BOT_TOKEN": "xoxb-your-token",
"SLACK_DEFAULT_CHANNEL": "YOUR-CHANNEL-ID"
}
}
}
}
</details>
Local Development
git clone https://github.com/strand-ai/slack-notifier-mcp.git
cd slack-notifier-mcp
uv sync
uv run slack-notifier-mcp
MCP Tools
send
Send a message to Slack with optional urgency and thread support.
# Simple message
send(message="Build completed successfully")
# With urgency (adds formatting and @here for critical)
send(
message="Server is down!",
urgency="critical" # or "normal", "important"
)
# Reply in a thread
send(
message="Done with the first step, moving on...",
thread_ts="1234567890.123456"
)
# Mention user
send(
message="Need your attention",
mention_user=True
)
Parameters:
message(required): Message text (supports Slack mrkdwn)channel(optional): Channel ID or name (uses default if not set)thread_ts(optional): Thread timestamp to reply in a threadurgency(optional):normal,important, orcriticalmention_user(optional): If true, @mentions the configured user
ask_user
Send a question and wait for the user's reply.
ask_user(
question="Should I use PostgreSQL or SQLite for the database?",
context="Setting up the backend for the new API",
timeout_minutes=10
)
# Returns: {"success": True, "reply": "Use PostgreSQL", ...}
Parameters:
question(required): The question to askchannel(optional): Channel ID or namecontext(optional): Additional context about what you're working ontimeout_minutes(optional): How long to wait (default 5, max 30)
get_thread_replies
Check for new replies in a thread.
get_thread_replies(
channel="YOUR-CHANNEL-ID",
thread_ts="1234567890.123456",
since_ts="1234567891.000000" # Only newer messages
)
Environment Variables
| Variable | Required | Description |
|---|---|---|
SLACK_BOT_TOKEN |
Yes | Bot token from Slack app (xoxb-...) |
SLACK_DEFAULT_CHANNEL |
No | Default channel for notifications |
Example Usage
Tell Claude Code:
"Notify me on Slack when the tests finish running"
"Ask me on Slack whether to proceed with the database migration"
"Send a Slack notification if any errors occur while I'm away"
Debugging
Run the MCP inspector to test tools:
npx @anthropics/mcp-inspector uvx slack-notifier-mcp@latest
Check if your token works:
curl -H "Authorization: Bearer xoxb-your-token" \
https://slack.com/api/auth.test
Development
# Install with dev dependencies
uv sync --extra dev
# Run tests
uv run pytest
# Format code
uv run black slack_mcp
uv run ruff check slack_mcp --fix
License
MIT
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.