Skip to content
K

Slack

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.

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.

  • 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.

  1. Create an app at api.slack.com/apps and copy its Client ID and Client Secret from Basic Information → App Credentials
  2. 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
  3. Authorize in the browser — the token is stored for you
  1. Go to api.slack.com/appsCreate New AppFrom scratch
  2. Under OAuth & Permissions, add these scopes:
    • channels:read and channels:history — list and read public channels
    • groups:read and groups:history — list and read private channels
    • users:read — resolve message authors
    • chat:write — post messages
  3. Click Install to Workspace and copy the OAuth token
  4. 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 @Monday Morning

Invite it to the channel you ingest from and any channel it posts to.

The Slack plugin’s per-project settings (rendered in the plugin’s Configure form) control routing and cadence:

SettingDescriptionDefault
default_channelFallback channel for posts and ingestion
ingest_channelChannel to ingest team messages from (falls back to default_channel)
ingest_frequencyAutomatic ingestion: off, daily, or weeklyoff
digest_frequencyAutomatic digests: off, daily, or weeklyoff
digest_timeTime of day for automatic digests17:00
post_on_pr_mergeAuto-post a plain-language update when a PR merges to the default branch (requires a GitHub repo configured)false
pr_merge_channelChannel for PR-merge updates (falls back to default_channel)
Ingest recent messages from our Slack channel

The agent will call mm_slack_ingest. If configured correctly, it reports how many messages were scanned and how many new inbox items were captured.

ToolDescription
mm_slack_ingestIngest 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_updatePost a formatted message to a Slack channel. Supports Slack mrkdwn formatting.
mm_slack_digestGenerate and post a daily or weekly activity digest — completed tasks, spec progress, and commit counts.

Parameters:

  • project_path (required) — absolute path to the project root
  • channel (optional) — channel to ingest from; falls back to ingest_channel, then default_channel
  • lookback_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.

Ingest the last two days of #project-chat and summarize anything that needs a decision

The 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 Slack update to #engineering summarizing what was completed today

The agent gathers recent activity and calls mm_slack_post_update with a formatted summary.

Send a weekly activity digest to the #project-updates channel

The agent calls mm_slack_digest with period: "weekly", which compiles task completions, spec progress, and commit counts into a formatted Slack message.

“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.