Guide · Integrations

How to Add Slack MCP to Toqan

Connect Toqan to Slack via the Slack MCP, so your agents can search, read, and post in Slack on your behalf

How to Add Slack MCP to Toqan
🔌
Connect Toqan to Slack via the Slack MCP, so your agents can search, read, and post in Slack on your behalf — using your own Slack permissions and PKCE-protected OAuth.

What this allows you to do

Use Toqan to interact with Slack directly through MCP, without writing API code or maintaining custom integrations. Common use cases:

  • Search public and private Slack messages your account can already see
  • Read channel and thread history for research, summaries, and status reports
  • Send messages and threaded replies on your behalf
  • Create, read, and update Slack Canvases
  • Add and read reactions, look up users and emojis

Overview

Time to set up:

  • ~10 minutes for Part 1 (create the Slack app)
  • ~5–10 minutes for Part 2 (add the MCP server to your Toqan agent)
  • ~5 minutes for Part 3 (optional — company admins publishing to the MCP Marketplace)

What you will need

  1. A Toqan account
  2. A Slack workspace where you can create and install Slack apps
ℹ️
Slack does not support Dynamic Client Registration (DCR) for MCP OAuth flows, so you'll create your own Slack app from the manifest first (Part 1), then paste its Client ID and Client Secret into Toqan when adding the MCP server (Part 2).

Part 1: Create the Slack app from the manifest

Create a Slack app from the manifest, install it to your workspace, and copy the Client ID and Client Secret. You’ll paste those into Toqan in Part 2.

Step 1: Open Slack’s app dashboard

  1. Go to https://api.slack.com/apps and sign in
  2. Click Create New App
  3. Choose From a manifest
  4. Pick the Slack workspace that will own the app
  5. Switch to the JSON (or YAML) tab and paste one of the manifests from Step 2 below
  6. Click Next, review the configuration summary, then click Create

Step 2: Manifest files

Use one of the formats below — they’re equivalent.

JSON
{
  "display_information": {
    "name": "Toqan Slack MCP App"
  },
  "features": {
    "bot_user": {
      "display_name": "Toqan Slack MCP App",
      "always_online": true
    }
  },
  "oauth_config": {
    "redirect_urls": [
      "https://work.toqan.ai/callback/mcp",
      "https://work.toqan.ai/callback/oauth"
    ],
    "scopes": {
      "user": [
        "search:read.public",
        "search:read.private",
        "search:read.mpim",
        "search:read.im",
        "search:read.files",
        "search:read.users",
        "chat:write",
        "channels:history",
        "groups:history",
        "mpim:history",
        "im:history",
        "canvases:read",
        "canvases:write",
        "users:read",
        "users:read.email",
        "reactions:write",
        "reactions:read",
        "emoji:read",
        "files:read",
        "channels:write",
        "groups:write",
        "im:write",
        "mpim:write",
        "channels:read",
        "groups:read",
        "mpim:read"
      ],
      "bot": [
        "channels:history",
        "groups:history",
        "im:history",
        "mpim:history",
        "chat:write",
        "channels:read"
      ]
    },
    "pkce_enabled": true
  },
  "settings": {
    "org_deploy_enabled": true,
    "socket_mode_enabled": false,
    "token_rotation_enabled": false,
    "is_mcp_enabled": true
  }
}
YAML
display_information:
  name: Toqan Slack MCP App
features:
  bot_user:
    display_name: Toqan Slack MCP App
    always_online: true
oauth_config:
  redirect_urls:
    - https://work.toqan.ai/callback/mcp
    - https://work.toqan.ai/callback/oauth
  scopes:
    user:
      - search:read.public
      - search:read.private
      - search:read.mpim
      - search:read.im
      - search:read.files
      - search:read.users
      - chat:write
      - channels:history
      - groups:history
      - mpim:history
      - im:history
      - canvases:read
      - canvases:write
      - users:read
      - users:read.email
      - reactions:write
      - reactions:read
      - emoji:read
      - files:read
      - channels:write
      - groups:write
      - im:write
      - mpim:write
      - channels:read
      - groups:read
      - mpim:read
    bot:
      - channels:history
      - groups:history
      - im:history
      - mpim:history
      - chat:write
      - channels:read
  pkce_enabled: true
settings:
  org_deploy_enabled: true
  socket_mode_enabled: false
  token_rotation_enabled: false
  is_mcp_enabled: true

Step 3: Install to your workspace

  1. In the app dashboard, go to Install App in the left sidebar
  2. Click Install to Workspace
  3. Approve the requested scopes
  4. (Enterprise Grid only) If your org uses Enterprise Grid, also approve the app at the org level. The manifest sets org_deploy_enabled: true, so org-wide deploy is allowed.

Step 4: Copy the Client ID and Client Secret

From the Slack app’s Basic Information page, scroll to the App Credentials section:

  • Copy the Client ID
  • Click Show next to Client Secret and copy it
  • Keep them handy — you’ll paste them into Toqan in Part 2
🥳
The Toqan Slack MCP App is now installed in your workspace. Move on to Part 2 to connect it to your Toqan agent.

Part 2: Add the Slack MCP server to your Toqan agent

Connect the Slack app you created in Part 1 to your Toqan agent. This follows the general MCP setup process, with Slack-specific values pre-filled.

Step 1: Create the MCP server in Toqan

  1. Navigate to your agent in Toqan and open the Tools tab
  2. Click Add MCP Servers
  3. Give it a name, e.g. Slack MCP

Step 2: Enter the URL

Slack MCP server URL: https://mcp.slack.com/mcp

Step 3: Protocol selection

Slack uses Streamable HTTP — the URL ends with /mcp.

Step 4: Configure authentication

  1. Select OAuth as the authentication method
  2. Toqan attempts OAuth discovery automatically; for Slack, this pre-fills the auth endpoints
  3. Slack does not support Dynamic Client Registration (DCR), so select Manual Client Registration:
    • Paste the Client ID from your Slack app (Part 1, Step 4)
    • Paste the Client Secret from your Slack app (Part 1, Step 4)
    • Click Confirm
🔐
The OAuth flow uses PKCE and grants the app a user token under your Slack account. The agent acts as you in Slack — it can only see and do what you can see and do.

Step 5: Safety confirmations

Review the safety considerations, check both confirmation boxes, and click Next.

Step 6: Scopes

The Slack MCP server requests the scopes it needs (search, channel/group/DM history, chat:write, canvases, reactions, users, files — see the Reference section below for the full list). Click Approve.

Step 7: Authorize Slack

  1. Click Authorize
  2. Log in to Slack if you aren’t already
  3. Slack shows “Toqan Slack MCP App is requesting access…” — review the permissions and click Allow
  4. You’re redirected back to Toqan
  5. A green status indicator appears with “you have a valid token”

Step 8: Manage which tools the agent can use

On the new MCP server, click the three dots next to the settings wheel → Manage tools. A solid starting set:

  • SendMessage — post messages
  • ReadChannel / ReadThread — pull message history
  • SearchPublic / SearchPublicAndPrivate — find content
  • CreateCanvas / ReadCanvas / UpdateCanvas — work with Slack Canvases
  • ListChannelMembers, ReadUserProfile — channel and user context
  • AddReaction / GetReactions — reactions

Enable only the tools your agent actually needs.

Step 9: Add Slack guidance, test, and publish

(Optional but recommended) In the agent’s Details tab, add a short block to the instructions field telling the agent how to use Slack. Don’t delete the existing instructions. Example:

Slack usage — When asked to share a result, post it in #{channel-id} (“channel-name”) using the SendMessage tool. Always include a one-line summary in the message header.

You can find a channel ID by opening the channel in Slack, clicking its title, and scrolling to the bottom.

Then:

  • Click Save
  • Open the agent and ask what tools it can access — Slack tools should appear in the list
  • Try a real task, for example: “Summarize today’s messages in #toqan-eng and post the summary back to the channel.”
  • When you’re happy with the result, click Publish
  • When you share the agent with someone else, they will need to authorize their own Slack account (each OAuth user token is per-person)
🥳
Your agent can now use Slack via MCP.

Part 3: Make the Slack MCP available company-wide (Toqan admins)

(Optional) Once Part 1 is done, a Toqan company admin can publish the Slack MCP to your company’s MCP Marketplace. After that, anyone in your company can add the Slack MCP to their agent in a couple of clicks — they don’t need the URL, Client ID, or Client Secret themselves, only their own Slack account to authorize.

Step 1: Open the MCP listings tab

In the Toqan admin panel, navigate to the MCP listings tab.

Step 2: Create a new listing

  1. Click Create New Listing
  2. Enter the Slack MCP connection details:
    • URL: https://mcp.slack.com/mcp
    • Protocol: Streamable HTTP
    • Auth: OAuth (Manual Client Registration)
    • Client ID and Client Secret from your Slack app (Part 1, Step 4)
  3. Add a clear description, e.g. “Search, read, and post in Slack from your Toqan agent — uses your own Slack permissions.”
  4. Note any prerequisites, e.g. “Each user will authorize their own Slack account on first use.”

Step 3: Test the listing

Before publishing, run a quick test from your own agent to confirm:

  • The OAuth flow completes and Toqan ends up with a valid user token
  • Slack MCP tools appear under Manage tools
  • A simple tool call (e.g. SearchPublic or SendMessage) works

Step 4: Publish

Click Publish. The Slack MCP listing is now visible to every user in your company under Tools → MCP Servers → from Marketplace.

🥳
The Slack MCP is now in your company's MCP Marketplace. Users can add it in their agents without entering any URL or credentials — they just authorize their own Slack account.
ℹ️
Even with a shared listing, authentication stays per-user. Each Toqan user gets their own Slack user token, scoped to the channels they're a member of. Admins cannot access user tokens.

Reference: what’s in the manifest

The Slack MCP app is configured with:

  • User token scopes — the agent acts as the connected user: search across channels/DMs/files, read channel/group/DM/MPIM history, post messages, manage Canvases, read/write reactions, look up users.
  • Bot token scopes — minimal: read channel/group/DM/MPIM history, post messages, list channels.
  • PKCE enabled — required for MCP OAuth flows.
  • is_mcp_enabled: true — marks this app as a Slack MCP app.
  • socket_mode_enabled: false and no event subscriptions — the app is request/response only; it doesn’t subscribe to incoming Slack events.

FAQ

Can I limit what data the agent can see in Slack?

Yes. The agent uses your Slack user token, so it can only see channels you’re already a member of. You can also restrict which Slack MCP tools the agent has access to (Step 8 of Part 2) — e.g. make it read-only by disabling SendMessage and any *:write tools.

Why does the manifest request so many user scopes?

Slack MCP exposes a wide range of tools (search, history, write, canvases, reactions). Each tool requires its corresponding scope. You don’t have to expose every tool to every agent — pick only the tools your agent needs in Toqan.

Does this work with Enterprise Grid?

Yes — the manifest sets org_deploy_enabled: true. A Grid admin needs to approve and deploy the app at the org level once; after that, individual workspaces can install it.

How do I update the app later (e.g. add a new scope)?

Edit the manifest at api.slack.com/apps → your app → App Manifest, paste an updated version, and click Save Changes. Existing installs will be prompted to re-authorize when new scopes are added.