> ## Documentation Index
> Fetch the complete documentation index at: https://manual.seahorse.dnotitia.ai/llms.txt
> Use this file to discover all available pages before exploring further.

> Slack MCP Server 템플릿 — channels, messages, threads, reactions, users 관리 (6 tools). Bot Token + Team ID 만으로 1 분 내 등록

# Slack

# Slack MCP Server 템플릿

**경로**: Console → **Agent Ops → Tool Management** → **+ 도구 생성** → **Quick Setup** 에서 **Slack** 선택

`Slack MCP Server — channels, messages, threads, reactions, users (6 tools)`

Slack 워크스페이스의 채널·메시지·스레드·리액션·사용자 관리를 MCP 도구로 제공합니다. 템플릿 기반으로 등록하면 **자격 증명만 입력** 하면 바로 사용 가능합니다.

## 사전 주입 값 (Basic Information)

Slack 선택 시 아래 값이 **자동으로 채워집니다**. 그대로 저장하면 됩니다.

| 필드            | 값                                                                            |
| ------------- | ---------------------------------------------------------------------------- |
| **Name**      | `slack`                                                                      |
| **Transport** | `Standard I/O` (stdio)                                                       |
| **설명**        | `Slack MCP Server — channels, messages, threads, reactions, users (6 tools)` |
| **Access**    | 기본 `Private` (운영 상황에 맞춰 `Public` 으로 변경 가능)                                   |

### Run Settings

| 항목               | 값                                          |
| ---------------- | ------------------------------------------ |
| **Command**      | `npx`                                      |
| **Args**         | `-y`, `@modelcontextprotocol/server-slack` |
| **Add Argument** | 필요 시 추가 인자 (`--debug` 등)                   |

## 환경 변수 (Environment Variables)

### 템플릿 기본 제공 (User Input · 필수)

Slack 템플릿이 사전 정의해둔 두 개의 User Input 변수 — **사용자가 직접 입력** 해야 합니다.

| 변수                    | 타입         | 설명                                      | 예시                    |
| --------------------- | ---------- | --------------------------------------- | --------------------- |
| **SLACK\_BOT\_TOKEN** | User Input | `Slack Bot User OAuth Token (xoxb-...)` | `xoxb-1234567890-...` |
| **SLACK\_TEAM\_ID**   | User Input | `Slack Workspace/Team ID (T...)`        | `T01234ABCDE`         |

### 추가 환경변수 (이 화면에서 직접 설정 가능)

사전 정의된 필드 아래 **`Add Environment Variable`** 버튼으로 변수를 추가할 수 있습니다. 각 변수는 두 가지 타입 중 선택:

| 타입                 | 이 화면에서 값 입력?                                                      | 용도                                                                                         |
| ------------------ | ----------------------------------------------------------------- | ------------------------------------------------------------------------------------------ |
| **User Input**     | ✓ 직접 입력                                                           | 사용자 단위 설정 (개별 워크스페이스별 토큰 등)                                                                |
| **System Default** | ✗ 입력 불가 — `This value is fixed and automatically used at runtime` | 운영자가 [Environment](/internal/system-admin/settings/environment) 에 미리 세팅한 값이 **런타임에 자동 주입** |

**자주 추가하는 변수**

| 변수                           | 타입 권장                        | 설명                                                  |
| ---------------------------- | ---------------------------- | --------------------------------------------------- |
| `SLACK_CHANNEL_IDS`          | User Input                   | 접근 허용 채널 ID 목록 (쉼표 구분, 예: `C01ABC,C02DEF`)          |
| `SLACK_APP_TOKEN`            | User Input                   | Socket Mode 용 App Token (`xapp-…`) — 실시간 리스너에 별도 사용 |
| `SLACK_DEFAULT_CHANNEL`      | User Input 또는 System Default | 기본 전송 채널 (예: `#seahorse-bot`)                       |
| `HTTP_PROXY` / `HTTPS_PROXY` | System Default               | 사내 프록시 경유가 필요한 경우 운영자가 전역 설정                        |

<Info>
  **User Input vs System Default 선택 기준**

  * **User Input** — 도구마다 다른 값을 써야 하는 경우 (테넌트별·워크스페이스별 토큰)
  * **System Default** — 테넌트 전체에 공통인 설정 (프록시·공통 게이트웨이 등) — 개별 사용자가 변경 못 하게 막고 싶을 때

  Slack 템플릿은 기본적으로 모두 User Input 으로 설계되어 있어, 각 팀이 자기 워크스페이스 토큰을 입력해 독립적으로 운영할 수 있습니다.
</Info>

설정 완료 후 **Save** 클릭으로 적용.

## 외부 참고 문서

Slack 측 설정(App 생성·Scope·이벤트 구독) 은 Slack 공식 문서가 정확·최신입니다. 본 템플릿을 쓰기 전에 아래 문서를 먼저 확인하세요.

| 주제                        | 링크                                                                                                                     |
| ------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
| **Slack API 홈**           | [api.slack.com](https://api.slack.com/)                                                                                |
| **Your Apps (App 생성·관리)** | [api.slack.com/apps](https://api.slack.com/apps)                                                                       |
| **OAuth Scopes 레퍼런스**     | [api.slack.com/scopes](https://api.slack.com/scopes)                                                                   |
| **Events API (멘션 등)**     | [api.slack.com/apis/events-api](https://api.slack.com/apis/events-api)                                                 |
| **Socket Mode** (실시간 리스너) | [api.slack.com/apis/socket-mode](https://api.slack.com/apis/socket-mode)                                               |
| **Rate Limits**           | [api.slack.com/docs/rate-limits](https://api.slack.com/docs/rate-limits)                                               |
| **Bot vs User Token 차이**  | [api.slack.com/concepts/token-types](https://api.slack.com/concepts/token-types)                                       |
| **Slack MCP 서버 소스**       | [github.com/modelcontextprotocol/servers — slack](https://github.com/modelcontextprotocol/servers/tree/main/src/slack) |

<Info>
  본 Seahorse 템플릿은 공식 `@modelcontextprotocol/server-slack` 을 사용합니다. **노출 도구·인자 스펙이 업스트림 변경에 따라 달라질 수 있으니**, 문제가 생기면 위 MCP 서버 저장소의 README·Changelog 를 먼저 확인하세요.
</Info>

## 전체 연동 절차 (처음 사용자 기준)

Slack App Dashboard 구조가 처음엔 헷갈릴 수 있어, **실제 진행 순서대로** 단계별로 정리합니다. 각 단계마다 **화면에 무엇이 보이고 / 무엇을 하면 되는지** 를 함께 제공합니다.

<Steps>
  <Step title="1단계 — Slack App 생성 신청">
    **링크**: [api.slack.com/apps](https://api.slack.com/apps) → **Create New App** → **From scratch**

    입력:

    * **App Name**: 사용자에게 보일 봇 이름 (예: `seahorse-bot`)
    * **Pick a workspace**: 연동할 워크스페이스 선택

    `Create App` 클릭 → **Basic Information** 페이지로 이동.

    > 신청 즉시 앱이 생성되고 토큰은 아직 없는 상태입니다.
  </Step>

  <Step title="2단계 — Basic Information 화면에서 뜨는 정보 확인">
    생성 직후 보이는 페이지에 **App Credentials** 섹션이 있습니다 (App ID · Client ID · Client Secret · Signing Secret · Verification Token).

    <Warning>
      **이 값들은 Seahorse 템플릿 입력에 사용하지 않습니다.** 아래 표의 용도로만 쓰이거나(또는 deprecated) 합니다. 복사해둘 필요 없이 **다음 단계로 진행** 하세요.
    </Warning>

    | 화면에 보이는 값                 | 용도                     | Seahorse 에 쓰나       |
    | ------------------------- | ---------------------- | ------------------- |
    | App ID                    | 앱 식별자                  | ✗                   |
    | Client ID / Client Secret | OAuth 2.0 로그인 대행       | ✗                   |
    | Signing Secret            | 웹훅 요청 검증               | △ Socket Mode 구성 시만 |
    | Verification Token        | **deprecated — 사용 금지** | ✗                   |

    **할 일**: 좌측 사이드바의 **Features → OAuth & Permissions** 로 이동.
  </Step>

  <Step title="3단계 — OAuth & Permissions 에서 Scope 추가">
    **화면에 보이는 것**:

    * 상단 Token Rotation 안내 — **무시** (Redirect URL·Token Rotation 모두 기본 연동에 불필요)
    * **OAuth Tokens** 섹션에 `OAuth Tokens will be automatically generated when you finish installing your app to your workspace.` 안내 (토큰은 아직 없음)
    * 하단 **범위 → 봇 토큰 범위** 에 Scope 가 비어 있는 상태

    **할 일**: **봇 토큰 범위** 의 **Add an OAuth Scope** 버튼으로 아래 Scope 최소 3 개 추가.

    | Scope                                | 용도              | 필요성                |
    | ------------------------------------ | --------------- | ------------------ |
    | `chat:write`                         | 봇이 메시지 전송       | 필수                 |
    | `channels:read`                      | 공개 채널 목록 조회     | 필수                 |
    | `channels:history`                   | 공개 채널 메시지 읽기    | 필수 (RAG·문서 Q\&A 용) |
    | `users:read`                         | 사용자 프로필 조회      | 권장                 |
    | `reactions:read` · `reactions:write` | 리액션             | 선택                 |
    | `files:write`                        | 봇이 파일 첨부·업로드    | 선택                 |
    | `groups:read` · `groups:history`     | **비공개 채널** 접근 시 | 선택                 |
    | `im:history` · `im:write`            | **DM** 에서 사용 시  | 선택                 |

    <Info>
      **User Token Scopes 는 비워두세요.** Seahorse 표준 Q\&A · 알림 봇은 Bot Token Scopes 만으로 동작합니다. 사용자 행세가 필요한 특수 케이스에만 추가.
    </Info>
  </Step>

  <Step title="4단계 — Install to Workspace (토큰 발급 트리거)">
    **Scope 를 1 개 이상 추가한 뒤**, 페이지 상단 **OAuth Tokens** 섹션의 버튼이 활성화됩니다:

    * **본인이 워크스페이스 관리자** 면: **Install to Workspace** 버튼
    * **관리자 아님**: **Request to Workspace Install** 버튼 → 클릭 시 관리자에게 요청 발송 → 관리자가 Slack Admin Console 에서 승인 필요

    **할 일**: 버튼 클릭 → 권한 요약 화면 → **Allow** 클릭.

    <Warning>
      Scope 추가만으로는 토큰이 생기지 않습니다. 이 Install 단계를 반드시 거쳐야 `xoxb-…` 토큰이 발급됩니다.
    </Warning>
  </Step>

  <Step title="5단계 — Bot User OAuth Token 복사">
    승인 직후 **OAuth & Permissions 페이지 최상단** 에 다음이 나타납니다:

    ```
    OAuth Tokens

    Bot User OAuth Token
    xoxb-XXXXXXXXX-YYYYYYYYY-ZZZZZZZZZZZZZ    [Copy]
    ```

    **할 일**:

    * `Copy` 버튼으로 전체 값 복사
    * 이 값이 Seahorse 의 **`SLACK_BOT_TOKEN`** 입력값입니다

    <Warning>
      Bot Token 은 시크릿입니다. 공개 저장소·Slack 채널·이메일 등에 노출하지 마세요. 유출되면 즉시 **Revoke All OAuth Tokens** → 재발급.
    </Warning>
  </Step>

  <Step title="6단계 — Team ID 확인">
    Dashboard 어디에도 Team ID 가 직접 노출되지 않아 별도로 확인해야 합니다.

    **방법 A — auth.test API (가장 빠름)**:

    ```bash theme={null}
    curl -H "Authorization: Bearer xoxb-..." https://slack.com/api/auth.test
    ```

    응답 JSON 의 `"team_id":"T01234ABCDE"` 값이 `SLACK_TEAM_ID`.

    **방법 B — Slack 웹 UI**:
    워크스페이스 접속 → **About this workspace → Workspace ID**.
  </Step>

  <Step title="7단계 — Seahorse 에 등록">
    Console → **Agent Ops → Tool Management → + 도구 생성 → Slack** 선택 → 아래 값 입력:

    | 필드                | 값                  |
    | ----------------- | ------------------ |
    | `SLACK_BOT_TOKEN` | 5단계에서 복사한 `xoxb-…` |
    | `SLACK_TEAM_ID`   | 6단계에서 확인한 `T…`     |

    **Save** → [도구 상세](/console/agent-ops/agent-tool/tool-detail) 의 **Test** 로 연결 검증 → 6 개 도구 목록 채워지면 성공.
  </Step>

  <Step title="8단계 — 봇을 대상 채널에 초대 (잊기 쉬움)">
    등록만으론 부족합니다. 봇이 **읽거나 쓸 각 채널에 명시적으로 초대** 해야 합니다.

    Slack 에서 해당 채널에 들어가 입력창에:

    ```
    /invite @seahorse-bot
    ```

    <Warning>
      **공개 채널이어도 초대 없이는 `channels:history` · `chat:write` 가 거부** 됩니다. 호출 시 `channel_not_found` 에러가 뜨면 이 단계를 확인하세요.
    </Warning>
  </Step>
</Steps>

## 체크리스트

정상 연동 시 아래 조건이 모두 충족되어야 합니다.

* [ ] Slack App 생성 완료
* [ ] OAuth & Permissions 의 **Bot Token Scopes** 에 `chat:write` · `channels:read` · `channels:history` 최소 포함
* [ ] **Install to Workspace** 승인 완료
* [ ] **Bot User OAuth Token** (`xoxb-…`) 확보
* [ ] **Team ID** (`T…`) 확보
* [ ] Seahorse Tool Management 에 Slack 템플릿 등록 + **Test** 성공
* [ ] 사용할 Slack 채널마다 `/invite @bot-name` 완료

<Info>
  **실시간 멘션 수신(Socket Mode)** 이 추가로 필요한 경우:

  * Slack App 에서 **Socket Mode** 활성화 + **App-Level Token** (`xapp-…`) 발급
  * [Agent 생성 → Slack 탭](/console/agent-ops/agent/agent-create#6-slack-탭--slack-configuration) 에 `SLACK_APP_TOKEN`·`SLACK_BOT_TOKEN`·`SLACK_SIGNING_SECRET` 등록
  * 방식 비교·구성 상세: [Slack 으로 문서 받아보기 레시피](/agent-chat/recipes/slack-document-delivery)
</Info>

***

## 6 개 노출 도구

본 템플릿 MCP 서버가 제공하는 도구 (상세 인자는 [도구 상세](/console/agent-ops/agent-tool/tool-detail) 에서 Test 버튼으로 확인):

| 도구                             | 용도             |
| ------------------------------ | -------------- |
| **slack\_send\_message**       | 채널·DM 에 메시지 전송 |
| **slack\_read\_channel**       | 채널의 최근 메시지 읽기  |
| **slack\_read\_thread**        | 특정 메시지의 스레드 읽기 |
| **slack\_read\_user\_profile** | 사용자 프로필 조회     |
| **slack\_search\_channels**    | 채널 검색          |
| **slack\_search\_users**       | 사용자 검색         |

<Info>
  **Agent 의 Slack Listener 설정과 구분**

  * **본 템플릿 Tool** — `slack_send_message`·`slack_read_channel` 등을 에이전트가 **능동 호출** (Flow·Scheduler·대화 내 자연 호출)
  * **[Agent 생성 → Slack 탭](/console/agent-ops/agent/agent-create#6-slack-탭--slack-configuration)** — Slack App Token·Signing Secret 을 추가 등록하여 **Socket Mode 로 실시간 멘션 수신** (에이전트가 Slack 이벤트를 수신·응답)

  양방향 실시간 Q\&A 봇을 만들려면 **본 템플릿 + Agent Slack 탭** 을 함께 설정. 주기 폴링으로 충분하면 본 템플릿만으로도 충분합니다. 자세한 패턴: [Slack 으로 문서 받아보기](/agent-chat/recipes/slack-document-delivery)
</Info>

## 활용 레시피

* [Slack 알림 자동화](/agent-chat/recipes/slack-notification) — 일방향 알림 (Flow 결과 → Slack)
* [Slack 으로 문서 받아보기](/agent-chat/recipes/slack-document-delivery) — 양방향 Q\&A 봇 (주기 폴링 / Socket Mode 두 방식)
* [보고서 자동 발행](/agent-chat/recipes/scheduled-report) — 정기 리포트 Slack 전송

## 보안 주의

<Warning>
  * **Bot Token 최소 권한** — 필요한 Scope 만 부여. `admin.`\* 권한 금지.
  * **채널 범위 제한** — `SLACK_CHANNEL_IDS` 로 접근 채널을 명시적으로 제한하면 실수로 다른 채널에 전송하는 사고 방지.
  * **토큰 환경변수로만 전달** — 도구 호출 인자에 토큰을 직접 넣지 마세요 (감사 로그 노출).
  * **Access 기본 Private** — 공개(Public) 로 바꾸기 전에 같은 테넌트의 어떤 에이전트가 접근 가능해지는지 점검.
  * **퇴사자 토큰 회수** — Slack App 관리자에서 해당 토큰 revoke + Seahorse 도구 환경변수 갱신·회수.
</Warning>

## Transport 필드에 관하여

Basic Information 의 Transport 드롭다운에서 **Standard I/O** 외에 **Streamable HTTP** 를 선택하는 것이 UI 상으로는 가능합니다. HTTP 선택 시 입력 필드는 다음과 같이 바뀝니다:

| stdio 필드                               | → | HTTP 필드                                                             |
| -------------------------------------- | - | ------------------------------------------------------------------- |
| Command + Args + Environment Variables | → | Connection Settings (Endpoint URL · Timeout · Verify SSL) + Headers |

<Warning>
  **본 템플릿의 기본 Transport 는 `Standard I/O` 입니다.** 업스트림 MCP 서버(`@modelcontextprotocol/server-slack` · `@modelcontextprotocol/server-github` · `uvx mcp-atlassian` · `rdb_server.py`) 는 모두 **로컬 프로세스(stdio) 기반** 으로 설계되어 있습니다.

  UI 에서 **Streamable HTTP** 로 전환할 수는 있지만, 그 경우 같은 기능을 HTTP 엔드포인트로 감싸서 별도 호스팅한 서버가 이미 준비되어 있어야 합니다 (공식 지원되는 HTTP 버전이 Seahorse 에 번들된 것은 아닙니다).

  * **일반 사용자는 기본 `Standard I/O` 를 그대로 유지** 하세요.
  * HTTP 엔드포인트를 자체 운영 중이고 그걸 연결하려는 경우라면, 사실상 [커스텀 도구](/console/agent-ops/agent-tool/custom-create#streamable-http-방식) 로 처음부터 등록하는 편이 깔끔합니다.
  * HTTP 로 전환한 상태에서는 본 템플릿의 사전 주입 Command/Args/Env 가 더 이상 의미를 갖지 않습니다.
</Warning>

## 관련 문서

* [Quick Setup 템플릿 목록](/console/agent-ops/agent-tool/templates) — 4 개 서비스 템플릿 한눈에
* [도구 상세](/console/agent-ops/agent-tool/tool-detail) — 지원 메서드·호출 로그 확인
* [Tool Management](/) — 도구 전역 관리
* [Agent 생성 — Slack 탭](/console/agent-ops/agent/agent-create#6-slack-탭--slack-configuration) — Socket Mode 실시간 리스너
