Slack
Overview
Section titled “Overview”The Slack integration is intake-first: its primary job is pulling your team’s Slack conversation into the project, not broadcasting out of it. mm_slack_ingest captures channel messages and thread context into a per-project inbox, where items surface in daily briefs and the desktop app’s comms inbox and can be shaped into issues and specs. Outbound posting — status updates and activity digests — is the secondary lane.
Tool Group
Section titled “Tool Group”All three Slack tools belong to the opt-in slack tool group. They are not listed in the agent’s tool catalog until you opt in via the Monday Morning server entry in .mcp.json:
"env": { "MM_TOOL_GROUPS": "slack" }The tools still dispatch by name even when not listed — opting in only makes them visible in tools/list.
Prerequisites
Section titled “Prerequisites”- A Slack workspace where you have permission to install apps
- A Slack app with a bot/user OAuth token
- The bot must be invited to the channels it reads from or posts to
The desktop app offers two paths: an OAuth flow (Connect with Slack), or pasting a token manually.
Path A: Connect with Slack (OAuth)
Section titled “Path A: Connect with Slack (OAuth)”- Create an app at api.slack.com/apps and copy its Client ID and Client Secret from Basic Information → App Credentials
- In Monday Morning, open the Slack plugin’s settings (Settings → Plugins, Configure on the Slack row), enter the Client ID and Client Secret, and click Connect with Slack
- Authorize in the browser — the token is stored for you
Path B: Manual token
Section titled “Path B: Manual token”- Go to api.slack.com/apps → Create New App → From scratch
- Under OAuth & Permissions, add these scopes:
channels:readandchannels:history— list and read public channelsgroups:readandgroups:history— list and read private channelsusers:read— resolve message authorschat:write— post messages
- Click Install to Workspace and copy the OAuth token
- Paste it into the token field in the Slack plugin’s settings
Either way, the desktop app writes the token to the bridge file .mm/integrations/slack.json, which is what the MCP tools read — there is no environment-variable fallback for Slack.
Invite the bot to channels
Section titled “Invite the bot to channels”/invite @Monday MorningInvite it to the channel you ingest from and any channel it posts to.
Per-project settings
Section titled “Per-project settings”The Slack plugin’s per-project settings (rendered in the plugin’s Configure form) control routing and cadence:
| Setting | Description | Default |
|---|---|---|
default_channel | Fallback channel for posts and ingestion | — |
ingest_channel | Channel to ingest team messages from (falls back to default_channel) | — |
ingest_frequency | Automatic ingestion: off, daily, or weekly | off |
digest_frequency | Automatic digests: off, daily, or weekly | off |
digest_time | Time of day for automatic digests | 17:00 |
post_on_pr_merge | Auto-post a plain-language update when a PR merges to the default branch (requires a GitHub repo configured) | false |
pr_merge_channel | Channel for PR-merge updates (falls back to default_channel) | — |
Verify the connection
Section titled “Verify the connection”Ingest recent messages from our Slack channelThe agent will call mm_slack_ingest. If configured correctly, it reports how many messages were scanned and how many new inbox items were captured.
Available Tools
Section titled “Available Tools”| Tool | Description |
|---|---|
mm_slack_ingest | Ingest messages from a Slack channel (excluding bot messages) into the project inbox. Captures messages and thread context for review, triage, and spec shaping. |
mm_slack_post_update | Post a formatted message to a Slack channel. Supports Slack mrkdwn formatting. |
mm_slack_digest | Generate and post a daily or weekly activity digest — completed tasks, spec progress, and commit counts. |
mm_slack_ingest in detail
Section titled “mm_slack_ingest in detail”Parameters:
project_path(required) — absolute path to the project rootchannel(optional) — channel to ingest from; falls back toingest_channel, thendefault_channellookback_hours(optional) — how many hours back to fetch messages (default: 24)
Behavior: it fetches channel history and thread replies for the lookback window, skips bot messages, and merges the results into .mm/plugins/slack/inbox.json — deduplicating against items already captured and pruning old dismissed/converted entries. Items are tagged with source: "slack" and surfaced in daily briefs. The result reports new_items, total_inbox, messages_scanned, and threads_fetched.
Common Workflows
Section titled “Common Workflows”Triage the team channel
Section titled “Triage the team channel”Ingest the last two days of #project-chat and summarize anything that needs a decisionThe agent calls mm_slack_ingest with lookback_hours: 48, then reads the new inbox items back to you. From the desktop app, the same items appear in the comms inbox for conversion into issues or specs.
Post a project status update
Section titled “Post a project status update”Post a Slack update to #engineering summarizing what was completed todayThe agent gathers recent activity and calls mm_slack_post_update with a formatted summary.
Send a weekly digest
Section titled “Send a weekly digest”Send a weekly activity digest to the #project-updates channelThe agent calls mm_slack_digest with period: "weekly", which compiles task completions, spec progress, and commit counts into a formatted Slack message.
Troubleshooting
Section titled “Troubleshooting”“Slack bot token not found” error
Open the desktop app, go to Settings → Plugins → Slack, and add your token. It is written to .mm/integrations/slack.json for MCP access.
“not_in_channel” error
The bot has not been invited to the target channel. Run /invite @Monday Morning in that channel.
“invalid_auth” error Your token is invalid or the app has been uninstalled. Reconnect with Slack or generate a new token at api.slack.com/apps.
“No channel specified” error
Pass a channel parameter, or set ingest_channel / default_channel in the Slack plugin’s per-project settings.
The agent says it can’t see the Slack tools
The slack group is not opted in. Add "MM_TOOL_GROUPS": "slack" to the server’s env in .mcp.json — or ask the agent to call the tool by its exact name; delisted tools still dispatch.
Private channel not readable
Private channels require the groups:read and groups:history scopes, and the bot must be a member.