# Slack Explorer MCP [Health: Active]

**Category:** 💬 Communication  
**Repository:** https://github.com/shibayu36/slack-explorer-mcp  
**GitHub Stars:** 50  
**Views:** 0  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/slack-explorer-mcp

## Description
MCP server specialized in retrieving information from Slack messages and threads

## Tools
Capabilities this server exposes over MCP:

- **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 here
- **in_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)
- **during** — Period specification (e.g., "July", "2023")
- **has** — Messages containing specific features (emoji, "pin", "file", "link", "reaction")
- **hasmy** — Messages where you reacted with specific emoji
- **sort** — Sort method ("score" or "timestamp")
- **count** — Number of results per page (1-100, default: 20)
- **page** — Page number (1-100, default: 1)
- **channel_id** — Channel ID (required)
- **thread_ts** — Parent message timestamp (required)
- **limit** — Number of replies to retrieve (1-1000, default: 100)
- **cursor** — Pagination cursor
- **user_ids** — Array of user IDs (required, max 100)
- **display_name** — Display name to search for (required)
- **exact** — Enable exact match search
- **types** — Filter by file types (e.g., ["canvases", "pdfs"]). Available types: lists, canvases, documents, emails, images, pdfs, presentations, snippets, spreadsheets, audio, videos
- **with_users** — Search files in DMs/threads with specific users (array of User IDs)
- **canvas_ids** — Array of canvas IDs (required, max 20)

## Claude Desktop Quick Installation
Remote MCP endpoint (confidence: high). Install path detected from listing signals. Add as a URL/SSE server in your client:

```json
"mcpServers": {
  "slack-explorer-mcp": {
    "url": "https://api.slack.com/apps"
  }
}
```

## Documentation & README

# Slack Explorer MCP Server

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).

## Available Tools

- Message Search (`search_messages`)
  - Search Slack messages with advanced filtering options. You can search by channel, user, date range, and specific features (reactions, files, etc.).
  - Parameters
    - `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 here
    - `in_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 emoji
    - `sort`: 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`)
  - Get all replies in a message thread. Supports pagination for efficiently handling large numbers of replies.
  - Parameters
    - `channel_id`: Channel ID (required)
    - `thread_ts`: Parent message timestamp (required)
    - `limit`: Number of replies to retrieve (1-1000, default: 100)
    - `cursor`: Pagination cursor

- User Profiles (`get_user_profiles`)
  - Get profile information for multiple users in bulk. Retrieve display names, real names, email addresses, and other profile information by specifying a list of user IDs.
  - Parameters
    - `user_ids`: Array of user IDs (required, max 100)

- Search Users by Display Name (`search_users_by_name`)
  - Search users by their display name. Supports both exact match and partial match search with case sensitivity.
  - Parameters
    - `display_name`: Display name to search for (required)
    - `exact`: Enable exact match search

- File Search (`search_files`)
  - Search for files such as canvases, PDFs, and images. You can filter by file type, channel, user, and date range.
  - Parameters
    - `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 here
    - `types`: Filter by file types (e.g., ["canvases", "pdfs"]). Available types: lists, canvases, documents, emails, images, pdfs, presentations, snippets, spreadsheets, audio, videos
    - `in_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`)
  - Get HTML content of Slack canvases. Retrieve canvas content by specifying canvas IDs.
  - Parameters
    - `canvas_ids`: Array of canvas IDs (required, max 20)

## Setup

### Getting a Slack User Token

1. Create an app at [Slack API](https://api.slack.com/apps)
2. Add the following User Token Scopes in OAuth & Permissions:
   - `channels:history` - For public channels
   - `groups:history` - For private channels
   - `im:history` - For direct messages
   - `mpim:history` - For group direct messages
   - `search:read` - For message search
   - `users.profile:read` - For user profiles
   - `users:read` - For user information
   - `files:read` - For file content access
3. Install the app to your workspace
4. Get the User OAuth Token (starts with xoxp-)
   - Tip: To use with multiple users in the same workspace, add them as Collaborators and have each user reinstall from OAuth & Permissions to get their own User OAuth Token

### MCP Server Configuration

1. Configure mcp.json

    ```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:

    ```bash
    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
    ```

2. Use the agent to perform Slack searches

    Examples:
    - "Search for meeting-related messages in the general channel from last week"
    - "Find messages from @john.doe about 'project'"
    - "Get all thread replies for this post"

## Usage

### Common Search Patterns

- **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
  ```

### Using as Streamable HTTP Server

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:
```bash
# 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
```

