MCP server for sending Slack messages (bot token or user xoxc + cookie auth)
The server defines a single tool 'send_message' with a well-structured schema and comprehensive description. The tool name follows verb-noun convention (send_message) and clearly conveys its action. The description is detailed (500+ chars) and includes specific formatting guidance for Slack mrkdwn, mention handling, and URL extraction instructions. All four parameters are properly typed and include descriptions. However, the parameter naming could be more explicit (e.g., 'channel' could be 'channel_id_or_name' to clarify it accepts both), and the output schema is not documented, callers must infer the response structure from the implementation.
Send a message to a Slack channel or thread. In user-token mode, messages are tagged with :robot_face: so recipients know it was AI-assisted. In bot-token mode, the app identity serves this purpose. NOTE: This tool posts to channels only. DMs are not supported. MENTIONS: Write @username or @groupname naturally — they are auto-resolved. Do NOT construct <@U...> syntax manually. SLACK URLs: When given a Slack URL like .../archives/C0AGCGG628K/p1718033467085279: - Channel ID: the segment after /archives/ → pass as channel - Thread timestamp: strip "p", insert dot before last 6 digits → "1718033467.085279" Prefer channel ID over channel name when both are available. FORMAT — Slack mrkdwn (NOT Markdown): *bold* _italic_ ~strike~ `code` ```block``` <https://url|link text> > quote • bullets :emoji_name: NEVER use: **bold**, [text](url), # headers, --- rules, tables, ![images].
Output schema not documented. Tool returns JSON via sendMessage() but the response structure is not specified in the tool definition or server code comments, forcing LLMs to infer field names and types.
Parameter 'channel' accepts both names and IDs but this dual nature is not explicit in the parameter name. Naming it 'channel_id_or_name' or providing separate 'channel_name' and 'channel_id' parameters would reduce ambiguity for LLMs.
No input validation error guidance. The tool validates channel and message presence but does not describe what formats are invalid (e.g., empty strings, very long messages, invalid Slack mrkdwn). Error messages would be more helpful if they stated the constraint violated.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 59 | 2026-07-28+ | v2 |
| 2026-03-09 | D | 56 | - | v1 |
No dry-run or confirmation step for an irreversible write operation. send_message posts to Slack immediately with no preview or confirmation. A destructive operation pattern with a confirmation request would prevent accidental spam or misformatted messages.