--- title: Slack description: Let the SurfSense agent search and read your Slack workspace --- The Slack connector connects SurfSense to Slack's hosted MCP server, giving the agent live tools to search channels and read threads on your behalf. Nothing is indexed in the background — the agent queries Slack in real time when you ask. This setup is only needed on **self-hosted** deployments. On SurfSense Cloud, just click **Connect**. ## Step 1: Create a New Slack App 1. Navigate to [api.slack.com/apps](https://api.slack.com/apps) 2. Click **"Create New App"** 3. Select **"From scratch"** ![Create an App Dialog](/docs/connectors/slack/slack-create-app.png) ## Step 2: Name App & Choose Workspace 1. Enter **App Name**: `SurfSense` 2. Select the workspace to develop your app in 3. Click **"Create App"** You won't be able to change the workspace later. The workspace will control the app even if you leave it. ![Name App & Choose Workspace](/docs/connectors/slack/slack-name-workspace.png) ## Step 3: Get App Credentials On the **Basic Information** page: 1. Copy your **Client ID** 2. Copy your **Client Secret** (click Show to reveal) ![Basic Information - App Credentials](/docs/connectors/slack/slack-app-credentials.png) ## Step 4: Configure the Redirect URL 1. In the left sidebar, click **"OAuth & Permissions"** 2. Under **Redirect URLs**, click **"Add New Redirect URL"** 3. Enter your SurfSense callback URL: ``` http://localhost:3929/api/v1/auth/mcp/slack/connector/callback ``` `http://localhost:3929` is the default public URL of a Docker install. If you run SurfSense [manually](/docs/manual-installation), use your backend URL (`http://localhost:8000`); in production, use your public domain. Note that Slack requires HTTPS redirect URLs for production apps. 4. Click **"Add"**, then **"Save URLs"** ![Redirect URLs Configuration](/docs/connectors/slack/slack-redirect-urls.png) ## Step 5: Configure User Token Scopes On the same **OAuth & Permissions** page, scroll to **Scopes**. The connector acts on behalf of the connecting user, so add these under **User Token Scopes**: | OAuth Scope | Description | |-------------|-------------| | `search:read.public` | Search public channels | | `search:read.private` | Search private channels the user is in | | `search:read.mpim` | Search group direct messages | | `search:read.im` | Search direct messages | | `channels:history` | Read messages in public channels | | `groups:history` | Read messages in private channels | | `mpim:history` | Read group direct messages | | `im:history` | Read direct messages | ## Step 6: Enable Public Distribution 1. In the left sidebar, click **"Manage Distribution"** 2. Under **Share Your App with Other Workspaces**, enable distribution so users can authorize the app in their own workspaces ![Manage Distribution](/docs/connectors/slack/slack-distribution.png) ## Step 7: Add the Credentials to SurfSense Add the Client ID and Client Secret to your `.env` file: ```bash SLACK_CLIENT_ID=your_slack_client_id SLACK_CLIENT_SECRET=your_slack_client_secret ``` Restart SurfSense, open the **Connectors** dialog, and click **Connect** on Slack: ```bash docker compose up -d ``` Never share your app credentials publicly.