Gives Claude direct access to your Slack workspace through a User Token, exposing six focused tools for message retrieval and search. You get search_messages with granular filters (channel, user, date range, reactions), get_thread_replies for conversation context, bulk user profile lookups, file search across canvases and attachments, and get_canvas_content for extracting HTML. Runs on stdio by default or as an HTTP server. Reach for this when you need Claude to dig through Slack history, analyze thread discussions, or pull context from past conversations without manually copying messages. Requires a User Token with appropriate scopes like channels:history, search:read, and files:read.
A Model Context Protocol (MCP) server specialized in retrieving information from Slack messages and threads. It provides tools to access messages that the authenticated user can view using a User Token (xoxp).
Message Search (search_messages)
query: Basic search query. Use dedicated fields for inclusion modifiers (bare modifiers in this field are rejected). Exclusion modifiers prefixed with - (e.g., -in:#channel) ARE allowed herein_channel: Filter by channel name (e.g., "general", "team-dev")from_user: Search messages from specific user (User ID)with: Search DMs/threads with specific users (array of User IDs)before, after, on: Date range filtering (YYYY-MM-DD format)during: Period specification (e.g., "July", "2023")has: Messages containing specific features (emoji, "pin", "file", "link", "reaction")hasmy: Messages where you reacted with specific emojisort: Sort method ("score" or "timestamp")count: Number of results per page (1-100, default: 20)page: Page number (1-100, default: 1)Thread Replies (get_thread_replies)
channel_id: Channel ID (required)thread_ts: Parent message timestamp (required)limit: Number of replies to retrieve (1-1000, default: 100)cursor: Pagination cursorUser Profiles (get_user_profiles)
user_ids: Array of user IDs (required, max 100)Search Users by Display Name (search_users_by_name)
display_name: Display name to search for (required)exact: Enable exact match searchFile Search (search_files)
query: Basic search query. Use dedicated fields for inclusion modifiers (bare modifiers in this field are rejected). Exclusion modifiers prefixed with - (e.g., -type:pdfs) ARE allowed heretypes: Filter by file types (e.g., ["canvases", "pdfs"]). Available types: lists, canvases, documents, emails, images, pdfs, presentations, snippets, spreadsheets, audio, videosin_channel: Filter by channel name (e.g., "general", "team-dev")from_user: Search files from specific user (User ID)with_users: Search files in DMs/threads with specific users (array of User IDs)before, after, on: Date range filtering (YYYY-MM-DD format)count: Number of results per page (1-100, default: 20)page: Page number (1-100, default: 1)Canvas Content (get_canvas_content)
canvas_ids: Array of canvas IDs (required, max 20)channels:history - For public channelsgroups:history - For private channelsim:history - For direct messagesmpim:history - For group direct messagessearch:read - For message searchusers.profile:read - For user profilesusers:read - For user informationfiles:read - For file content accessConfigure mcp.json
{
"mcpServers": {
"slack-explorer-mcp": {
"command": "docker",
"args": ["run", "-i", "--rm", "--pull", "always",
"-e", "SLACK_USER_TOKEN=xoxp-your-token-here",
"ghcr.io/shibayu36/slack-explorer-mcp:latest"
]
}
}
}
If you're using Claude Code:
claude mcp add slack-explorer-mcp -- docker run -i --rm --pull always \
-e SLACK_USER_TOKEN=xoxp-your-token-here \
ghcr.io/shibayu36/slack-explorer-mcp:latest
Use the agent to perform Slack searches
Examples:
Search in a specific channel
Search for "release" messages in the general channel
Search messages from a specific user
Search for yesterday's messages from @john.doe
Search messages with reactions
Search for messages with :fire: reactions
Search messages you reacted to
Search for messages where you reacted with :eyes:
Search messages with file attachments
Search for messages with file attachments
By default, the server uses stdio for MCP communication. You can start it as a Streamable HTTP server by setting the TRANSPORT=http environment variable. In HTTP mode, pass the Slack token using the X-Slack-User-Token header.
Starting the server:
# Start HTTP server (default: all interfaces 0.0.0.0, port 8080)
docker run -i --rm --pull always \
-e TRANSPORT=http \
-p 8080:8080 \
ghcr.io/shibayu36/slack-explorer-mcp:latest
# Start with custom host and port
docker run -i --rm --pull always \
-e TRANSPORT=http \
-e HTTP_HOST=127.0.0.1 \
-e HTTP_PORT=9090 \
-p 9090:9090 \
ghcr.io/shibayu36/slack-explorer-mcp:latest
io.github.mindstone/mcp-server-microsoft-teams
com.mintmcp/outlook-email
helbertparanhos/resend-email-mcp
marlinjai/email-mcp
io.github.mindstone/mcp-server-email-imap
io.github.osamahassouna/email-playbook-mcp