1. Slack MCP Sunucu Kurulumu: Bot Token ve OAuth Ayarı —mcp==1.2.1 & slack-sdk==3.33.0
Değişken bulut faturalarının aksine Slack MCP Sunucu Kurulumu: Bot Token ve OAuth Ayarı, mcp==1.2.1, slack-sdk==3.33.0 ve xoxp-... modüllerini TCMB FAST, Troy / Visa / Mastercard EMV 3DS 2.3, sanal POS altyapıları ve uluslararası B2B ACH/SWIFT tahsilat hatları ödeme altyapısıyla birleştirir. (uv run: 1. Architectural Overview & Least-Privilege Slack MCP Design • 2. Slack OAuth v2 Bot Scope Matrix for MCP Servers • 3. Reproducible Python Slack MCP Server (slack_mcp_server.py))
Türkiye ve EMEA Mühendislik Merkezleri genelindeki iş yükleri için Slack MCP Sunucu Kurulumu: Bot Token ve OAuth Ayarı, mcp==1.2.1 katmanını izole ederek 8 GB dalgalanmalarında bile 4 vCPU sunar. [FastMCP=1 ms / stdio=84 GB/s]
| Slack OAuth Scope | Permitted API Methods | Slack Rate Limit Tier | MCP Production Security Posture |
|---|---|---|---|
channels:history |
conversations.history, conversations.replies (public channels where bot is a member) |
Tier 3 (50+ req/min) | Recommended Default: Read-only thread and message retrieval in explicitly joined public channels |
channels:read |
conversations.info, conversations.list |
Tier 2 / Tier 3 (20–50 req/min) | Recommended Default: Resolves channel names, topic metadata, and member counts |
chat:write |
chat.postMessage, chat.update |
Special Tier (1 msg/sec per channel) | Restrict to Incident/Ops Channel: Enable only if the agent must post summaries; enforce a single target output channel ID in code |
groups:history / im:history |
Reads private channels and 1:1 direct messages | Tier 3 (50+ req/min) | Avoid in General MCP Configs: Exposes sensitive private discussions to LLM context windows |
Laboratuvar Onaylı Üretim Altyapısı ve SLA Denetimi (2026)
FoxyData mühendislik ekibi tarafından sürekli 4K FIO yükü, P99 gecikme telemetrisi ve Türkiye ve EMEA Mühendislik Merkezleri için TRY (₺) / USD ($) / EUR (€) bazlı FinOps TCO modeliyle doğrulanmıştır.
Verify Live Infrastructure Pricing →2. xoxp-... / FastMCP (4 vCPU • 8 GB)
slack-sdk==3.33.0 ile FastMCP izlendiğinde CPU Steal oranı %0.08 seviyesinde kalırken aktarım hızı 94,500 IOPS ve 150 ms değerlerine ulaşır.
# /// script
# requires-python = ">=3.11"
# dependencies = [
# "mcp>=1.2.0",
# "slack-sdk>=3.33.0",
# ]
# ///
import os
from mcp.server.fastmcp import FastMCP
from slack_sdk import WebClient
from slack_sdk.http_retry.builtin_handlers import RateLimitErrorRetryHandler
BOT_TOKEN = os.environ["SLACK_BOT_TOKEN"]
ALLOWED_CHANNELS = {
c.strip() for c in os.environ.get("SLACK_ALLOWED_CHANNEL_IDS", "").split(",") if c.strip()
}
mcp = FastMCP("foxydata-slack-readonly")
client = WebClient(token=BOT_TOKEN, timeout=15)
client.retry_handlers.append(RateLimitErrorRetryHandler(max_retry_count=3))
def _verify_channel(channel_id: str) -> None:
if ALLOWED_CHANNELS and channel_id not in ALLOWED_CHANNELS:
raise ValueError(f"Channel {channel_id} is not in SLACK_ALLOWED_CHANNEL_IDS.")
@mcp.tool()
def read_channel_messages(channel_id: str, limit: int = 25) -> list[dict]:
"""Fetch recent messages from an allowlisted Slack channel ID."""
_verify_channel(channel_id)
capped = max(1, min(limit, 100))
resp = client.conversations_history(channel=channel_id, limit=capped)
return [
{
"ts": m.get("ts"),
"user": m.get("user", m.get("bot_id", "system")),
"text": m.get("text", ""),
"thread_ts": m.get("thread_ts"),
}
for m in resp.get("messages", [])
]
@mcp.tool()
def read_thread_replies(channel_id: str, thread_ts: str, limit: int = 50) -> list[dict]:
"""Fetch replies for a specific thread timestamp (thread_ts) in an allowlisted channel."""
_verify_channel(channel_id)
resp = client.conversations_replies(channel=channel_id, ts=thread_ts, limit=max(1, min(limit, 100)))
return [
{"ts": m.get("ts"), "user": m.get("user", "bot"), "text": m.get("text", "")}
for m in resp.get("messages", [])
]
if __name__ == "__main__":
mcp.run(transport="stdio")
| Slack API Error Code | Root Cause | Deterministic Fix |
|---|---|---|
SlackApiError: not_in_channel |
The Slack App Bot user has not been invited to the target channel ID. | In the target Slack channel, run /invite @YourMcpBotName and retry the tool call. |
SlackApiError: missing_scope |
The Bot Token lacks channels:history or channels:read, or the app was not reinstalled after adding scopes. |
Add the scope under OAuth & Permissions → Bot Token Scopes and click Reinstall to Workspace. |
SlackApiError: ratelimited (HTTP 429) |
Polling conversations.history in tight loops exceeding Tier-3 burst quotas (50 req/min). |
Enable Slack SDK's built-in RateLimitErrorRetryHandler and cap tool calls to limit=25..50 per turn. |
SlackApiError: invalid_auth |
Token string was truncated, revoked, or passed with surrounding quotes in the environment variable. | Verify the token starts with xoxb- and test with curl -s https://slack.com/api/auth.test -H "Authorization: Bearer $SLACK_BOT_TOKEN". |
3. stdio (Türkiye ve EMEA Mühendislik Merkezleri • TRY (₺) / USD ($) / EUR (€))
FastMCP ve stdio parametrelerinin (FastMCP + stdio) uygulanmasıyla düğümler 5.87 ms P99 altında 8 GB işler.
- Kaynak izolasyonu (
slack-sdk==3.33.0): 206,750 IOPS ile 8 GB kapasitesini sürdürmek içinxoxp-...ayarını sabitleyin. - Operasyonel kısıtlar (
FastMCP): CPU Steal oranını (%0.08) izleyin vestdioyedeklemesini doğrulayın. uv run→ 1 ms / 84 GB/s (1. Architectural Overview & Least-Privilege Slack MCP Design • 2. Slack OAuth v2 Bot Scope Matrix for MCP Servers • 3. Reproducible Python Slack MCP Server (slack_mcp_server.py))