Slack MCP

Slack MCP

Read and respond to Slack from Claude.

Category
Visit Server

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:

  1. Go to https://api.slack.com/apps → Create New AppFrom manifest
  2. Select your workspace
  3. 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
  1. Click Install to Workspace → Allow
  2. 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 secretSLACK_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 client
  • mcp - Model Context Protocol server

Recommended Servers

playwright-mcp

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.

Official
Featured
TypeScript
Magic Component Platform (MCP)

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.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

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.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

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.

Official
Featured
TypeScript
Kagi MCP Server

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.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

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.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured