슬랙, 브라우저 말고 터미널에서
매일 쓰는 슬랙인데, 앱을 열지 않고도 메시지를 보내고 채널을 뒤지고 워크플로우를 돌릴 수 있다면? Slack CLI와 Slack MCP를 쓰면 그게 된다.
- Slack CLI - 터미널에서 슬랙 앱을 만들고, 실행하고, 배포하는 공식 CLI
- Slack MCP - AI가 슬랙 워크스페이스를 읽고 쓸 수 있게 해주는 MCP 서버
Slack CLI - 슬랙 앱을 터미널에서
설치
curl -fsSL https://downloads.slack-edge.com/slack-cli/install.sh | bash
slack version # 설치 확인
slack auth login # 워크스페이스 인증앱 만들기
slack create my-bot이 한 줄이면 끝이다. 프레임워크를 고르라고 물어보는데,
| 프레임워크 | 특징 |
|---|---|
| Deno Slack SDK | Slack 인프라에서 서버리스로 실행 |
| Bolt for JavaScript | Express 스타일, 익숙함 |
| Bolt for Python | 파이썬 |
선택하면 워크플로우, 트리거, 함수까지 동작하는 스캐폴딩이 뚝딱 나온다.
로컬 개발이 편하다
slack run이게 진짜 좋은 부분이다. 로컬에서 코드를 수정하면 실시간으로 워크스페이스에 반영된다. 파일 저장하면 자동 리로드되고 슬랙에서 바로 확인할 수 있다. 배포 없이 라이브로 테스트가 가능하다.
주요 명령어
slack deploy # 프로덕션 배포
slack trigger create # 트리거 생성 (링크, 스케줄, 이벤트, 웹훅)
slack datastore query # 슬랙 호스팅 DB 조회
slack platform activity # 배포된 앱 실시간 로그슬랙이 호스팅하는 간단한 key-value 스토어다. 별도 DB 없이 앱 데이터를 저장할 수 있다. 간단한 투표 봇이나 승인 워크플로우 정도는 이것만으로 충분하다.
뭘 만들 수 있을까?
- PTO 승인 봇 - 휴가 신청하면 매니저한테 승인 요청 보내고 결과 알림
- 온콜 로테이션 - 스케줄 트리거로 매주 담당자 자동 변경
- PR 리뷰 알림 - 웹훅 트리거로 GitHub PR이 올라오면 슬랙 채널에 알림
- 스탠드업 봇 - 매일 아침 팀원에게 폼 보내고 결과 취합
slack-samples에 템플릿이 수십 개 있어서 복붙하고 수정하면 금방 만든다.
Slack MCP - AI한테 슬랙 접근 권한 주기
MCP(Model Context Protocol) 는 AI 에이전트가 외부 서비스의 데이터에 접근하는 표준 프로토콜이다. Slack MCP 서버를 연결하면 Claude가 워크스페이스 메시지를 검색하고, 읽고, 보내는 것까지 가능해진다.
Claude Desktop에서 설정
가장 간단한 방법은 Claude Desktop에서 Customize → Connectors에 들어가서 Slack을 추가하고 OAuth로 인증하는 거다.
수동으로 설정 파일을 직접 편집할 수도 있다.
{
"mcpServers": {
"slack": {
"type": "http",
"url": "https://mcp.slack.com/mcp",
"oauth": {
"clientId": "1601185624273.8899143856786",
"callbackPort": 3118
}
}
}
}Bot Token 방식
직접 Slack App을 만들어서 봇 토큰으로 연결하는 방법도 있다. 제어할 수 있는 게 더 많다.
{
"mcpServers": {
"slack": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-slack"],
"env": {
"SLACK_BOT_TOKEN": "xoxb-your-bot-token",
"SLACK_TEAM_ID": "T0123456789"
}
}
}
}봇 토큰(xoxb-)은 봇이 초대된 채널만 접근할 수 있고, search API를 쓸 수 없다. 워크스페이스 전체 검색이 필요하면 유저 토큰을 써야 한다.
AI한테 이런 걸 시킬 수 있다
연결하고 나면 자연어로 부탁하면 된다.
| 프롬프트 예시 | 하는 일 |
|---|---|
| 이번 주 #engineering 채널 요약해줘 | 채널 히스토리 읽고 요약 |
| API 마이그레이션 관련 논의 찾아줘 | 여러 채널에서 메시지 검색 |
| 프로젝트 업데이트 작성해서 #general에 올려줘 | 메시지 작성하고 전송 |
| Q1 목표 캔버스 만들어서 프로덕트팀에 공유해 | 캔버스 생성하고 공유 |
| @yeye가 배포 이슈 관련해서 뭐라고 했어? | 유저+키워드로 필터 검색 |
채널 히스토리를 쭉 읽어서 핵심만 뽑아주는 게 체감상 가장 유용하다.
MCP가 제공하는 도구들
| 카테고리 | 기능 |
|---|---|
| 검색 | 메시지, 파일, 유저, 채널 검색 (날짜/유저/타입 필터) |
| 메시징 | 채널 히스토리, 스레드 읽기, 메시지 전송 |
| 캔버스 | 캔버스 생성, 읽기, 공유 |
| 유저 | 프로필, 상태, 커스텀 필드 조회 |
메시지 전송(conversations_add_message) 같은 쓰기 도구는 기본적으로 꺼져 있다. AI가 실수로 메시지를 쏘는 걸 막기 위해서다. 환경변수로 명시적으로 켜야 쓸 수 있다.
둘을 같이 쓰면?
Slack CLI와 MCP는 방향이 다르다.
| Slack CLI | Slack MCP | |
|---|---|---|
| 방향 | 개발자가 슬랙에 앱을 만든다 | AI가 슬랙 데이터에 접근한다 |
| 하는 일 | 앱 빌드/배포 | 데이터 읽기/쓰기 |
| 인터페이스 | 터미널 명령어 | 자연어 대화 |
조합하면 재밌는 워크플로우가 나온다.
- CLI로 봇 만들고, MCP로 모니터링 -
slack run으로 봇을 개발하면서 Claude한테 내 봇이 보낸 메시지 중에 에러 리포트 있는지 물어본다 - MCP로 분석하고, CLI로 자동화 - 이번 달 #support 채널에서 가장 많이 나온 이슈가 뭔지 파악하고, CLI로 해당 이슈 자동 분류 봇을 만든다
- MCP로 초안 작성, CLI 봇이 정기 발송 - Claude가 주간 리포트를 써주고 스케줄 트리거로 매주 월요일 아침에 자동 발송
주의할 점
- Rate Limit - Slack Web API 제한이 그대로 적용된다. 너무 많이 때리면 쓰로틀링 걸린다
- 프라이빗 채널 - 봇이 초대되지 않은 프라이빗 채널이나 DM은 접근 불가
- 워크스페이스 관리자 승인 - MCP 클라이언트 연결은 워크스페이스 관리자가 승인해야 할 수 있다