Feature request: Support multiple Slack workspaces in the built-in Slack connector
Feature Request
The built-in Slack MCP connector currently supports only one workspace per Claude account. There is no way to add a second workspace through the UI or configuration.
Use Case
Many professionals work across multiple Slack workspaces -- for example, a consultant with their own company workspace and a client workspace, or a founder who advises other companies. Today, connecting workspace #1 is one click. Connecting workspace #2 requires setting up a self-hosted MCP server from scratch: downloading a third-party binary, creating a Slack app manually at api.slack.com, configuring seven OAuth scopes, writing MCP JSON config with the correct CLI flags, and restarting Claude Code.
Request
Allow users to authorize multiple Slack workspaces through the same built-in connector that makes the first workspace so easy. Even supporting two would cover the majority of multi-workspace users.
32 Comments
Found 3 possible duplicate issues:
This issue will be automatically closed as a duplicate in 3 days.
🤖 Generated with Claude Code
Not a dupe. This is a distinct issue.
+!
I have a work slack and a home slack, and I'd like my assistant to be able to aggregate information across both when needed.
Yes. I have a fairly similar situation. In this case 1 Pro Max x20 personal claude and slack, and 1 Claude and 1 Slack from my company. Even if I could just have each communicate with the corresponding slack with an easier way to sign into my different versions of Claude, it would be amazing.
+1
+1. Many companies have multiple slack workspaces and then add to them many attached customer/partner workspaces!
+1 - this seems like a very common usecase
I also have this use case - +1
+1
Also looking forward to this! +1
+1
+1
+1
+1
Linear, Google, ... please support multiple workspaces for other apps as well
+1
+1
+1 I have multiple use cases for this
Workaround for Slack Enterprise Grid customers: Slack Grid seems to grant access to channels across companies after they are enrolled in Slack Grid. The big caveat here is that it has to take months or longer to migrate, or there is never a migration option.
Partner/Vendor workaround: Slack Connect works, but not all partners or vendors use it. I don't have a current example to test the simple invite at the moment.
Concerns
Many organizations won't want data to be shared from corporate Slack to personal or community Slack. Ideally, there is control for multi-tenant situations. Maybe as simple as requiring permission to share between Slack Organizations that are not part of Grid.
+1
+1
+1
+1
+1
+1
+1
+1 with a longer note than usual — I went deep on this trying to ship a plugin that bundles two Slack workspaces, and want to share the failure modes I hit and a concrete API proposal, in case it's useful as you scope the fix.
What I tried
Plugin
.mcp.jsonshipping two entries pointing at Slack's hosted MCP, one per workspace:Two distinct walls hit, in order.
What it looks like when it works
Once both servers are wired through the workarounds below, the experience is exactly what you'd want — a single Claude Code session can read and write across workspaces in one turn:
So the underlying capability is already there at the MCP layer — two Slack connections coexisting in one session, distinct tool prefixes, separate OAuth tokens. The missing pieces are entirely on the Claude Code side: deduping by URL inside a plugin, and not exposing a way to pin the OAuth workspace.
Wall 1 — intra-plugin URL deduplication
The second entry is silently suppressed:
Issue #32549 confirms this is intentional for plugin-provided servers. The dedup appears to compare URLs as literal strings — I confirmed empirically that adding a distinguishing query parameter (
https://mcp.slack.com/mcp?team=<id>) bypasses it. Slack's MCP server ignores the unknown param, so the connection works.This is a usable workaround but undocumented behavior to rely on. A future release that normalizes URLs before comparison (which would be the correct behavior for dedup) would silently break every plugin doing this.
Wall 2 — no way to pin the OAuth workspace
Even with both servers connected, the OAuth flow has no workspace constraint. When a user OAuths
workspace-b-slack, Slack's consent screen lets them pick any workspace they're a member of. Mis-clicks are easy and the resulting tools talk to the wrong Slack.Slack's documented mechanism is the
teamquery parameter on the authorize URL, which pre-pins (and effectively forces) the workspace. But:oauth.teamin.mcp.jsonis silently ignored — not in the schema.oauthblock's documented fields areclientId,callbackPort,scopes,authServerMetadataUrl. None lets you inject arbitrary query params into the authorize URL.The only workaround I found is hosting a custom OAuth server metadata JSON, pointing
authServerMetadataUrlat it, and pre-baking theteam=...into theauthorization_endpointfield. Something like:This relies on Claude Code preserving the query string when constructing the OAuth redirect URL. Whether it does is undocumented. If/when that behavior changes, OAuth still succeeds but the workspace pin silently fails — the worst-possible failure mode, since teammates would auth to the wrong workspace without realizing it.
Proposal —
oauth.authorizeParams(or similar)A small additive field that hands the bundle through to the authorize URL:
This is provider-agnostic and unlocks a lot beyond Slack:
teamfor workspace pinninghdto restrict to a Workspace domain,login_hintfor account pin,prompt=select_accountfor explicit account pickerloginfor account hint,allow_signup=falsetenantfor AAD pinIt also fixes the deeper problem behind this issue: the missing primitive isn't really "multi-workspace Slack," it's "plugin-shipped MCP entries can't differentiate themselves at the OAuth-authorize layer." Once that primitive exists, the dedup issue could also be relaxed (two entries with same URL but distinct
authorizeParamsare clearly not duplicates).Happy to test a beta build if useful — currently running the
authServerMetadataUrlworkaround in a small private deployment and would gladly switch to a proper API.+1
+1
This is a blocker
+1
+1
Yes, I have an operations agency that is a part of several slack workspaces. if i could have claude read through them that would be game changing!!