Model Context Protocol server for Slack integration. Provides tools to list channels, send messages, and fetch message history from Slack workspaces. Uses SSE and HTTP transports for remote MCP connections with JWT-based authentication.
The server defines 3 tools with explicit schemas and basic descriptions. All tools have properly structured input schemas with type definitions and parameter descriptions. However, there are significant gaps in output documentation, error handling guidance, and parameter constraint clarity. The server lacks output schemas, does not document what fields/structure clients should expect from responses, and error messages are generic without actionable recovery guidance. Descriptions are present but generic (avg ~75 chars), and parameter constraints lack specificity (e.g., 'limit' has no min/max bounds, 'include_private' defaults are mentioned but not formal defaults in schema). The tools follow a logical single-responsibility pattern (list, send, fetch) and naming is clear, but composition analysis reveals missing chaining IDs and pagination support.
Fetch message history from a Slack channel
List all Slack channels in the connected workspace
Send a message to a Slack channel
Output schemas not documented. None of the 3 tools document their response structure (field names, types, presence of IDs needed for chaining). LLMs cannot plan downstream calls or extract relevant data.
Error handling lacks actionable recovery guidance. All errors return bare text without hints. E.g., 'Slack not connected' should suggest 'Connect your workspace via /oauth/slack first' or guide to auth flow.
Numeric parameters (limit) lack min/max bounds. Schema does not declare constraints; code enforces max=100 for fetch_history but min/max are not formalized. LLMs may pass invalid values.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 57 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 47 | 2024-11-05+ | v1 |
No pagination/cursor support. If a workspace has >20 channels or >10 messages, the tools cannot fetch more. list_channels and fetch_history accept 'limit' but do not return cursors, offsets, or total_count.
Response does not include chaining IDs. send_message response does not return the sent message_id or timestamp, needed for follow-up operations (e.g., edit, react). fetch_history returns bare text without structured message objects containing IDs.
Thread parameter (thread_ts) format not documented. What is the format? Is it a Slack message timestamp (decimal string like '1234567890.123456')? Must be explicitly documented for send_message.
Tool descriptions do not distinguish irreversible operations. send_message modifies state (not retryable without risk of duplicates) but description reads as a simple read. Should explicitly state 'This sends an actual message to Slack, ensure content is accurate.'
Default parameter values mentioned in descriptions but not formalized in schema. E.g., 'limit' defaults to 20/10 per description, but JSON Schema has no 'default' key. LLMs may not enforce defaults.