DevOps & ChatOps

Slack MCP সার্ভার: টিম এজেন্ট ওয়ার্কফ্লো ও ChatOps গাইড

দ্রুত উত্তর: 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 যা করতে পারে:

  1. দ্রুত সিদ্ধান্ত নিতে একাধিক চ্যানেলের দীর্ঘ থ্রেড সারসংক্ষেপ তৈরি।
  2. জরুরি ওয়ার-রুম চ্যানেল তৈরি করে অন-কল কর্মীদের আমন্ত্রণ জানানো এবং রানবুক অ্যাকশন তালিকা প্রস্তুত করা।
  3. ঝুঁকিপূর্ণ ডাটাবেস মাইগ্রেশনের আগে Slack Block Kit ইউআই-এর মাধ্যমে মানুষের অনুমোদন (Human-in-the-Loop, HITL) নিশ্চিত করা।
  4. 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) সমর্থন করে।

এক্সিকিউশন জীবনচক্র

  1. হ্যান্ডশেক ও টুল অনুসন্ধান: ক্লায়েন্ট শুরুতেই tools/list কল করে উপলব্ধ টুলস স্কিমা জেনে নেয়।
  2. সিম্যান্টিক রিজনিং ও টুল নির্বাচন: ব্যবহারকারী যখন নির্দিষ্ট কোনো থ্রেড বিশ্লেষণের নির্দেশ দেন, তখন এলএলএম slack_get_thread_replies নির্বাচন করে চ্যানেল আইডি ও থ্রেড টাইমস্ট্যাম্প পাঠায়।
  3. ওয়েব এপিআই রূপান্তর ও রেট লিমিট হ্যান্ডলিং: বট টোকেন (xoxb-...) যুক্ত করে নিরাপদ HTTPS অনুরোধ পাঠানো হয়। 429 রেট লিমিট এলে এক্সপোনেনশিয়াল ব্যাকঅফ ব্যবহৃত হয়।
  4. কনটেক্সট অপ্টিমাইজেশন: অপ্রয়োজনীয় মেটাডাটা বাদ দিয়ে সংক্ষেপিত টেক্সট তৈরি করা হয়, ফলে টোকেন খরচ প্রায় ৬৮% হ্রাস পায়।
  5. বিশ্লেষণ ও পোস্ট করা: মডেল সমস্যা শনাক্ত করে সরাসরি থ্রেডে সমাধানের প্রস্তাব পোস্ট করতে 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

৪. ধাপে ধাপে সেটআপ গাইড

  1. Slack App তৈরি: api.slack.com/apps-এ গিয়ে ম্যানিফেস্ট ব্যবহার করে অ্যাপ তৈরি করুন এবং প্রয়োজনীয় বট স্কোপ (channels:history, chat:write, channels:read) দিয়ে ওয়ার্কস্পেসে ইনস্টল করে xoxb- টোকেন সংগ্রহ করুন।
  2. Claude Code কনফিগারেশন:
  3. 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 চালান। নতুন স্কোপ যোগ করলে অ্যাপটি ওয়ার্কস্পেসে রি-ইনস্টল করুন।
← সব নিবন্ধ
0 / 4