slackapi / slackapi/slack-skills-plugin
Feature: Add `slack_update_draft` and `slack_delete_draft` MCP tools
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 132
- Forks
- 34
- Avg merge
- 1d 6h
- Merged PRs (30d)
- 16
Description
Summary
Please expose draft update and delete tools on the hosted Slack MCP server (https://mcp.slack.com/mcp), alongside the existing create path (slack_send_message_draft).
Today agents can create a draft for review, but cannot revise or discard it via MCP without either:
- asking the human to delete it in Slack Drafts & Sent, then creating again, or
- sending via
slack_send_messagewithdraft_id(deletes only as a side effect of sending).
Current surface
| Capability | Tool |
|---|---|
| Create draft | slack_send_message_draft |
| Delete draft without sending | ❌ none |
| Update draft text in place | ❌ none |
| Delete draft after send | slack_send_message optional draft_id |
Proposed tools
slack_update_draft
- Inputs:
draft_id(required),message(required), optionallychannel_id/thread_tsif needed for validation - Behavior: Replace the body of an existing unsent draft; return the same
draft_id+ channel link - Errors:
draft_not_found,channel_not_found, auth failures
slack_delete_draft
- Inputs:
draft_id(required), optionallychannel_id - Behavior: Discard an unsent draft without posting
- Errors:
draft_not_found, auth failures
Motivation
Agent workflows routinely prepare a draft for human review, then iterate on wording before send. Without update/delete:
- Duplicate creates are unsafe (see companion bug: false success when a draft already exists).
- Humans must manually delete drafts in the Slack UI to unblock a rewrite.
- The only MCP “delete” path forces sending (
draft_idonslack_send_message).
Token / API note
Internal Slack client methods (drafts.update, drafts.delete, drafts.list) reportedly exist but may require client/session token types beyond standard OAuth user tokens used by the MCP. If that is the blocker, please document it on the create tool and keep create’s draft_already_exists behavior honest so agents do not silently no-op.
If OAuth can support update/delete, exposing them would close a large hole in the draft lifecycle for AI clients (Cursor, Claude Code, etc.).
Related
- Companion bug:
slack_send_message_draftreturns success when a draft already exists (shoulddraft_already_exists) - #18 — draft newline stripping
- Feature precedent in this repo: other write-tool requests (e.g. status/DND tools)
Fix lives on the hosted MCP at
mcp.slack.com; this repo is the public place to track it.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the hosted MCP endpoint and the existing slack_send_message_draft tool, then verify whether the reported drafts.update, drafts.delete, and drafts.list client methods support the OAuth tokens used by MCP. Done means exposing update and delete operations with the specified inputs, draft lifecycle errors, and returned draft link, or documenting the token limitation and honest create behavior.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- api
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100