Skip to main content

Distributing apps with MCP servers on the Slack Marketplace

This feature is still rolling out to developers

To check if you have access to this feature, go to App Settings. For any app, look for an MCP Servers label in the left sidebar under Features.

There are additional requirements for apps using MCP servers, on top of the other requirements for all Slack apps.

Visual design best practices

When users browse available MCP servers in the Slackbot toolbar, your app's name and logo are the first things they see. A clear name and distinctive logo help users quickly find and identify your app. Your app icon should be unique, distinctive, and understandable. Don't include lots of text that will be hard to read at a small size.

For more guidance, refer to the app design best practices and the Marketplace app guidelines.

Pre-submission checklist

  • App includes mcp:connect in bot scopes (via app manifest or App Settings)
  • MCP server is configured with a valid HTTPS url (via app manifest or App Settings)
  • Authentication is configured
  • If using OAuth via app manifest: external_auth_providers is defined and auth_provider_key references it
  • If using OAuth: client secret is added via the External MCP Servers section in the App Settings
  • If using OAuth: redirect URI registered with your OAuth provider is https://oauth2.slack.com/external/auth/callback
  • App is installed to the workspace (org-level for Enterprise)
  • MCP connector appears in the Slackbot toolbar
  • Tool discovery works (Slackbot lists your tools)
  • Tool invocation works (Slackbot calls your tools and returns results)
  • Tools have human-readable titles, accurate descriptions, and input schemas where applicable
  • Review the Marketplace guidelines before submitting
You need to fetch all tools via App Settings

In the left sidebar under Features, click MCP Servers. Next to each entry in the MCP Server Connection Details table you'll see a kebab menu. Within that menu click Tools and then click Fetch Tools. Fetching calls your server's tools/list endpoint using your authentication and saves the results.

Submission

  • DO include example workflows in your submission notes that demonstrate the end-to-end experience: app installation → user authentication → MCP tool call → response.
  • DO provide clear examples of your most commonly used tools (including a brief description of what they do) in your long description and on your landing page.
  • DO configure the mcp:connect scope as an optional scope where possible, so that admins can install the base app without requiring MCP enablement. Note: if this is your app's sole functionality, this scope will be required.

MCP client

  • DO ensure your MCP server URL is valid and passes TLS verification.
  • DO give each tool a human-readable title and an accurate description that clearly reflects what the tool does. Slackbot uses these to reason about when and how to invoke your tools; quality here directly affects the user experience.
  • DO set the readOnlyHint annotation on every tool. This value directly controls how your tool is categorized (read vs. write) in the Slackbot UI and how it's presented to users.
  • DO include a valid inputSchema for any tool that requires input parameters.
  • DO ensure that user authentication works as expected end-to-end, and that the auth flow is intuitive and clearly communicated to users.
  • 🚫 DON'T use tool titles or descriptions that are vague, misleading, or that violate Slack's Marketplace guidelines. These will be grounds for rejection.

MCP apps (in addition to the above)

  • DO include at least one screenshot in your submission that shows your MCP tool in use within a Slackbot conversation.
  • DO ensure the iframe renders cleanly on desktop with no broken content, cut-off text, or race conditions on load.
  • DO ensure fullscreen behavior, if used, works correctly.
  • DO ensure all buttons and interactive elements function without errors.
  • DO ensure that where Block Kit is used, buttons trigger the correct tool calls and responses render as expected.
  • 🚫 DON'T return iframe content that diverges from what your tool descriptions indicate the app will do.
  • 🚫 DON'T use the iframe to surface your entire platform or replicate a full app experience. Iframes should be scoped to the specific output of the tool call that triggered them — they should not serve as a general-purpose embed for your product.

Post-approval

  • DO keep your iframe content consistent with your approved tool descriptions. Significant divergence may result in app suspension.
  • 🚫 DON'T allow sustained tool failures within Slack. Apps with repeated tool failures are subject to auto-off enforcement.

Review those requirements, then follow the distribution guide to submit your app for review. Once approved, users can find and install your app from the Slack Marketplace, which makes your MCP tools available to them.