Skip to Content

Connect the Slack MCP Server

Slack hosts an MCP server  at mcp.slack.com/mcp, exposing for searching, reading, and sending messages, working with canvases, and looking up . This guide covers the Arcade-side setup for connecting it as a remote MCP server, plus the Slack settings that most commonly trip people up.

This guide is about connecting to Slack’s own server, not the Arcade Slack toolkits. Arcade’s Slack toolkit and Slack API toolkit cover Slack with none of the setup below.

Reach for Slack’s server instead when you want the Slack itself builds and maintains, with access governed by your own Slack app and the scopes you grant it.

This guide is sourced from Slack’s MCP server overview  and sample app guide .

Outcomes

Connect Slack’s server to Arcade and use its in gateways and SDKs.

You will Learn

  • Which Slack app settings matter for Arcade specifically, and why
  • Configure the remote server’s OAuth 2.0 settings in Arcade
  • Why Slack’s per-user descriptions matter in a shared gateway, and how to turn them off

Prerequisites

Set up Slack

Slack’s server only accepts clients backed by a registered Slack app. Follow Slack’s sample app guide  to create one. A few settings on that app matter specifically for connecting to Arcade:

  • App type: only internal apps and apps published in the Slack Marketplace can use the server. An internal app installed to your own workspace is the usual choice for Arcade.

  • : turn on the feature under in the app’s settings (or set settings.is_mcp_enabled in the app manifest). Without it, the app can’t connect to the MCP server.

  • token scopes: the server’s act on behalf of each user, so they need user token scopes, added under OAuth & Permissions. Each tool needs its own scopes. For example, searching messages needs search:read.public (plus search:read.private, search:read.mpim, and search:read.im for private conversations), and sending messages needs chat:write. Check the scope table in Slack’s MCP server overview  and add a scope for every tool you plan to expose.

  • Redirect URLs: set this once you have the redirect URI Arcade generates (see Add the redirect URI to your Slack app below).

Configure the remote server in Arcade

Register the server

Go to the MCP servers dashboard , click Add Server, choose Remote , and enter a server ID and the server URL:

PLAINTEXT
https://mcp.slack.com/mcp

Configure OAuth2 authorization

Open Advanced settings → OAuth2 authorization and enter your Slack app’s Client ID and Client Secret.

Slack’s server doesn’t support Dynamic Client Registration, so you must supply the Client ID and Secret manually. If you leave these blank, Arcade attempts Dynamic Client Registration and the connection fails.

Add the redirect URI to your Slack app

Copy the redirect URI Arcade generated and add it under Redirect URLs in your Slack app’s OAuth & Permissions settings.

Authorize and confirm

Save the server to open the authorization prompt. Sign in with a Slack in the workspace where you installed the app, and approve the requested scopes.

Per-user tool descriptions

Slack’s server writes the authorizing user’s Slack user ID into some descriptions, such as slack_search_public_and_private and slack_send_message. An reads that ID as “me”, so a description listed with one person’s credentials can point another ’s agent at the wrong person: searching for someone else’s mentions, or sending a message to someone else.

Arcade fetches a remote server’s list with the credentials of the admin who authorized it (see Who authenticates, and when). With Slack’s server, that list can carry the admin’s ID to every user of a gateway, even though each tool call still runs with the calling user’s own token.

Slack can switch these per-user descriptions off for your workspace, but only on request. Contact Slack support and ask them to turn off per-user tool descriptions on the Slack server. Do this before you roll the server out beyond a single .

Troubleshooting

  • A Dynamic Client Registration error when you save the server: the Client ID and Client Secret are empty. See Configure OAuth2 authorization.
  • Authorization doesn’t complete, or the server never lists : confirm the feature is turned on for your Slack app. See Set up Slack.
  • A call fails with missing_scopes: your Slack app doesn’t request a token scope that tool needs. Add the scope under OAuth & Permissions, then have the affected user authorize again so their token picks it up.
  • An acts on the wrong person when asked about “me”: the descriptions name a different . See Per-user tool descriptions.

Next steps

Last updated on