Skip to main content

How to Connect Slack

๐Ÿ”ง Tools ยท MCP

Slack's hosted MCP server at https://mcp.slack.com/mcp lets the agent search messages and files, read channel and DM history, post messages, and read or write canvases โ€” scoped to the user that authorized the connection.

1. Create a Slack Appโ€‹

  1. At api.slack.com/apps, Create New App โ†’ From scratch. Name it Zeta Alpha MCP and pick the target workspace.

  2. Under Agents & AI Apps, enable Model Context Protocol.

  3. (Enterprise Grid only) Under Org Level Apps, enable Enable org-readiness so an org admin can install the app once and grant it to multiple workspaces โ€” see Slack's docs on organization-ready apps.

  4. Under OAuth & Permissions:

    • Redirect URLs โ€” click Add New Redirect URL, enter https://api.zeta-alpha.com/v0/service/mcp/oauth/callback/ (trailing slash required), then Add and Save URLs.

    • Advanced token security via token rotation โ€” opt in. The MCP client refreshes tokens automatically.

    • User Token Scopes โ€” add only what the agent needs (Slack admins approve focused apps more readily):

      search:read.public search:read.private search:read.mpim search:read.im
      search:read.files search:read.users files:read chat:write
      channels:history groups:history mpim:history im:history
      canvases:read canvases:write users:read users:read.email
  5. Copy the Client ID and Client Secret from Basic Information โ†’ App Credentials.

Slack OAuth & Permissions page with Redirect URL and User Token Scopes configured

2. Add the Server to the Agentโ€‹

In Platform Admin, open the agent's Configuration and add this entry to mcp_tools_provider_configuration.servers (see Connecting MCP Servers):

{
"transport": "streamable-http",
"transport_config": {
"streamable_http": {
"url": "https://mcp.slack.com/mcp",
"name": "slack",
"timeout": 30,
"oauth_client": {
"server_url": "https://mcp.slack.com/mcp",
"client_id": "<Slack Client ID>",
"client_secret": "<Slack Client secret>",
"client_metadata": {
"client_name": "Zeta Alpha MCP",
"scope": "search:read.public search:read.private search:read.mpim search:read.im search:read.files search:read.users files:read chat:write channels:history groups:history mpim:history im:history canvases:read canvases:write users:read users:read.email",
"grant_types": ["authorization_code", "refresh_token"],
"response_types": ["code"],
"token_endpoint_auth_method": "client_secret_post",
"redirect_uris": [
"https://api.zeta-alpha.com/v0/service/mcp/oauth/callback/"
]
}
},
"terminate_on_close": true
}
}
}

client_metadata.scope must be a subset of the User Token Scopes on the app.

3. Connect from the Navigatorโ€‹

In a new chat, ask the agent for something that needs Slack (e.g. "Find recent messages mentioning the Q3 roadmap") and follow the Authorize prompt โ€” see Connecting from the Navigator.

If the workspace requires admin approval for new apps, the user sees a "Request approval" screen โ€” an admin needs to approve it once.

Troubleshootingโ€‹

SymptomCause
bad_redirect_uriTrailing-slash mismatch between the Slack app and redirect_uris.
invalid_scope during authorizationA scope in client_metadata.scope isn't enabled under User Token Scopes.
missing_scope at tool-call timeUser authorized before a new scope was added. Re-authorize.
not_in_channel when postingUser isn't a member of the target channel.