Slack MCP
Read and respond to Slack from Claude.
README
Slack MCP
Read and respond to Slack from Claude. Works as an MCP server (for Claude Desktop/Claude Code) and as a standalone CLI (for GitHub Actions).
Features
- Multi-workspace support - Configure multiple Slack workspaces
- Read tools - Summarize activity, list channels, read messages, search
- Write tools - Send messages, reply to threads, add reactions
- Standalone CLI - Generate markdown summaries for GitHub Actions
Installation
1. Create Slack App(s)
For each workspace you want to connect:
- Go to https://api.slack.com/apps → Create New App → From manifest
- Select your workspace
- Paste this manifest:
display_information:
name: Claude Slack Reader
description: Read and respond to Slack from Claude
oauth_config:
scopes:
user:
- channels:history
- channels:read
- chat:write
- groups:history
- groups:read
- im:history
- im:read
- mpim:history
- mpim:read
- users:read
settings:
org_deploy_enabled: false
socket_mode_enabled: false
token_rotation_enabled: false
- Click Install to Workspace → Allow
- Copy the User OAuth Token (starts with
xoxp-)
Note: Slack requires a separate app per workspace (public distribution requires Slack approval).
2. Configure Tokens
Create ~/.mcp-auth/slack/config.json:
{
"workspaces": {
"work": {
"name": "Work Slack",
"token": "xoxp-your-token-here",
"priority": 1
},
"research": {
"name": "Research Group",
"token": "xoxp-your-token-here",
"priority": 2
}
},
"default_workspace": "work"
}
Or use environment variables:
export SLACK_USER_TOKEN=xoxp-... # Single workspace
export SLACK_TOKEN_WORK=xoxp-... # Multiple workspaces
export SLACK_TOKEN_RESEARCH=xoxp-...
3. Install Dependencies
cd ~/src/slack-mcp
pip install -r requirements.txt
4. Add to Claude Desktop
Edit ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"slack": {
"command": "python3",
"args": ["/path/to/slack-mcp/server.py"]
}
}
}
Restart Claude Desktop.
Project Structure
slack-mcp/
├── src/
│ ├── config.py # Multi-workspace configuration
│ ├── slack_client.py # Slack API wrapper (read + write)
│ ├── summarizer.py # Message categorization
│ └── mcp_server.py # MCP server with tools
├── server.py # Entry point for MCP server
├── slack_summary.py # Standalone CLI
├── requirements.txt
├── pyproject.toml
└── .github/
└── workflows/
└── daily-summary.yml
MCP Tools
Read Tools
| Tool | Description |
|---|---|
slack_summary |
Overview of DMs, mentions, channel activity. Use mode: "quick" (default) or mode: "full" |
slack_channels |
List all channels (filter by type: all, channels, dms, groups) |
slack_channel |
Read messages from a specific channel |
slack_thread |
Read messages in a thread |
slack_search |
Search messages |
slack_unread |
Get unread message counts |
slack_workspaces |
List configured workspaces |
Write Tools
| Tool | Description |
|---|---|
slack_send |
Send message to channel or DM |
slack_reply |
Reply in a thread |
slack_react |
Add emoji reaction |
Example Usage in Claude
"What's happening in my Slack?"
→ Uses slack_summary with quick mode
"Show me the #engineering channel"
→ Uses slack_channel
"Reply to that thread saying I'll review it tomorrow"
→ Uses slack_reply
"Add a thumbsup to that message"
→ Uses slack_react
Standalone CLI
Generate markdown summaries without Claude:
# Print summary to stdout
python slack_summary.py
# Save to file
python slack_summary.py --output slack-summary.md
# Look back 48 hours
python slack_summary.py --hours 48
# Specific workspace
python slack_summary.py --workspace work
# Action items only
python slack_summary.py --action-items-only
GitHub Actions Workflow
The included workflow runs daily and commits a summary:
# .github/workflows/daily-summary.yml
name: Daily Slack Summary
on:
schedule:
- cron: '0 12 * * *' # 7 AM EST
workflow_dispatch:
jobs:
summarize:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.11'
- run: pip install -r requirements.txt
- env:
SLACK_USER_TOKEN: ${{ secrets.SLACK_USER_TOKEN }}
run: python slack_summary.py --output slack-summary.md
- run: |
git config user.email "github-actions[bot]@users.noreply.github.com"
git config user.name "github-actions[bot]"
git add slack-summary.md
git diff --quiet --staged || git commit -m "Daily Slack summary [skip ci]"
git push
Add your token as a repository secret: Settings → Secrets → Actions → New repository secret → SLACK_USER_TOKEN
Configuration Sync
To sync config across machines, symlink to a cloud folder:
mkdir -p ~/.mcp-auth/slack
ln -sf ~/Dropbox/mcp-auth/slack/config.json ~/.mcp-auth/slack/config.json
# or Box, iCloud, etc.
Performance
- Quick mode (default): ~4 seconds - scans recent DMs and channels
- Full mode: ~20 seconds - detailed scan of all activity
- Cached calls: ~1.5 seconds - conversation list cached for 5 minutes
Requirements
- Python 3.10+
slack-sdk- Slack API clientmcp- Model Context Protocol server
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.