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 앱 만들기
- api.slack.com/apps 접속 → Create New App 클릭
- From scratch 선택
- 앱 이름 입력 (예:
MCP Slack Server) - 개발할 워크스페이스 선택 → 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. 워크스페이스에 설치
- OAuth & Permissions 상단의 Install to Workspace 클릭
- 권한 요청 화면에서 Allow 클릭
- Bot User OAuth Token (
xoxb-로 시작) 복사 → 메모장에 임시 저장
1-4. Team ID 와 Channel ID 확인
Team ID (워크스페이스 ID) 얻기
방법 A: 브라우저 URL
- Slack Desktop 에서 아무 채널이나 클릭
- 브라우저 주소창에
https://app.slack.com/client/TXXXXXXXXX/CXXXXXXXXX형식의 URL 표시 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 에서 복사
- 채널명 우클릭 →
링크 복사 - 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 재시작
- 파일 저장 (
Cmd/Ctrl + S) - Claude Desktop 완전히 종료 (
Cmd/Ctrl + Q) - 다시 실행
✅ 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:history, chat:write 등 추가 |
npx: command not found |
Node.js 미설치 | 에서 v18+ 설치 |
🛠️ 4단계: 실전 활용 예시 7가지
예시 1: 특정 채널의 최근 메시지 조회
@Claude #프로젝트-알파 채널에서 지난 24 시간 동안
'버그'라고 언급된 메시지 5 개만 추출해서 표로 정리해줘.
담당자와 언급 시간도 포함해서.
Claude 가 수행하는 작업:
- MCP Slack 서버로
conversations.historyAPI 호출 - 메시지 필터링 (
bug키워드) - 표 형식으로 요약 → Slack 스레드에 공유
예시 2: 멘션 기반 할 일 추출
@Claude 어제 나한테 온 멘션 (@나) 중
아직 처리 안 된 것만 뽑아서 기한 우선순위로 정리해줘.
각각에 대해 추천 액션도 함께 알려줘.
Claude 가 수행하는 작업:
- 모든 채널에서
@사용자멘션 검색 - 미완료 작업 식별 (후속 메시지 없는 것)
- 우선순위 제안 (긴급 키워드 포함 여부 등)
예시 3: 채널별 활동 요약
@Claude 이번 주 #영업-팀, #마케팅-팀, #개발-팀 채널의
주요 결정사항을 채널별로 3 가지씩 정리해줘.
Claude 가 수행하는 작업:
- 3 개 채널의 지난 7 일 메시지 조회
- “결정”, “완료”, “승인” 등 결정 키워드 추출
- 채널별 3 가지 핵심 안건 요약
예시 4: 자동 알림 메시지 발송
@Claude #공지-사항 채널에 다음 내용으로 알림 메시지 보내줘:
"내일 오후 2 시 전체 미팅이 있습니다.
Zoom 링크: https://zoom.us/j/123456789
필수 참석이므로 일정 조정 부탁드립니다."
Claude 가 수행하는 작업:
- MCP Slack 서버로
chat.postMessageAPI 호출 - 지정 채널에 메시지 발송
- 발송 완료 보고
주의: 메시지 발송은 반드시 사용자 확인을 거치는 것이 보안상 권장됨.
예시 5: 스레드 기반 Q&A 자동화
@Claude #고객지원 채널에서 지난 1 시간 동안
'방법을 알려주세요' 패턴의 질문을 찾고,
각각에 대해 우리 문서베이스 기준으로 답변 초안을
스레드로 달아줘.
Claude 가 수행하는 작업:
- 실시간 채널 모니터링 (또는 과거 1 시간 메시지 조회)
- 질문 패턴 매칭
- 내부 문서 (연동된 Knowledge Base) 기반 답변 생성
- 각 질문의 스레드로 답변 발송
예시 6: 리액션 기반 투표 집계
@Claude #의사결정 채널에서
'안건 A'와 '안건 B' 메시지에 달린 👍 리액션 수를 세어서
어느 안건이 더 지지받는지 표로 보여줘.
Claude 가 수행하는 작업:
- 두 메시지의 리액션 목록 조회 (
reactions.get) - 👍 카운트 비교
- 결과 표 생성 + 승자 판정
예시 7: DM 기반 개인 브리핑
@Claude 나한테 DM 으로 오늘 아침 브리핑 보내줘:
- 오늘 내가 참석하는 미팅 3 개
- 오늘 기한인 할 일 2 개
- 우선순위가 높은 읽지 않은 멘션 3 개
Claude 가 수행하는 작업:
- Google Calendar 연동 (MCP Calendar 서버) → 미팅 조회
- Slack 할 일 (또는 Jira 연동) → 기한 작업 추출
- 멘션 검색 → 우선순위 필터링
- 사용자에게 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:history, channels:read |
| 메시지 발송 추가 | + chat:write, chat:write.public |
| 비공개 채널 접근 | + groups:history, groups:read |
| DM 분석 | + im:history, im: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 에 연결할 수 없습니다”라고 해요
확인 리스트:
SLACK_BOT_TOKEN이xoxb-로 시작하는지 확인- Token 에 공백이나 줄바꿈이 포함되지 않았는지 확인
- Bot 이 해당 채널에 초대되었는지 확인:
/invite @Claude - Claude Desktop 재시작
Q2. 특정 채널만 읽히지 않아요
해결법:
- Bot 을 해당 채널에 초대:
#채널명에서/invite @Claude SLACK_CHANNEL_IDS에 해당 채널 ID 가 포함되었는지 확인- 비공개 채널인 경우
groups:historyScope 추가
Q3. 메시지는 읽히는데 발송이 안 돼요
확인 리스트:
chat:write,chat:write.publicScope 이 추가되었는지 확인- Bot 이 발송할 채널에 멤버로 있는지 확인 (초대 필요)
- 설정 파일 저장 후 Claude 재시작
Q4. npx 실행 시 네트워크 오류가 떠요
해결법:
# npm 캐시 삭제 후 재시도
npm cache clean --force
npx -y @modelcontextprotocol/server-slack
# 또는 전역 설치 후 실행
npm install -g @modelcontextprotocol/server-slack
npx @modelcontextprotocol/server-slack
💡 실전 팁 5 가지
- 채널 ID 는 변수로 관리:
.env파일에SLACK_CHANNEL_IDS저장 → 설정 파일에서${env:SLACK_CHANNEL_IDS}참조 - 테스트 채널 분리:
#mcp-test채널 만들어서 기능 검증 후 본 채널 적용 - 메시지 발송은 확인 단계 포함: “메시지를 보내드릴까요?” → 사용자 승인 → 발송 워크플로우 권장
- 오류 로그는 파일로 출력: MCP 서버 로그를 별도 파일로 저장하여 디버깅 용이하게
- 정기 권한 감사: 월 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 의 실시간 작업 공간으로 변합니다.