Slack MCP Complete Guide 2026 — AAA Rating, 4 Official Features, Limits & 5 Developer Pitfalls
Slack MCP holds a AAA grade in KanseiLink's AEO evaluation — the highest tier in communication SaaS. Across 113 real-world agent calls, the success rate was 91.15%, topping every other service in its category. The official Slack MCP server launched on March 30, 2026, making agent-Slack integration easier than ever. But "easy to connect" doesn't mean "easy to get right." This guide digs into KanseiLink data to explain what the AAA grade actually means, the 4 capability domains, authentication setup, the limits nobody talks about, and 5 pitfalls every agent developer will hit.
1. What KanseiLink Data Says About Slack MCP
Calls: 113 / Success rate: 91.15%
Trust Score: 0.90 / Category: communication
KanseiLink ran 113 agent calls against Slack MCP, achieving 103 successes (91.15% success rate) and a trust_score of 0.90. This is the highest result in the communication category, outperforming kintone (trust_score 0.7) and Notion. AAA means the ecosystem is mature and reliable — but it doesn't mean frictionless.
| Dimension | Slack MCP Results | Rating |
|---|---|---|
| Official MCP Server | Slack official (@slack/mcp-server), released 2026-03-30 | ✅ Top tier |
| API Maturity | Web API / Events API / Socket Mode, cursor-based pagination | ✅ Excellent |
| Real-World Success Rate | 91.15% (n=113) — highest in communication SaaS | ✅ Proven |
| Rate Limits | 4-tier system (Tier 1–4). Key endpoints are Tier 3 (50 req/min) | ⚠️ Tier 1 is brutal |
| Self-Hosting | Cloud-hosted only — no self-host option unlike kintone or Notion | ⚠️ No alternative |
| Japanese Language | Full multi-byte support for JP channels, messages, and usernames | ✅ No issues |
2. The 4 Capability Domains of the Official MCP Server
The official Slack MCP server (npx @slack/mcp-server) covers four domains:
3. Authentication: OAuth 2.0 + Bot Token
Slack MCP uses OAuth 2.0. Here is the setup in five steps:
- Create a Slack App: Go to api.slack.com/apps → "Create New App" → "From scratch"
- Add Bot Token Scopes: Under "OAuth & Permissions" → "Bot Token Scopes", add the required scopes
- Install to Workspace: Click "Install to Workspace"
- Copy Bot User OAuth Token: Copy the token starting with
xoxb- - Start the MCP Server: Set env vars and run
// Minimum (read only)
channels:read // List channels
channels:history // Public channel history
users:read // User info
// Add for write access
chat:write // Post messages
files:write // Upload files
canvases:write // Create/edit canvases
// Add for private channel access
groups:read // Private channel list
groups:history // Private channel history
{
"mcpServers": {
"slack": {
"command": "npx",
"args": ["@slack/mcp-server"],
"env": {
"SLACK_BOT_TOKEN": "xoxb-your-token-here",
"SLACK_TEAM_ID": "T01234567"
}
}
}
}
4. Five Pitfalls Every Agent Developer Will Hit
Slack's biggest trap. Slack returns HTTP 200 even on errors. Success must be determined by the ok field in the response body. When ok: false, the error field contains the error code (e.g., channel_not_found, not_in_channel). Any agent that treats HTTP 200 as a success indicator will behave unpredictably in production.
import requests
response = requests.post(
"https://slack.com/api/chat.postMessage",
headers={"Authorization": f"Bearer {token}"},
json={"channel": "C01234567", "text": "Hello"}
)
data = response.json()
if not data["ok"]: # HTTP 200 but still an error!
raise Exception(f"Slack API error: {data['error']}")
Slack APIs require channel IDs (e.g., C01234567), not channel names (e.g., #general). Public channels start with C, private groups with G, and DMs with D. Get IDs via conversations.list or from the Slack Web URL (the trailing segment after the last slash).
Installing the bot to a workspace doesn't grant access to every channel. The bot must be explicitly invited to each channel it needs to post in (via /invite @YourBotName in Slack). Posting to a channel the bot isn't in returns a not_in_channel error. For production, automate the invite workflow or handle this at setup time.
kintone MCP ships in npm/Docker/Desktop Extension formats and runs on-premises. The official Slack MCP server is cloud-hosted only — there is no self-hosting option. Organizations with strict network egress restrictions or data-residency compliance requirements need to build a custom MCP wrapper that calls the Slack Web API directly.
Slack's rate limits span Tier 1–4. Tier 1 caps at 1 request per minute — which is almost useless for any polling or batch workflow. conversations.history is Tier 3 (50/min), but users.list is Tier 2 (20/min) and some admin APIs fall into Tier 1. Agents that loop over user lookups will hit 429 errors almost immediately. Cache user data and check per-endpoint tiers in the Slack API docs before designing your flow.
Every Slack message gets a globally unique timestamp (ts, e.g., 1609459200.000100) that serves as its message ID. Pass it as thread_ts to reply in threads, use it to add reactions, and use it to update or delete messages. Multi-step agent flows that track messages across turns should persist the ts in state.
5. Comparison: Slack vs kintone vs Notion MCP
| Dimension | Slack MCP | kintone MCP | Notion MCP |
|---|---|---|---|
| AXR Grade | AAA | AAA | AA |
| KanseiLink Success Rate | 91.15% (n=113) | Available | Available |
| Self-Host | ❌ Not available | ✅ npm/Docker/Extension | ✅ npm |
| Biggest Pitfall | HTTP 200 ≠ success | {value} wrapper on all fields | Page hierarchy depth limit |
| Auth Complexity | Medium (OAuth2 required) | Low (API token sufficient) | Low (integration key) |
| Use Case Clarity | High (messaging-focused) | Medium (general-purpose DB) | Medium (docs/knowledge base) |
6. Three High-Value Slack MCP Patterns for Japanese Teams
Pattern A: Daily KPI Digest to Slack
Pull KPI data from freee or MoneyForward, summarize it via LLM, and post to a designated Slack channel on a schedule. The standard combo is kintone MCP (data retrieval) + Slack MCP (notification). Key: update the same message via ts rather than posting a new one each time, to keep channel noise low.
Pattern B: Incident Escalation Automation
Trigger from a monitoring alert to post to the appropriate Slack channel, @mention the on-call engineer, attach details in a thread, and create a ticket — all in one agent flow. The bottleneck: fetching on-call user IDs via users:read hits Tier 2 rate limits (20/min). Cache the on-call roster at the start of each run.
Pattern C: Meeting Notes → Slack Canvas → Notion Sync
After a meeting, pull channel discussion history via conversations.history, generate structured notes via LLM, save as a Slack Canvas, and optionally sync to Notion via Notion MCP. This removes the manual meeting-notes bottleneck entirely.
Check Slack's Live AEO Score
KanseiLink publishes real-time AEO ratings for 225+ services. View Slack's latest score, error breakdown, and Agent Voice report on the dashboard.
View AEO Ratings