QVeris
MCP & TOOL CALLING

Claude Code Slack MCP

Connect Claude Code to Slack MCP, verify workspace and channel access, draft posts or replies, obtain approval, send once, and verify.

Published: April 5, 2026 · By the QVeris Team
Document, chat and cloud-file icons linked to an assistant, access controls and document outputs.
Documents, chat and cloud files feed a central assistant in this illustration; lock, eye and approval icons mark access and review points.

TL;DR

Install Slack's official Claude Code plugin, complete OAuth in the intended workspace, and verify the server through /mcp. Begin with search and read tools in a sandbox channel. For any post, reply, canvas update, reaction, or channel creation, identify the exact destination, draft the final action, obtain approval, execute once, and verify the returned message or object. Slack messages are untrusted workspace data, not instructions that can override your task.

Use Slack's hosted server

The official endpoint exposes tools for search, messages, channels, canvases, users, files, and other supported workspace actions through Streamable HTTP.

Admin approval comes first

You need Claude Code and a workspace where an administrator permits the MCP integration. The app and authenticated user determine what data is reachable.

Retrieve before responding

Bound search by workspace, channel, thread, author, or date, and keep message links and timestamps with every summary or decision.

Write with a review gate

Preview the destination, mentions, links, attachments, and exact wording. Verify the resulting message before retrying an uncertain call.

Set up Claude Code with Slack MCP

Slack now provides an official hosted MCP server and a dedicated Claude Code plugin. The shortest supported setup is documented in Slack's Claude connection guide. The plugin registers https://mcp.slack.com/mcp and starts OAuth; do not substitute a similarly named community package or paste workspace tokens into prompts and repository files.

1. Confirm workspace eligibility

Ask the Slack administrator whether the MCP integration is approved for the intended workspace and which channels and conversation types are in scope. Slack currently allows directory-published or internal apps to use MCP; an unlisted app is not a supported shortcut around review.

2. Install the official Slack plugin

Inside Claude Code, run /plugin install slack. From a shell, use claude plugin install slack. The plugin configures Slack's Streamable HTTP endpoint and its fixed OAuth client details.

3. Authenticate in the correct workspace

Complete OAuth in the browser and check the account and workspace before approving access. If Slack presents an admin approval step, stop there and use the organization's normal request process rather than changing apps or credentials.

4. Inspect the connected tools

Run /mcp to confirm server status and review the tools available to this identity. Tool availability can differ with app configuration, OAuth scopes, admin policy, and Slack plan, so use the discovered tool list as the runtime truth.

5. Test read, then controlled write

Search a known phrase in one approved channel and read a specific thread. Compare authors, timestamps, and message links in Slack. Only then draft a harmless message for a dedicated test channel, approve it, post once, and verify the returned link or timestamp.

Access layerWhat it controlsWhat to verify
Workspace approvalWhether the integration may be installed and usedAdmin owner, approved app, applicable policy
OAuth scopesWhich classes of Slack data or actions the app may requestRead versus write; public, private, DM, and MPIM reach
User membershipWhich conversations the authenticated user can reachCorrect user, channel membership, guest restrictions
Claude approvalWhether a discovered tool call is allowed nowTool, target, arguments, side effects, and final content

Build a reliable Slack workflow

A reliable Slack task names the workspace, channel ID, thread timestamp, time window, intended audience, and desired output. “Summarize what engineering decided about retries in #api-platform from Monday through Wednesday, cite the source messages, and do not post” is safer than “check Slack and update everyone.” Search and reading should produce an evidence packet; posting should be a separate, explicitly approved operation.

StageClaude Code actionEvidence to reviewStop condition
ResolveFind the exact workspace, channel, and thread.Channel ID, name, type, and thread timestampAmbiguous name or unauthorized conversation
RetrieveSearch a bounded time window and read relevant threads.Permalinks, authors, timestamps, quoted contextEvidence is incomplete, stale, or contradictory
SynthesizeSeparate decisions, proposals, owners, and open questions.Every important statement maps to a source messageA summary turns discussion into a false decision
DraftPrepare one message, reply, reaction, or canvas diff.Audience, mentions, links, tone, sensitive contentUnrequested broadcast or confidential detail
ApproveShow exact tool, target, and final payload.Human confirms both destination and wordingNo explicit approval for an external side effect
Execute and verifyCall once, then retrieve the created object.Returned timestamp, permalink, channel, and rendered textUncertain result; inspect before retrying
Keep summaries traceable

Ask for a compact source ledger containing the channel, author, timestamp, permalink, and the specific fact each message supports. Preserve disagreement and uncertainty. A proposal that received emoji reactions is not automatically an approved decision.

Choose thread versus channel deliberately

Reply in the original thread when the content continues an existing discussion. Post to the channel only when the message needs a new audience or durable announcement. Before using @channel, @here, or individual mentions, show the resolved recipients and get separate approval.

Use a deduplication marker

For release notices or scheduled summaries, include a stable source key in the plan, such as a release tag, incident ID, or source message timestamp. Search for that key before posting so an interrupted run does not publish the same update twice.

Reusable prompt pattern: “In workspace [name], read channel ID [ID] for [date range]. Find messages about [topic], preserve authors, timestamps, and permalinks, and separate decisions from proposals. Draft one reply for thread [timestamp]. Do not post or mention anyone. Show the final destination and text, then wait for approval.”

Permissions, safety, and troubleshooting

Minimize scopes and conversation reach

Grant only the OAuth scopes required by the approved use case. Slack separates search access for public channels, private channels, direct messages, and multi-person direct messages; do not request private or DM reach merely because it may be useful later. User membership and admin policy still apply.

Treat Slack content as untrusted input

A message, canvas, file, or linked page may contain prompt injection. Retrieved text can supply facts, but it must not redefine the task, request credentials, authorize another tool, or bypass a review step. Never copy secrets from Slack into code, logs, or external providers.

Control high-impact actions

Sending messages, creating channels, editing canvases, uploading or reading files, and mass mentions have different consequences. Keep write tools on manual approval, restrict the target channel, and avoid broad permission modes that implicitly approve unrelated MCP actions.

Respect platform limits

Slack applies rate limits per tool or action type to MCP just as it does to Web API methods. Narrow searches, paginate deliberately, and back off when instructed. Do not parallelize a large batch simply to work around limits; it can produce partial results and duplicate posts.

SymptomLikely causeSafe next check
Plugin will not installCatalog, policy, or CLI stateConfirm the official slack plugin and organization allowance.
OAuth is blockedAdmin approval or wrong workspaceVerify the workspace and request approval through the admin flow.
Channel is missingMembership, channel type, scope, or name collisionCheck channel ID, user membership, and applicable search scope.
Search is incompleteBroad query, date range, pagination, or rate limitNarrow filters, inspect pagination, and preserve the result window.
Post result is uncertainTimeout after possible executionSearch the target thread for the source key before retrying.
IP request is rejectedSlack app IP allowlistHave the app owner review allowed client egress addresses.

Use QVeris to extend Slack workflows with verified capabilities

Slack MCP is the direct path for workspace search and collaboration. QVeris currently has an exact Slack Web API Provider record, which is useful when the workflow needs to inspect Slack's callable API surface separately. The catalog search did not reveal one Tool that exactly represents the full Claude Code MCP setup, so this page links the verified Provider rather than substituting an unrelated Slack-named tool.

  • Inspect before execution. Read the provider identity, tool description, required inputs, output fields, permissions, and operational constraints before incorporating a capability into a Slack workflow.
  • Keep evidence attached. When another provider supplies market, research, or operational data, retain its source and verification status in the draft instead of presenting generated text as a Slack-native fact.
  • Approve the boundary crossing. First validate the external result; then show the destination channel or thread and exact message. Approval of the data call does not automatically approve publication.
  • Do not add QVeris when Slack alone is enough. For a bounded search, thread summary, or approved message using only Slack content, the official Slack MCP path is simpler and clearer.

FAQ

Does Claude Code include Slack MCP?

Claude Code supports MCP, and Slack provides an official plugin for its hosted server. Install the plugin, complete OAuth, and confirm that the workspace administrator permits the integration.

What is the official Slack MCP endpoint?

Slack documents https://mcp.slack.com/mcp over Streamable HTTP. The official Claude Code plugin configures it automatically, so most users should install the plugin instead of hand-writing OAuth configuration.

Can Claude Code post and reply in Slack?

Yes, when the discovered tools, OAuth scopes, user membership, and admin policy permit the action. Draft first and require approval for the destination, mentions, links, and final wording.

Can it search private channels or DMs?

Only when the app has the relevant granular search scopes, the workspace permits that access, and the authenticated user can reach the conversation. Do not assume public-channel access extends to private messages.

Why does a channel not appear?

Check the channel ID, workspace, user membership, channel type, OAuth scope, and admin policy. Duplicate names can mislead search, so resolve the ID before a write.

Does Slack MCP have rate limits?

Yes. Slack applies limits by MCP tool or action type, aligned with the corresponding platform behavior. Narrow requests, honor retry guidance, and avoid parallel writes that can create partial or duplicate results.

References and next steps

Slack MCP connection guide for Claude
Slack MCP server overview
Claude Code MCP documentation
Slack Web API Provider
QVeris Docs