Slack MCP plugin: Add conversations.mark (mark channel as read) support

Open 💬 0 comments Opened Jul 3, 2026 by avinashkolluru

Feature Request: Slack MCP Plugin — slack_mark_read

Summary

Add a slack_mark_read tool to the Slack MCP plugin that calls the Slack API's conversations.mark endpoint, allowing users to mark channels/DMs as read up to a specific timestamp.

Use Case

I have a Slack digest/triage workflow that:

  1. Reads channels and summarizes activity
  2. Tracks per-channel checkpoints (latest message timestamp seen)
  3. Delivers a formatted digest DM

After processing messages, I want to mark those channels as read so my Slack app reflects the actual state — channels I've already triaged shouldn't show unread badges.

Proposed Tool

slack_mark_read
  channel_id: string (required) — channel, DM, or group DM to mark as read
  ts: string (required) — message timestamp to mark as read up to

Slack API Reference

  • Endpoint: conversations.mark
  • Required scopes: channels:write, groups:write, im:write, mpim:write
  • Request: POST conversations.mark { channel, ts }
  • Response: { "ok": true }

Why This Matters

Without this, there's a disconnect between "I've processed this channel in my digest" and "Slack still shows 47 unread messages." The whole point of a digest workflow is to reduce context-switching — but if channels still appear unread, users still feel compelled to open them manually.

Current Workaround

None available through the plugin. The only alternative is a separate script using a Slack user token directly, which defeats the purpose of having an integrated MCP plugin.

View original on GitHub ↗