Claude Code Slack Channel
Enables two-way communication between Claude Code and Slack: routes incoming Slack messages into Claude Code sessions and allows Claude to reply via the send_slack_message tool.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Claude Code Slack ChannelReply to the Slack message from the team channel."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Claude Code Slack Channel
Connect Claude Code to your Slack workspace using the Model Context Protocol (MCP). This server runs a Slack App in Socket Mode that routes incoming messages from Slack directly into your local Claude Code session, and gives Claude the ability to securely reply back!
Features
Two-Way Communication: Send messages from Slack to Claude Code, and allow Claude Code to natively reply using an MCP tool (
send_slack_message).Zero Configuration Tunnels: Uses Slack Socket Mode, meaning no
ngrokor public IP addresses are required. Runs completely locally!Private Channel Support: Fully supports routing messages from private Slack channels.
Related MCP server: Claude Code MCP Server
Setup Instructions
1. Create a Slack App
Go to Slack API Apps and click Create New App > From scratch.
Go to Socket Mode (left sidebar) and toggle it On.
Generate an App-Level Token with the
connections:writescope. (Starts withxapp-).Go to OAuth & Permissions (left sidebar), scroll to Scopes > Bot Token Scopes, and add the
channels:history,chat:write, andgroups:historyscopes.Go to Event Subscriptions (left sidebar), toggle Enable Events to On, and subscribe to
message.channelsandmessage.groupsunder "Subscribe to bot events".Important: Scroll to the bottom and click Save Changes.
Go to Install App and install it into your workspace to get your Bot User OAuth Token (Starts with
xoxb-).
2. Configure Claude Code
You can add this MCP server to your global Claude Code configuration (~/.claude.json) or to a project-specific .claude.json configuration.
Run npm install in this directory to install the @slack/bolt and tsx dependencies. Then, add the following to your mcpServers block, replacing the path and tokens with your actual values:
{
"mcpServers": {
"slack-channel": {
"type": "stdio",
"command": "npx",
"args": [
"tsx",
"/path/to/this/repository/webhook.ts"
],
"env": {
"SLACK_APP_TOKEN": "xapp-...",
"SLACK_BOT_TOKEN": "xoxb-...",
"SLACK_CHANNEL_ID": "C0..." // Optional: add a channel ID here so it only listens to one specific channel!
}
}
}
}3. Usage
Simply restart Claude Code. The server will initialize in the background and connect to Slack.
Invite your bot to any channel in Slack using
/invite @YourBotName.Send a message in that channel, and it will seamlessly appear in Claude Code as context!
You can ask Claude Code directly to "Reply to that Slack message" and it will autonomously use the
send_slack_messagetool to post back.
⚠️ Architecture Caveat: Global vs. Local Configuration
Slack's Socket Mode allows multiple WebSocket connections using the identical App Token, and load-balances (randomizes) incoming messages across all connected clients.
Because of this:
Global Configuration (
~/.claude.json): If you have multiple Terminal windows open running Claude Code simultaneously, each window spawns its own MCP server. When you send a Slack message, Slack will randomly route it to only one of your active terminals.Local Configuration (
./.claude.json): If you only want Slack messages to route uniquely to a specific project workspace, do not configure this server globally. Instead, configure themcpServersblock in a local.claude.jsonfile inside that specific project folder so the webhook server is only spawned when you are actively working in that directory.
Troubleshooting
If messages aren't arriving:
Ensure you have invited the bot to the channel.
Ensure you clicked the yellow "Reinstall to Workspace" banner in Slack after changing event scopes.
Check the
slack-debug.logfile generated in the root of this repository.
Available Tools
1 toolsend_slack_messageA
Send a message to a Slack channel. Use this to reply to webhook channel incoming messages from Slack.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | The markdown text reply to send to Slack | |
| channel | Yes | The Slack channel ID to send the message to (e.g. C0AMZUV0JTZ) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It indicates the message-sending action, but does not mention authentication requirements, permission prerequisites, rate limits, failure behavior, or whether the message is immediately visible to others. This is minimal behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. The core purpose is front-loaded, and the additional usage guidance is concise and directly useful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, two-parameter send action with fully documented parameters, the description provides sufficient context: what the tool does and when to use it. Missing authentication and response details are notable but not critical for this simple operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes both parameters with 100% coverage, including that text is markdown and channel is a Slack channel ID. The description adds little beyond the schema, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('Send a message to a Slack channel') with a concrete resource and format. It also narrows the intended use case to replying to webhook channel messages, making its purpose unmistakable even without sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells the agent when to use the tool: to reply to webhook channel incoming messages from Slack. There are no sibling tools or exclusion conditions, so the usage guidance is appropriately clear for the context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
1 tool update
v1.0.0- First observed
send_slack_message
TDQS
With only one tool, there is no possibility of confusing it with another. The tool's purpose is also clearly stated.
The single tool uses a clear verb_noun pattern: send_slack_message. There are no other tools to create inconsistency, and the name accurately describes the action.
One tool is minimal, but it directly matches the server's narrow stated purpose of replying to Slack webhook messages. It feels slightly thin for a general Slack integration but appropriate for this specific use case.
For the stated purpose of sending Slack messages in response to incoming webhooks, the send operation covers the core need. Missing capabilities like reading messages or managing channels are not necessarily gaps if those arrive via the webhook integration.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Real-time chat for AI agents. Claude Code, Cursor, Cline and Codex join channels over MCP.
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
- QuallaaOAuthcom.quallaa
Talk to your public-facing AI from any MCP client — Claude, ChatGPT, Cursor, Cline, Windsurf.
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
Related MCP Servers
- -licenseNot gradedqualityAmaintenanceMCP Server for the Slack API, enabling Claude to interact with Slack workspaces.121,28290,042MIT
- AlicenseNot gradedqualityDmaintenanceWraps Claude Code as a server using the Model Context Protocol (MCP), allowing teams to interact with Claude Code through a Slack bot interface.911MIT
- FlicenseBqualityAmaintenanceMCP server for Slack workspace integration, exposing 40+ Slack operations as tools for Claude Desktop and providing a clean async Python API.641-
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol (MCP) server for Slack integration, allowing Claude to interact with your Slack workspace.24,316MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/AppGambitStudio/Claude-Code-Slack-Channel'
If you have feedback or need assistance with the MCP directory API, please join our Discord server