日本語 | Support | GitHub
Service Deep-Dive 2026-04-27 12 min read

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

AAA
Slack MCP — AXR Rating Official MCP: ✅ (npx @slack/mcp-server, released 2026-03-30)
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:

🔍
Search
Full-text search across workspace messages and files, filtered by date, user, and content type. Enables natural language tasks like "find last week's contract discussions."
💬
Messages
Send messages, retrieve channel history, reply in threads, and draft/preview messages within AI clients before posting. Covers the full messaging lifecycle.
📄
Canvases
Create and share rich formatted documents, export as Markdown. Agents can auto-generate meeting notes and specs as Slack Canvases.
👥
Users
Fetch user profiles including custom fields and status. Enables tasks like "get the assignee's email and contact them."

3. Authentication: OAuth 2.0 + Bot Token

Slack MCP uses OAuth 2.0. Here is the setup in five steps:

  1. Create a Slack App: Go to api.slack.com/apps → "Create New App" → "From scratch"
  2. Add Bot Token Scopes: Under "OAuth & Permissions" → "Bot Token Scopes", add the required scopes
  3. Install to Workspace: Click "Install to Workspace"
  4. Copy Bot User OAuth Token: Copy the token starting with xoxb-
  5. Start the MCP Server: Set env vars and run
Required and Recommended Scopes // 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
Claude Desktop Config (claude_desktop_config.json) { "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

⚠️ Pitfall 1: HTTP 200 Does Not Mean Success

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.

Correct Error Handling (Python) 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']}")
⚠️ Pitfall 2: Channel Names Don't Work — Use Channel IDs

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).

⚠️ Pitfall 3: The Bot Must Be Invited to a Channel Before It Can Post

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.

⚠️ Pitfall 4: Cloud-Hosted Only — No Self-Hosting Option

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.

⚠️ Pitfall 5: Tier 1 Rate Limit (1 req/min) Is Effectively Unusable

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.

Best Practice: Use the Message ts as a Unique ID

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