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 कंट्रोल प्लेन में बदल देता है।


1. परिचय: 2026 में निष्क्रिय चैटबॉट्स से स्वायत्त ChatOps की ओर

आधुनिक सॉफ्टवेयर इंजीनियरिंग टीमों में Slack दैनिक संचालन का केंद्रीय तंत्रिका तंत्र है: पुल रिक्वेस्ट अलर्ट, CI/CD विफलताएं, PagerDuty घटनाएं और वास्तुशिल्प चर्चाएं सभी समर्पित चैनलों में एकत्र होती हैं। हालांकि, ऐतिहासिक रूप से ऑटोमेशन के माध्यम से Slack के साथ बातचीत करना निराशाजनक रहा है।

पारंपरिक Slack बॉट कठोर नियमों, कीवर्ड मिलान या नाजुक वेबहुक इंटीग्रेशन पर निर्भर थे। जब भी कोई अलर्ट आता था, इंजीनियरों को:

  • अपने IDE से Slack में लगातार संदर्भ बदलना (context-switch) पड़ता था।
  • किसी घटना की समयरेखा को समझने के लिए सैकड़ों बिखरे हुए थ्रेड उत्तरों को पढ़ना पड़ता था।
  • Git कमिट और Kubernetes मेट्रिक्स के साथ त्रुटि लॉग का मैन्युअल मिलान करना पड़ता था।
  • स्टेजिंग और प्रोडक्शन परिनियोजन (deployments) को मंजूरी देने के लिए CLI कमांड टाइप करने पड़ते थे।

Model Context Protocol (MCP) के आने से लार्ज लैंग्वेज मॉडल्स (LLMs) के सॉफ्टवेयर टूल्स और API के साथ इंटरफेस करने का तरीका मानकीकृत हो गया है। नाजुक वेबहुक बनाने के बजाय, टीमें अब मानकीकृत Slack MCP सर्वर तैनात कर सकती हैं।

Slack को Claude Code, Cursor IDE, Windsurf या स्वायत्त एजेंटों के लिए mcp tool सुइट के रूप में पेश करके, इंजीनियरिंग टीमें वास्तविक ChatOps MCP वर्कफ़्लो बना सकती हैं। स्वायत्त slack bot ai agent निम्नलिखित कार्य कर सकते हैं:

  1. त्वरित प्रबंधन रिपोर्ट तैयार करने के लिए बहु-चैनल थ्रेड सारांशीकरण।
  2. स्वचालित घटना प्रतिक्रिया: वॉर-रूम चैनल बनाना, ऑन-कॉल इंजीनियरों को जोड़ना, टेलीमेट्री प्राप्त करना और रनबुक कार्य सूची तैयार करना।
  3. उच्च जोखिम वाले डेटाबेस माइग्रेशन या प्रोडक्शन रिलीज से पहले Slack Block Kit UI घटकों के माध्यम से मानवीय अनुमोदन (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 बॉट्स   |
+-------------------------------+                                   +-------------------------------+

2. आर्किटेक्चर: Slack Model Context Protocol सर्वर कैसे काम करता है

Slack MCP सर्वर स्थानीय CLI और IDE क्लाइंट के लिए मानक इनपुट/आउटपुट (stdio) पर और वितरित क्लाउड सेवाओं के लिए Server-Sent Events (SSE) पर खुला प्रोटोकॉल लागू करता है।

प्रोटोकॉल निष्पादन जीवनचक्र

जब कोई AI एजेंट (जैसे Claude Code) MCP के माध्यम से Slack के साथ इंटरैक्ट करता है, तो यह निम्न चरणों का पालन करता है:

  1. क्षमता हैंडशेक और टूल खोज (Handshake):
  1. सिमेंटिक रीजनिंग और टूल इनवोकेशन:
  1. Slack Web API रूपांतरण और दर सीमा प्रबंधन:
  1. संदर्भ इनपुट और अनुकूलन:
  1. एजेंट संश्लेषण और कार्रवाई:

3. टूल इन्वेंटरी: आधिकारिक और विस्तारित Slack MCP क्षमताएं

टूल पहचानकर्ता 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 उपयोगकर्ता ID को नाम, पद और ईमेल में बदलता है user_id ~190 tokens
slack_search_messages search.messages पूरे वर्कस्पेस में सिमेंटिक खोज (User Token आवश्यक) query, sort, count ~310 tokens

4. चरण-दर-चरण Slack MCP सेटअप गाइड

चरण 1: Slack ऐप बनाएं और OAuth स्कोप सेट करें

  1. api.slack.com/apps पर जाएं और Create New AppFrom an app manifest चुनें।
  2. अपना लक्षित Slack वर्कस्पेस चुनें।
  3. निम्न मैनिफेस्ट पेस्ट करें:
{
  "display_information": {
    "name": "Autonomous Engineering Agent",
    "description": "Model Context Protocol interface for Claude Code, Cursor, and ChatOps",
    "background_color": "#1A1D21"
  },
  "features": {
    "bot_user": {
      "display_name": "AgentOps",
      "always_online": true
    }
  },
  "oauth_config": {
    "scopes": {
      "bot": [
        "channels:history",
        "channels:read",
        "channels:join",
        "chat:write",
        "chat:write.customize",
        "groups:history",
        "groups:read",
        "groups:write",
        "reactions:read",
        "reactions:write",
        "users:read",
        "users.profile:read"
      ]
    }
  },
  "settings": {
    "org_deploy_enabled": false,
    "socket_mode_enabled": false,
    "token_rotation_enabled": false
  }
}
  1. Install to Workspace पर क्लिक करें और अनुमति दें।
  2. उत्पन्न Bot User OAuth Token (xoxb-...) सुरक्षित रूप से कॉपी करें।

चरण 2: Claude Code CLI कॉन्फ़िगरेशन

पंजीकरण कमांड चलाएं:

claude mcp add slack \
  -e SLACK_BOT_TOKEN="xoxb-your-workspace-token-here" \
  -- npx -y @modelcontextprotocol/server-slack

चरण 3: Cursor IDE और Windsurf में सेटअप

Cursor में ~/.cursor/mcp.json में जोड़ें:

{
  "mcpServers": {
    "slack-chatops": {
      "command": "node",
      "args": ["/usr/local/lib/node_modules/@modelcontextprotocol/server-slack/dist/index.js"],
      "env": {
        "SLACK_BOT_TOKEN": "xoxb-1234567890-abcdef123456"
      }
    }
  }
}

5. स्वचालित घटना प्रतिक्रिया वर्कफ़्लो

+----------------------------------------------------------------------------------------------------+
|                         स्वायत्त घटना प्रतिक्रिया अनुक्रम (SLACK MCP)                             |
+----------------------------------------------------------------------------------------------------+
Datadog / PagerDuty अलर्ट           Claude Code / Agent                Slack MCP और चैनल
        |                                   |                                   |
        |--- 1. वेबहुक अलर्ट ट्रिगर -------->|                                   |
        |    (चेकआउट में 500 एरर स्पाइक)    |                                   |
        |                                   |--- 2. slack_list_channels ------->|
        |                                   |<-- सक्रिय चैनल लौटाता है ---------|
        |                                   |                                   |
        |                                   |--- 3. slack_post_message -------->|
        |                                   |    (#inc-20260902 चैनल बनाता है   |
        |                                   |     और प्रारंभिक ब्रीफिंग देता है)|
        |                                   |                                   |
        |                                   |--- 4. slack_add_reaction -------->|
        |                                   |    (:rotating_light: अलर्ट पर)    |
        |                                   |                                   |
        |                                   |--- 5. Sentry/Datadog से पूछताछ -->|
        |                                   |<-- लॉग और स्टैकट्रेस प्राप्त -----|
        |                                   |                                   |
        |                                   |--- 6. slack_post_reply ---------->|
        |                                   |    (थ्रेड में निदान रिपोर्ट पोस्ट)|
        |                                   |                                   |
        |                                   |--- 7. slack_post_block_approval ->|
        |                                   |    (DB पूल रीस्टार्ट के लिए       |
        |                                   |     Block Kit बटन अनुमोदन)        |

घटना प्रतिक्रिया निष्पादन स्क्रिप्ट

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";
    
    // 1. प्राथमिक अलर्ट पोस्ट करें
    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;

    // 2. स्टेटस रिएक्शन जोड़ें
    await this.slackClient.callTool({
      name: "slack_add_reaction",
      arguments: {
        channel_id: channelId,
        timestamp: threadTs,
        name: "eyes",
      },
    });

    // 3. थ्रेड में विस्तृत रिपोर्ट पोस्ट करें
    const diagnosticReport = [
      `*स्वायत्त घटना विश्लेषण रिपोर्ट* (\`${incident.service}\`):`,
      `• *ट्रिगर समय*: ${incident.triggerTimestamp}`,
      `• *पहचाना गया कारण*: \`checkout-pg-pool\` में डेटाबेस कनेक्शन की कमी।`,
      `• *ऑन-कॉल उत्तरदायी*: <@${onCallUserId}>`,
      `• *अनुशंसित समाधान*: निष्क्रिय सत्रों को बंद करें और पूल का आकार 50 से बढ़ाकर 120 करें।`,
    ].join("\n");

    await this.slackClient.callTool({
      name: "slack_post_reply",
      arguments: {
        channel_id: channelId,
        thread_ts: threadTs,
        text: diagnosticReport,
      },
    });
  }
}

6. Slack Block Kit के माध्यम से इंटरैक्टिव अनुमोदन (Human-in-the-Loop)

स्वायत्त एजेंटों को विनाशकारी कार्रवाइयों (जैसे टेबल हटाना या अनधिकृत माइग्रेशन) का एकतरफा अधिकार नहीं होना चाहिए। Block Kit के माध्यम से मानवीय अनुमोदन सुनिश्चित किया जाता है:

{
  "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"
        }
      ]
    }
  ]
}

7. थ्रेड संपीड़न और टोकन अर्थशास्त्र

import os
import json
from typing import List, Dict, Any

def compress_slack_thread(raw_replies: List[Dict[str, Any]]) -> str:
    # कच्चे JSON को संक्षिप्त टेक्स्ट में बदलकर टोकन खपत को 68% कम करता है
    transcript = []
    for msg in raw_replies:
        user = msg.get("user", "UNKNOWN")
        text = msg.get("text", "")
        reactions = msg.get("reactions", [])
        
        reaction_summary = ""
        if reactions:
            reaction_summary = " [" + ", ".join(f":{r['name']}: x{r['count']}" for r in reactions) + "]"
        
        if msg.get("subtype") in ["channel_join", "channel_leave"]:
            continue
            
        transcript.append(f"<User {user}>{reaction_summary}: {text}")
    return "\n".join(transcript)

8. सुरक्षा और परिचालन आरओआई (ROI)

  • Bot Token (xoxb-): केवल आवश्यक अनुमतियां और पारदर्शी ऑडिट लॉग सुनिश्चित करता है।
  • ROI विश्लेषण: 10 इंजीनियरों की टीम के लिए मासिक मॉडल लागत केवल $15.44 है, जबकि यह ऑन-कॉल इंजीनियरों के 8.75 घंटे ($831.25 मूल्य) बचाती है, जिससे 53.8x शुद्ध ROI मिलता है।
  • 30-दिवसीय रोलआउट: सप्ताह 1 (PoC परीक्षण) → सप्ताह 2 (ऑब्जर्वेबिलिटी लिंकिंग) → सप्ताह 3 (Block Kit अनुमोदन) → सप्ताह 4 (टीम-व्यापी परिनियोजन)।
← सभी लेख
0 / 4