MCP Slack 서버 설정 상세 예시 — 15분 만에 완성하는 실무 매뉴얼

차례 숨기기

 

MCP(Model Context Protocol) Slack 서버를 설정하면 Claude/Cursor 같은 AI 도구가 Slack 채널 조회, 메시지 발송, 스레드 관리를 직접 수행할 수 있습니다.

🎯 설정 완료 후 가능해지는 일

@Claude "어제 #프로젝트-알파 채널에서 @김팀장이 올린 메시지 중
 '긴급'이라고 언급된 것만 추출해서 표로 정리해줘"

→ Claude 가 MCP Slack 서버를 통해:
 1. #프로젝트-알파 채널의 어제 메시지 조회
 2. '긴급' 키워드 필터링
 3. 표 형식으로 요약 → Slack 스레드에 공유

📋 필수 준비물 (5분)

항목 필요 조건 확인 방법
Slack 워크스페이스 관리자 권한 또는 앱 설치 권한 Slack → 설정 → 앱 관리
Node.js v18 이상 (npx 실행용) 터미널: node --version
Claude Desktop 또는 Cursor MCP 지원 AI 에디터 Claude Desktop 1.20+ 또는 Cursor 0.45+
Slack API 앱 Bot Token 발급용 api.slack.com 에서 생성 (아래 상세 가이드)

🚀 1단계: Slack Bot App 생성 (5분)

1-1. Slack API 앱 만들기

  1. api.slack.com/apps 접속 → Create New App 클릭
  2. From scratch 선택
  3. 앱 이름 입력 (예: MCP Slack Server)
  4. 개발할 워크스페이스 선택 → Create App 클릭

1-2. Bot Token Scopes 설정

앱 대시보드에서 OAuth & Permissions 메뉴 클릭 → Bot Token Scopes 섹션에서 다음 권한 추가:

Scope 용도 필수 여부
channels:history 공개 채널 메시지 읽기 ✅ 필수
channels:read 채널 목록 조회 ✅ 필수
chat:write 메시지 발송 ✅ 필수
chat:write.public 채널에 첫 메시지 발송 ✅ 필수
groups:history 비공개 채널 메시지 읽기 선택 (비공개 채널 필요 시)
groups:read 비공개 채널 목록 조회 선택
im:history DM 메시지 읽기 선택 (DM 분석 필요 시)
im:read DM 목록 조회 선택
reactions:read 리액션 조회 선택
users:read 사용자 정보 조회 선택

보안 팁: 최소 권한 원칙 적용. 필요한 채널만 접근하도록 Scope 제한 권장.

1-3. 워크스페이스에 설치

  1. OAuth & Permissions 상단의 Install to Workspace 클릭
  2. 권한 요청 화면에서 Allow 클릭
  3. Bot User OAuth Token (xoxb- 로 시작) 복사 → 메모장에 임시 저장

1-4. Team ID 와 Channel ID 확인

Team ID (워크스페이스 ID) 얻기

방법 A: 브라우저 URL

  1. Slack Desktop 에서 아무 채널이나 클릭
  2. 브라우저 주소창에 https://app.slack.com/client/TXXXXXXXXX/CXXXXXXXXX 형식의 URL 표시
  3. T 로 시작하는 부분이 Team ID

방법 B: API 호출

curl -X POST -H "Authorization: Bearer xoxb-your-token" \
 https://slack.com/api/team.info

응답의 team.id 값.

Channel ID 얻기

방법 A: 브라우저 URL

  • 위 URL 에서 C 로 시작하는 부분이 Channel ID

방법 B: Slack 에서 복사

  1. 채널명 우클릭 → 링크 복사
  2. URL 에서 CXXXXXXXXX 추출

방법 C: API 로 전체 목록 조회

curl -X POST -H "Authorization: Bearer xoxb-your-token" \
 "https://slack.com/api/conversations.list?types=public_channel,private_channel"

⚙️ 2단계: Claude Desktop 설정 (3분)

2-1. 설정 파일 위치 확인

OS 설정 파일 경로
macOS ~/Library/Application Support/Claude/claude_desktop_config.json
Windows %APPDATA%\Claude\claude_desktop_config.json
Linux ~/.config/Claude/claude_desktop_config.json

빠른 열기 (macOS):

open ~/Library/Application\ Support/Claude/claude_desktop_config.json

2-2. 설정 파일 편집 (완전 예시)

claude_desktop_config.json 에 다음 내용 추가:

{
 "mcpServers": {
 "slack": {
 "command": "npx",
 "args": ,
 "env": {
 "SLACK_BOT_TOKEN": "xoxb-123456789012-1234567890123-AbCdEfGhIjKlMnOpQrStUvWx",
 "SLACK_TEAM_ID": "T01234567",
 "SLACK_CHANNEL_IDS": "C01234567,C76543210,C11111111"
 }
 }
 }
}

🔑 각 필드 설명

필드 값 예시 설명
SLACK_BOT_TOKEN xoxb-123456789012-... 1-3 에서 복사한 Bot Token
SLACK_TEAM_ID T01234567 1-4 에서 확인한 워크스페이스 ID
SLACK_CHANNEL_IDS C01234567,C76543210 접근 허용할 채널 ID 목록 (콤마 구분, 공백 금지)

주의SLACK_CHANNEL_IDS 는 콤마로만 구분 (공백 넣지 말 것). 생략 시 모든 공개 채널 접근 가능.

2-3. 설정 저장 후 Claude 재시작

  1. 파일 저장 (Cmd/Ctrl + S)
  2. Claude Desktop 완전히 종료 (Cmd/Ctrl + Q)
  3. 다시 실행

✅ 3단계: 연결 확인 (2분)

테스트 프롬프트

Claude 에게 다음 질문:

Slack 에 연결됐어? #general 채널의 최근 메시지 3개만 요약해줘.

또는:

내 Slack 워크스페이스에서 내가 멤버인 채널 목록을 보여줘.

성공 응답 예시

네, Slack 에 연결되었습니다!

#general 채널의 최근 메시지 3개:

1. @김팀장 (10:23)
 "오늘 오후 3 시 전체 미팅 있습니다. Zoom 링크: ..."

2. @이대리 (11:05)
 "Q3 보고서 초안 업로드했습니다. 확인 부탁드립니다."

3. @박과장 (11:42)
 "주말 행사 준비 현황 공유드립니다..."

오류 발생 시

오류 메시지 원인 해결법
Invalid token Token 이 잘못되었거나 만료됨 1-3 에서 Token 재발급 → 설정 파일 업데이트
channel_not_found Channel ID 가 잘못되었거나 접근 권한 없음 Channel ID 재확인, Bot 을 해당 채널에 초대 (/invite @MCP Slack Server)
missing_scope 필요한 Scope 이 없음 1-2 에서 channels:historychat:write 등 추가
npx: command not found Node.js 미설치 에서 v18+ 설치

🛠️ 4단계: 실전 활용 예시 7가지

예시 1: 특정 채널의 최근 메시지 조회

@Claude #프로젝트-알파 채널에서 지난 24 시간 동안
'버그'라고 언급된 메시지 5 개만 추출해서 표로 정리해줘.
담당자와 언급 시간도 포함해서.

Claude 가 수행하는 작업:

  1. MCP Slack 서버로 conversations.history API 호출
  2. 메시지 필터링 (bug 키워드)
  3. 표 형식으로 요약 → Slack 스레드에 공유

예시 2: 멘션 기반 할 일 추출

@Claude 어제 나한테 온 멘션 (@나) 중
아직 처리 안 된 것만 뽑아서 기한 우선순위로 정리해줘.
각각에 대해 추천 액션도 함께 알려줘.

Claude 가 수행하는 작업:

  1. 모든 채널에서 @사용자 멘션 검색
  2. 미완료 작업 식별 (후속 메시지 없는 것)
  3. 우선순위 제안 (긴급 키워드 포함 여부 등)

예시 3: 채널별 활동 요약

@Claude 이번 주 #영업-팀, #마케팅-팀, #개발-팀 채널의
주요 결정사항을 채널별로 3 가지씩 정리해줘.

Claude 가 수행하는 작업:

  1. 3 개 채널의 지난 7 일 메시지 조회
  2. “결정”, “완료”, “승인” 등 결정 키워드 추출
  3. 채널별 3 가지 핵심 안건 요약

예시 4: 자동 알림 메시지 발송

@Claude #공지-사항 채널에 다음 내용으로 알림 메시지 보내줘:

"내일 오후 2 시 전체 미팅이 있습니다.
Zoom 링크: https://zoom.us/j/123456789
필수 참석이므로 일정 조정 부탁드립니다."

Claude 가 수행하는 작업:

  1. MCP Slack 서버로 chat.postMessage API 호출
  2. 지정 채널에 메시지 발송
  3. 발송 완료 보고

주의: 메시지 발송은 반드시 사용자 확인을 거치는 것이 보안상 권장됨.

예시 5: 스레드 기반 Q&A 자동화

@Claude #고객지원 채널에서 지난 1 시간 동안
'방법을 알려주세요' 패턴의 질문을 찾고,
각각에 대해 우리 문서베이스 기준으로 답변 초안을
스레드로 달아줘.

Claude 가 수행하는 작업:

  1. 실시간 채널 모니터링 (또는 과거 1 시간 메시지 조회)
  2. 질문 패턴 매칭
  3. 내부 문서 (연동된 Knowledge Base) 기반 답변 생성
  4. 각 질문의 스레드로 답변 발송

예시 6: 리액션 기반 투표 집계

@Claude #의사결정 채널에서
'안건 A'와 '안건 B' 메시지에 달린 👍 리액션 수를 세어서
어느 안건이 더 지지받는지 표로 보여줘.

Claude 가 수행하는 작업:

  1. 두 메시지의 리액션 목록 조회 (reactions.get)
  2. 👍 카운트 비교
  3. 결과 표 생성 + 승자 판정

예시 7: DM 기반 개인 브리핑

@Claude 나한테 DM 으로 오늘 아침 브리핑 보내줘:
- 오늘 내가 참석하는 미팅 3 개
- 오늘 기한인 할 일 2 개
- 우선순위가 높은 읽지 않은 멘션 3 개

Claude 가 수행하는 작업:

  1. Google Calendar 연동 (MCP Calendar 서버) → 미팅 조회
  2. Slack 할 일 (또는 Jira 연동) → 기한 작업 추출
  3. 멘션 검색 → 우선순위 필터링
  4. 사용자에게 DM 으로 종합 브리핑 발송

🔌 고급: 커스텀 Slack MCP 서버 구축 (선택)

공식 서버로 부족할 경우, 자체 MCP 서버를 만들 수 있습니다.

예시: Python + FastMCP v2

# main.py
from fastmcp import FastMCP

mcp = FastMCP("Slack Custom Server")

@mcp.tool()
def search_slack_messages(query: str, channel: str, days: int = 7) -> list:
 """Slack 채널에서 키워드로 메시지 검색"""
 import os
 from slack_sdk import WebClient

 client = WebClient(token=os.environ)

 # 채널 ID 조회
 channels = client.conversations_list(types="public_channel,private_channel")
 channel_id = next(c for c in channels if c == channel)

 # 메시지 검색
 result = client.search_messages(
 query=query,
 sort="timestamp",
 sort_dir="desc",
 count=20
 )

 return if __name__ == "__main__":
 mcp.run()

실행 설정

{
 "mcpServers": {
 "slack-custom": {
 "command": "python",
 "args": ,
 "env": {
 "SLACK_BOT_TOKEN": "xoxb-..."
 }
 }
 }
}

⚠️ 보안 & 운영 가이드

권한 최소화 원칙

시나리오 권장 Scope
읽기 전용 분석 channels:historychannels:read
메시지 발송 추가 chat:writechat:write.public
비공개 채널 접근 groups:historygroups:read
DM 분석 im:historyim:read

절대 추가 금지admin:*posts:*files:* (불필요한 고위험 권한)

채널 접근 제한

SLACK_CHANNEL_IDS 에 필수 채널만 명시적으로 지정:

"SLACK_CHANNEL_IDS": "C01234567,C76543210" // #공지-사항, #프로젝트-알파 만 접근

생략 시 모든 공개 채널 접근 가능 → 보안 리스크.

Token 관리

항목 권장 사항
Token 저장 .env 파일 또는 시크릿 관리자 사용 (설정 파일에 직접 기록 금지)
Token 순환 90 일마다 재발급 (Slack API → OAuth & Permissions → Rotate Token)
감사 로그 Slack Admin → 앱 활동 로그 에서 MCP 서버 사용 내역 정기 확인

📊 공식 서버 vs 커스텀 서버 비교

항목 공식 MCP Slack 서버 커스텀 서버 (FastMCP 등)
설정 난이도 ⭐ 쉬움 (npx 한 줄) ⭐⭐⭐ 보통 (코드 작성 필요)
지원 기능 채널 조회, 메시지 발송, 스레드 관리 무제한 (API 전체 활용)
유지보수 자동 업데이트 직접 관리
추천 대상 90% 사용자 특수 워크플로우 필요 시

🆘 문제 해결 (FAQ)

Q1. Claude 가 “Slack 에 연결할 수 없습니다”라고 해요

확인 리스트:

  1. SLACK_BOT_TOKEN 이 xoxb- 로 시작하는지 확인
  2. Token 에 공백이나 줄바꿈이 포함되지 않았는지 확인
  3. Bot 이 해당 채널에 초대되었는지 확인: /invite @Claude
  4. Claude Desktop 재시작

Q2. 특정 채널만 읽히지 않아요

해결법:

  1. Bot 을 해당 채널에 초대: #채널명 에서 /invite @Claude
  2. SLACK_CHANNEL_IDS 에 해당 채널 ID 가 포함되었는지 확인
  3. 비공개 채널인 경우 groups:history Scope 추가

Q3. 메시지는 읽히는데 발송이 안 돼요

확인 리스트:

  1. chat:writechat:write.public Scope 이 추가되었는지 확인
  2. Bot 이 발송할 채널에 멤버로 있는지 확인 (초대 필요)
  3. 설정 파일 저장 후 Claude 재시작

Q4. npx 실행 시 네트워크 오류가 떠요

해결법:

# npm 캐시 삭제 후 재시도
npm cache clean --force
npx -y @modelcontextprotocol/server-slack

# 또는 전역 설치 후 실행
npm install -g @modelcontextprotocol/server-slack
npx @modelcontextprotocol/server-slack

💡 실전 팁 5 가지

  1. 채널 ID 는 변수로 관리.env 파일에 SLACK_CHANNEL_IDS 저장 → 설정 파일에서 ${env:SLACK_CHANNEL_IDS} 참조
  2. 테스트 채널 분리#mcp-test 채널 만들어서 기능 검증 후 본 채널 적용
  3. 메시지 발송은 확인 단계 포함: “메시지를 보내드릴까요?” → 사용자 승인 → 발송 워크플로우 권장
  4. 오류 로그는 파일로 출력: MCP 서버 로그를 별도 파일로 저장하여 디버깅 용이하게
  5. 정기 권한 감사: 월 1 회 Slack Admin 에서 앱 권한 사용 내역 확인

📈 설정 완료 체크리스트

  • Slack Bot App 생성 완료
  • Bot Token Scopes 설정 (channels:history, chat:write 등)
  • Bot Token (xoxb-) 복사
  • Team ID (T 로 시작) 확인
  • Channel ID 목록 (C 로 시작) 준비
  • claude_desktop_config.json 에 MCP 서버 설정 추가
  • Claude Desktop 재시작
  • 테스트 프롬프트로 연결 확인 (“Slack 에 연결됐어?”)

“MCP Slack 서버는 AI 에게 회사의 신경계를 연결하는 것입니다.”

15 분 투자로 Slack 이 AI 의 실시간 작업 공간으로 변합니다.

댓글 남기기