
Slack MCP and the Yalc Framework
The internal coordination layer for Yalc operators. Push agent run summaries, reply alerts, and weekly reports straight into the channels your team already lives in.
Add Slack to Claude Code in one command
claude mcp add slack --env SLACK_BOT_TOKEN=xoxb-your-token --env SLACK_TEAM_ID=T01234567 -- npx -y @modelcontextprotocol/server-slack
Create a Slack app at api.slack.com/apps with bot scopes (channels:history, channels:read, chat:write, reactions:write, users:read). Install to your workspace, copy the Bot User OAuth Token, replace the placeholders, run the command. Or use `claude plugin install slack` if your Claude Code version supports the plugin command.
Slack, plainly
The Slack MCP is the official `@modelcontextprotocol/server-slack` package. It exposes channel reads, message posts, reactions, user lookups, and thread management as native Claude tool calls. Auth is a single bot token plus your team ID.
For Yalc operators, Slack is the team coordination layer. The MCP lets workflows post agent run summaries to channels, alert on reply intent classification, surface campaign performance digests, and trigger interactive approval flows. Where Notion is async memory, Slack is sync attention.
Position in the GTM operating system
The Slack MCP sits at the **route** node when Yalc needs to surface output to humans (you, your team, your AM). It pairs with Notion (async state) and Unipile (external comms) to complete the operator loop.
Yalc workflows that benefit most: agent run health alerts, hot reply notifications, weekly campaign digests, signal triggered ICP alerts, and human in the loop approval flows.
Deploying the Slack MCP inside Yalc workflows
Workflow position
The team coordination node. Yalc posts to Slack when a human needs to know something or approve something. Reads are for context (last 10 messages in #gtm) and triggers (a slash command starts a workflow).
Prompt patterns
Copy paste prompts for Claude Code that invoke the Slack MCP.
Chaining recommendations
Anti patterns to avoid
Compatibility
Works in Claude Code (primary), Claude Desktop, Cursor, and any MCP-compatible client. The npm package is maintained by the official ModelContextProtocol GitHub org. Slack's per-bot rate limits apply (50 msg/min per channel typical).
Pros, cons, who it's for
Pros
- Official ModelContextProtocol package. Stable and well documented.
- Bot token auth, no OAuth dance for the MCP itself.
- Reads channel history, posts messages, manages reactions and threads.
- Free to use. Slack's bot quotas are generous for typical Yalc volume.
- Slash command trigger pattern enables interactive approval workflows.
Cons
- Bot scope choices matter. Wrong scope grant means tool calls return permissions errors.
- SLACK_TEAM_ID is per workspace. Multi workspace setups need multiple MCP server registrations.
- Slack's free plan limits message history retention. Reads can return empty for old context.
- The MCP doesn't subscribe to events natively. Use Slack Events API plus a webhook handler for real time triggers.
Who it's for
- GTM teams running daily standups, alerts, and digests in Slack
- Agencies managing per client coordination channels
- Operators who want one prompt to summarize, alert, and route across the team
The Slack ecosystem inside Yalc
MCPs to consider instead
Frequently asked
What scopes does the Slack bot need?
At minimum channels:history, channels:read, chat:write, reactions:write, and users:read. For private channels add groups:history and groups:read. For DMs add im:history and im:read.
Can the MCP post to private channels?
Yes, if the bot is invited to the channel and has the groups:read and groups:write scopes. The MCP itself doesn't auto join channels.
How do I trigger a Yalc workflow from a Slack slash command?
Set up a Slack slash command pointing at a webhook handler you control. The handler invokes Claude Code (or a Claude API call) which runs the Yalc workflow. The MCP itself is for reads and posts, not slash command receiving.
Does this MCP work on Slack's free plan?
Yes. The free plan limits message history retention (90 days), so reads of old messages may return empty. Posts and reactions work normally.
How do I prevent the MCP from spamming a channel?
Yalc workflows that post to Slack should always include a rate limit and a dry run flag. Test in a private channel first. If you accidentally spam, kick the bot from the channel to break the loop.
Is there an official Anthropic Slack plugin?
As of April 2026, `claude plugin install slack` works on recent Claude Code versions. If your version doesn't support plugins, use the manual `claude mcp add` command above.
Install the Slack MCP
Drop it into Claude Code and orchestrate from your next Yalc prompt.
claude mcp add slack --env SLACK_BOT_TOKEN=xoxb-your-token --env SLACK_TEAM_ID=T01234567 -- npx -y @modelcontextprotocol/server-slack