দ্রুত উত্তর: Slack MCP সার্ভার Anthropic-এর Model Context Protocol-এর মাধ্যমে AI কোডিং এজেন্ট (Claude Code, Cursor, Windsurf) এবং স্বায়ত্তশাসিত বটগুলিকে Slack ওয়ার্কস্পেসের সাথে যুক্ত করে। চ্যানেল মেসেজিং, থ্রেড বিশ্লেষণ এবং Block Kit-ভিত্তিক মানব অনুমোদন (Human-in-the-Loop) টুল সরবরাহ করে এটি কঠোর OAuth2 সীমার মধ্যে Slack-কে একটি সুরক্ষিত ChatOps কন্ট্রোল প্লেনে রূপান্তর করে।
১. ভূমিকা: ২০২৬ সালে সাধারণ চ্যাটবট থেকে স্বায়ত্তশাসিত ChatOps-এ রূপান্তর
আধুনিক সফটওয়্যার ইঞ্জিনিয়ারিং দলগুলিতে Slack হলো দৈনন্দিন কার্যক্রমের কেন্দ্রীয় স্নায়ুতন্ত্র: পুল রিকোয়েস্ট অ্যালার্ট, সিআই/সিডি পাইপলাইনের ব্যর্থতা, PagerDuty ইনসিডেন্ট এবং স্থাপত্য আলোচনা সবই নির্দিষ্ট চ্যানেলে কেন্দ্রীভূত হয়। তবে ঐতিহাসিকভাবে অটোমেশনের মাধ্যমে Slack পরিচালনা করা বেশ জটিল ও সময়সাপেক্ষ ছিল।
ঐতিহ্যবাহী Slack বটগুলি অনমনীয় নিয়ম ও ভঙ্গুর ওয়েবহুকের ওপর নির্ভরশীল ছিল। কোনো অ্যালার্ট এলে প্রকৌশলীদের করতে হতো:
- আইডিই (IDE) থেকে বারবার Slack-এ কনটেক্সট বদলানো।
- ইনসিডেন্টের সময়রেখা বুঝতে শত শত বিশৃঙ্খল থ্রেড বার্তা খুঁজে দেখা।
- গিট কমিট ও কুবারনেটিস মেট্রিক্সের সাথে এরর লগ ম্যানুয়ালি মেলানো।
- প্রোডাকশন রিলিজের অনুমোদনের জন্য টার্মিনালে সিএলআই কমান্ড চালানো।
Model Context Protocol (MCP) লার্জ ল্যাঙ্গুয়েজ মডেলের (LLM) সাথে সফটওয়্যার টুলস এবং এপিআই-এর যোগাযোগের নিয়মকে সার্বজনীন করেছে। আলাদা সার্ভার বা ভঙ্গুর ওয়েবহুক তৈরির পরিবর্তে দলগুলি এখন সরাসরি Slack MCP সার্ভার মোতায়েন করছে।
Slack-কে Claude Code, Cursor IDE, Windsurf বা স্বায়ত্তশাসিত সুইং এজেন্টের কাছে স্ট্যান্ডার্ড mcp tool হিসেবে উন্মুক্ত করে তৈরি হচ্ছে বাস্তবমুখী ChatOps MCP পাইপলাইন। স্বায়ত্তশাসিত slack bot ai agent যা করতে পারে:
- দ্রুত সিদ্ধান্ত নিতে একাধিক চ্যানেলের দীর্ঘ থ্রেড সারসংক্ষেপ তৈরি।
- জরুরি ওয়ার-রুম চ্যানেল তৈরি করে অন-কল কর্মীদের আমন্ত্রণ জানানো এবং রানবুক অ্যাকশন তালিকা প্রস্তুত করা।
- ঝুঁকিপূর্ণ ডাটাবেস মাইগ্রেশনের আগে Slack Block Kit ইউআই-এর মাধ্যমে মানুষের অনুমোদন (Human-in-the-Loop, HITL) নিশ্চিত করা।
- Slack-এর সাথে GitHub PR, Sentry ত্রুটি এবং ডাটাবেস লগ মিলিয়ে সমন্বিত তদন্ত চালানো।
+----------------------------------------------------------------------------------------------------+
| আধুনিক স্বায়ত্তশাসিত CHATOPS আর্কিটেকচার (SLACK MCP) |
+----------------------------------------------------------------------------------------------------+
|
+-----------------------------------+-----------------------------------+
| |
v v
+-------------------------------+ +-------------------------------+
| ইঞ্জিনিয়ারিং টিম | | মনিটরিং ও অবজারভেবিলিটি |
| - Slack চ্যানেল ও থ্রেড আলোচনা | | - Datadog / Sentry / CloudWatch|
| - ইন্টারেক্টিভ বোতামে অনুমোদন | | - CI/CD অ্যালার্ট (GitHub/GitLab)|
+---------------+---------------+ +---------------+---------------+
| |
| বার্তা ও অনুমোদন আদান-প্রদান করে | অ্যালার্ট ওয়েবহুক পাঠায়
v v
+----------------------------------------------------------------------------------------------------+
| SLACK API ও ওয়ার্কস্পেস অবকাঠামো |
| (Web API, Socket Mode, Block Kit ইঞ্জিন, ইভেন্ট সাবস্ক্রিপশন, OAuth2 স্কোপ) |
+-------------------------------------------------+--------------------------------------------------+
|
| Model Context Protocol (stdio / SSE JSON-RPC 2.0)
v
+----------------------------------------------------------------------------------------------------+
| SLACK MCP সার্ভার |
| (@modelcontextprotocol/server-slack) |
| |
| উপলব্ধ MCP টুলস: |
| - slack_post_message - slack_get_channel_history - slack_list_channels |
| - slack_post_reply - slack_get_thread_replies - slack_add_reaction |
| - slack_post_block_approval - slack_get_user_profile - slack_search_messages |
+-------------------------------------------------+--------------------------------------------------+
|
+-----------------------------------+-----------------------------------+
| |
v v
+-------------------------------+ +-------------------------------+
| ডেভেলপার ডেস্কটপ ক্লায়েন্ট| | স্বায়ত্তশাসিত ব্যাকগ্রাউন্ড ডেমন|
| - Claude Code CLI | | - ইনসিডেন্ট ট্রায়াজ এজেন্ট সোয়ার্ম|
| - Cursor IDE / Windsurf | | - রিলিজ গেটকিপার এজেন্ট |
| - Roo Code / Cline এক্সটেনশন | | - OpenClaw / LangGraph বট |
+-------------------------------+ +-------------------------------+
২. আর্কিটেকচার: Slack Model Context Protocol সার্ভার যেভাবে কাজ করে
Slack MCP সার্ভার স্থানীয় সিএলআই বা আইডিই-এর জন্য স্ট্যান্ডার্ড ইনপুট/আউটপুট (stdio) এবং ক্লাউড মাইক্রোসার্ভিসের জন্য Server-Sent Events (SSE) সমর্থন করে।
এক্সিকিউশন জীবনচক্র
- হ্যান্ডশেক ও টুল অনুসন্ধান: ক্লায়েন্ট শুরুতেই
tools/listকল করে উপলব্ধ টুলস স্কিমা জেনে নেয়। - সিম্যান্টিক রিজনিং ও টুল নির্বাচন: ব্যবহারকারী যখন নির্দিষ্ট কোনো থ্রেড বিশ্লেষণের নির্দেশ দেন, তখন এলএলএম
slack_get_thread_repliesনির্বাচন করে চ্যানেল আইডি ও থ্রেড টাইমস্ট্যাম্প পাঠায়। - ওয়েব এপিআই রূপান্তর ও রেট লিমিট হ্যান্ডলিং: বট টোকেন (
xoxb-...) যুক্ত করে নিরাপদ HTTPS অনুরোধ পাঠানো হয়। 429 রেট লিমিট এলে এক্সপোনেনশিয়াল ব্যাকঅফ ব্যবহৃত হয়। - কনটেক্সট অপ্টিমাইজেশন: অপ্রয়োজনীয় মেটাডাটা বাদ দিয়ে সংক্ষেপিত টেক্সট তৈরি করা হয়, ফলে টোকেন খরচ প্রায় ৬৮% হ্রাস পায়।
- বিশ্লেষণ ও পোস্ট করা: মডেল সমস্যা শনাক্ত করে সরাসরি থ্রেডে সমাধানের প্রস্তাব পোস্ট করতে
slack_post_messageব্যবহার করে।
৩. প্রধান টুলস তালিকা
| টুল পরিচিতি | Slack API মেথড | বিবরণ | প্যারামিটার | স্কিমা ওভারহেড |
|---|---|---|---|---|
slack_list_channels |
conversations.list |
বটের আওতাধীন চ্যানেল তালিকা আনে | types, limit, cursor |
~210 tokens |
slack_post_message |
chat.postMessage |
চ্যানেলে ফরম্যাটেড বার্তা বা Block Kit পাঠায় | channel_id, text, blocks |
~260 tokens |
slack_post_reply |
chat.postMessage |
নির্দিষ্ট থ্রেডের ভেতর উত্তর দেয় | channel_id, thread_ts, text |
~240 tokens |
slack_get_channel_history |
conversations.history |
চ্যানেলের সাম্প্রতিক বার্তা সংগ্রহ করে | channel_id, limit, oldest |
~290 tokens |
slack_get_thread_replies |
conversations.replies |
থ্রেডের সম্পূর্ণ বার্তা শাখা টেনে আনে | channel_id, thread_ts, limit |
~275 tokens |
slack_add_reaction |
reactions.add |
স্ট্যাটাস নির্দেশক ইমোজি যুক্ত করে (:eyes:, :white_check_mark:) | channel_id, timestamp, name |
~180 tokens |
slack_get_user_profile |
users.profile.get |
ইউজার আইডি থেকে নাম ও ইমেইল শনাক্ত করে | user_id |
~190 tokens |
slack_search_messages |
search.messages |
পুরো ওয়ার্কস্পেসে অনুসন্ধান চালায় (User Token প্রয়োজন) | query, sort, count |
~310 tokens |
৪. ধাপে ধাপে সেটআপ গাইড
- Slack App তৈরি: api.slack.com/apps-এ গিয়ে ম্যানিফেস্ট ব্যবহার করে অ্যাপ তৈরি করুন এবং প্রয়োজনীয় বট স্কোপ (
channels:history,chat:write,channels:read) দিয়ে ওয়ার্কস্পেসে ইনস্টল করেxoxb-টোকেন সংগ্রহ করুন। - Claude Code কনফিগারেশন:
- Cursor IDE ও Windsurf:
~/.cursor/mcp.json-এ সার্ভার পাথ ও টোকেন যুক্ত করুন।
৫. স্বয়ংক্রিয় ইনসিডেন্ট ট্রায়াজ স্ক্রিপ্ট
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
interface IncidentPayload {
service: string;
severity: "P1" | "P2" | "P3";
errorRate: number;
triggerTimestamp: string;
}
export class IncidentCommanderAgent {
private slackClient!: Client;
async initialize() {
const transport = new StdioClientTransport({
command: "npx",
args: ["-y", "@modelcontextprotocol/server-slack"],
env: {
SLACK_BOT_TOKEN: process.env.SLACK_BOT_TOKEN || "",
},
});
this.slackClient = new Client(
{ name: "incident-commander", version: "1.0.0" },
{ capabilities: {} }
);
await this.slackClient.connect(transport);
}
async handleIncident(incident: IncidentPayload, onCallUserId: string) {
const channelId = "C08_INCIDENTS";
// ১. প্রাথমিক সতর্কবার্তা পোস্ট
const alertResult = await this.slackClient.callTool({
name: "slack_post_message",
arguments: {
channel_id: channelId,
text: `<!here> :rotating_light: *জরুরি ইনসিডেন্ট সনাক্ত*: \`${incident.service}\`-এ ত্রুটির হার ${incident.errorRate}%!`,
},
});
const threadTs = (alertResult.content as any)[0].text.ts;
// ২. তদন্ত শুরু রিঅ্যাকশন
await this.slackClient.callTool({
name: "slack_add_reaction",
arguments: {
channel_id: channelId,
timestamp: threadTs,
name: "eyes",
},
});
// ৩. থ্রেডে বিশ্লেষণ রিপোর্ট প্রদান
const diagnosticReport = [
`*স্বয়ংক্রিয় ট্রায়াজ সারাংশ* (\`${incident.service}\`):`,
`• *সময়*: ${incident.triggerTimestamp}`,
`• *চিহ্নিত কারণ*: \`checkout-pg-pool\` ডাটাবেস সংযোগের ঘাটতি।`,
`• *অন-কল দায়িত্বপ্রাপ্ত*: <@${onCallUserId}>`,
`• *পরামর্শ*: নিষ্ক্রিয় সেশন বন্ধ করুন এবং পুলের আকার ৫০ থেকে ১২০-এ বৃদ্ধি করুন।`,
].join("\n");
await this.slackClient.callTool({
name: "slack_post_reply",
arguments: {
channel_id: channelId,
thread_ts: threadTs,
text: diagnosticReport,
},
});
}
}
৬. Block Kit ভিত্তিক ইন্টারেক্টিভ অনুমোদন (Human-in-the-Loop)
{
"channel": "C08_PROD_APPROVALS",
"blocks": [
{
"type": "header",
"text": {
"type": "plain_text",
"text": "🚨 স্বায়ত্তশাসিত এজেন্ট: প্রোডাকশন মাইগ্রেশন অনুমোদন অনুরোধ",
"emoji": true
}
},
{
"type": "section",
"fields": [
{
"type": "mrkdwn",
"text": "*টার্গেট পরিবেশ:*\n`production-us-east-1`"
},
{
"type": "mrkdwn",
"text": "*অনুরোধকারী এজেন্ট:*\n`claude-code-migration-runner`"
},
{
"type": "mrkdwn",
"text": "*এসকিউএল কোয়েরি:*\n`ALTER TABLE users ADD COLUMN passkey_hash VARCHAR(255);`"
},
{
"type": "mrkdwn",
"text": "*সম্ভাব্য টেবিল লক সময়:*\n`< 120ms`"
}
]
},
{
"type": "actions",
"elements": [
{
"type": "button",
"text": {
"type": "plain_text",
"text": "অনুমোদন ও সম্পাদন",
"emoji": true
},
"style": "primary",
"value": "approved_migration_49182",
"action_id": "approve_migration"
},
{
"type": "button",
"text": {
"type": "plain_text",
"text": "বাতিল করুন",
"emoji": true
},
"style": "danger",
"value": "rejected_migration_49182",
"action_id": "reject_migration"
}
]
}
]
}
৭. নিরাপত্তা ও আরওআই (ROI) বিশ্লেষণ
- Bot Token (
xoxb-) ব্যবহার: সুনির্দিষ্ট অনুমতি ও পরিষ্কার অডিট ট্রেইল রক্ষা করে। - টোকেন খরচ ও আর্থিক সাশ্রয়: ১০ জনের ইঞ্জিনিয়ারিং দলের জন্য প্রতি মাসে এলএলএম ইনফারেন্সে খরচ হয় মাত্র $15.44, যা প্রকৌশলীদের অন-কল কাজের ৮.৭৫ ঘণ্টা সাশ্রয় করে (মূল্য প্রায় $831.25)। এটি ৫৩.৮ গুণ নিট আরওআই নিশ্চিত করে।
- ত্রুটি সমাধান: বট চ্যানেলে না থাকলে
not_in_channelঘটে—চ্যানেলে/invite @AgentOpsচালান। নতুন স্কোপ যোগ করলে অ্যাপটি ওয়ার্কস্পেসে রি-ইনস্টল করুন।