Slack MCP Server with SSE Transport
LocalAbout Slack MCP Server with SSE Transport
A TypeScript MCP server that lets AI assistants access Slack workspace functions over HTTP using SSE. It provides tools for channels, messages, threads, reactions, and user information, with Docker deployment support.
Key features
- 01SSE transport over HTTP/HTTPS
- 02List public channels
- 03Post messages and reply to threads
- 04Read channel history and thread replies
- 05Add message reactions
- 06Retrieve users and profiles
Use cases
- 01Search channel lists and recent messages
- 02Post updates or thread replies
- 03Add reactions to Slack messages
- 04Look up workspace users and profiles
MCP support
Exposes Slack API functions as tools to MCP clients through the `/sse` endpoint. Clients must support SSE transport.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
Tools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project READMESlack MCP Server with SSE Transport
A Model Context Protocol (MCP) server that provides Slack API integration using Server-Sent Events (SSE) transport. This server allows AI assistants to interact with Slack workspaces through a simple HTTP-based interface.
Features
- SSE Transport: Uses Server-Sent Events (SSE) instead of stdio, enabling communication over HTTP/HTTPS
- Slack API Integration: Provides access to essential Slack API functionality
- Simple Web Interface: Includes a basic web UI and health check endpoint
- Docker Support: Fully containerized with Docker for easy deployment
- TypeScript Implementation: Built with TypeScript for type safety and better developer experience
- Cross-Platform Compatibility: Works with any MCP client that supports SSE transport
Prerequisites
- Node.js 18 or higher
- Slack Bot Token with appropriate permissions
- Slack Team ID
- Docker (optional, for containerized deployment)
Environment Variables
| Variable | Description | Default |
|---|---|---|
SLACK_BOT_TOKEN | Your Slack Bot User OAuth Token (starts with xoxb-) | Required |
SLACK_TEAM_ID | Your Slack Workspace/Team ID | Required |
PORT | Port on which the server will run | 3000 |
Setup Instructions
Obtaining Slack Bot Token and Team ID
-
Create a Slack App:
- Visit the Slack Apps page
- Click "Create New App"
- Choose "From scratch"
- Name your app and select your workspace
-
Configure Bot Token Scopes:
- Navigate to "OAuth & Permissions" in your app settings
- Add these scopes:
channels:history- View messages and other content in public channelschannels:read- View basic channel informationchat:write- Send messages as the appreactions:write- Add emoji reactions to messagesusers:read- View users and their basic information
-
Install App to Workspace:
- Click "Install to Workspace" and authorize the app
- Save the "Bot User OAuth Token" that starts with
xoxb-
-
Get your Team ID:
- Open Slack in a web browser
- Once logged in, check the URL in your browser
- The URL will be in a format like:
https://app.slack.com/client/T01234567/... - Your Team ID is the string beginning with T (e.g.,
T01234567)
Local Development
- Clone the repository
- Install dependencies:
npm install - Create a
.envfile based on.env.example:SLACK_BOT_TOKEN=xoxb-your-slack-bot-token SLACK_TEAM_ID=your-slack-team-id PORT=3000 - Build the TypeScript code:
npm run build - Start the server:
npm start
For development with automatic reloading:
npm run dev
Docker Deployment
Using Docker Compose (Recommended)
- Create a
.envfile with your Slack credentials as shown above - Build and run the container:
docker compose up --build
Using Pre-built Image
docker run -p 3000:3000 \
-e SLACK_BOT_TOKEN=xoxb-your-slack-bot-token \
-e SLACK_TEAM_ID=your-slack-team-id \
ghcr.io/dvelopment/slack-mcp-server-sse:latest
For more detailed Docker instructions, including publishing to GitHub Container Registry, see DOCKER.md.
Server Endpoints
- SSE Endpoint:
/sse- Connect to this endpoint to receive SSE events - Health Check:
/health- Simple health check endpoint (returns{"status":"ok"}) - Home Page:
/- Simple HTML page with information about the server
Available Slack API Tools
| Tool Name | Description | Required Parameters |
|---|---|---|
slack_list_channels | List public channels in the workspace with pagination | None (optional: limit, cursor) |
slack_post_message | Post a new message to a Slack channel | channel_id, text |
slack_reply_to_thread | Reply to a specific message thread in Slack | channel_id, thread_ts, text |
slack_add_reaction | Add a reaction emoji to a message | channel_id, timestamp, reaction |
slack_get_channel_history | Get recent messages from a channel | channel_id (optional: limit) |
slack_get_thread_replies | Get all replies in a message thread | channel_id, thread_ts |
slack_get_users | Get a list of all users in the workspace | None (optional: cursor, limit) |
slack_get_user_profile | Get detailed profile information for a specific user | user_id |
Connecting to the Server
Node.js Client Example
// Replace with your server URL
const SERVER_URL = 'http://localhost:3000/sse';
// Create EventSource to connect to the SSE endpoint
const eventSource = new EventSource(SERVER_URL);
// Handle connection open
eventSource.onopen = () => {
console.log('Connected to SSE server');
};
// Handle messages
eventSource.onmessage = (event) => {
console.log('Received message:', event.data);
try {
const data = JSON.parse(event.data);
console.log('Parsed data:', data);
} catch (error) {
console.log('Raw message (not JSON):', event.data);
}
};
// Handle errors
eventSource.onerror = (error) => {
console.error('SSE connection error:', error);
eventSource.close();
};
See the examples directory for complete client examples:
examples/client.js- Node.js client exampleexamples/browser-client.html- Browser client example
Using with Claude MCP Wrapper
To use this server with the Claude MCP wrapper:
claude_mcp_wrapper.sh -y docker run -i --rm -e SLACK_BOT_TOKEN -e SLACK_TEAM_ID mcp/slack
Or for an SSE-based connection:
claude_mcp_wrapper.sh -y http://localhost:3000/sse
License
MIT
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.