Skip to main content
Glama

Slack MCP Server

by hyunol7
README.md6.53 kB
# Slack MCP Server ## 프로젝트 개요 및 기능 설명 이 프로젝트는 FastMCP v2를 사용하여 Slack API와 연동되는 MCP(Model Context Protocol) 서버를 구축하는 것을 목표로 합니다. Slack 워크스페이스와의 다양한 상호작용을 제공하며, UTF-8 인코딩을 통한 한글 메시지 지원을 포함합니다. ### **주요 기능** - Slack 채널에 메시지 전송 - 채널 목록 조회 및 관리 - 채널 메시지 히스토리 조회 - 사용자 간 다이렉트 메시지 전송 - 워크스페이스 사용자 목록 조회 ## 설치 및 실행 방법 ### **1. 의존성 설치** ```bash cd 0527/slack-mcp pip install -r requirements.txt ``` ### **2. 가상환경 설정 (권장)** ```bash python -m venv .venv # Windows .venv\Scripts\activate # macOS/Linux source .venv/bin/activate ``` ### **3. MCP 서버 실행** ```bash python slack_mcp_server.py ``` ### **4. 테스트 스크립트 실행** ```bash python main.py ``` ## 환경 변수 설정 방법 ### **1. Slack 앱 생성 및 설정** 1. [Slack API 사이트](https://api.slack.com/apps)에서 새 앱 생성 2. **OAuth & Permissions** 섹션에서 다음 Bot Token Scopes 추가: - `channels:read` (공개 채널 목록 조회) - `groups:read` (비공개 채널 목록 조회) - `channels:history` (채널 메시지 히스토리 조회) - `groups:history` (비공개 채널 메시지 히스토리 조회) - `chat:write` (메시지 전송) - `users:read` (사용자 정보 조회) - `im:write` (다이렉트 메시지 전송) - `mpim:write` (그룹 DM 전송) 3. **Install App to Workspace** 클릭하여 워크스페이스에 설치 4. **Bot User OAuth Token** (xoxb-로 시작하는 토큰) 복사 ### **2. .env 파일 생성** 프로젝트 루트에 `.env` 파일을 생성하고 다음과 같이 설정: ```bash # .env 파일 SLACK_BOT_TOKEN=xoxb-your-slack-bot-token-here TEST_CHANNEL_ID=C08UATXFD8B TEST_CHANNEL_NAME=testhyun TEAM_ID=A08TL5C310F ``` ## 각 도구의 사용법 및 예시 ### **1. 메시지 전송 기능** - **도구명**: `send_slack_message` - **매개변수**: - `channel`: 채널명 (예: testhyun) - `text`: 테스트 - **기능**: 지정된 Slack 채널에 메시지 전송 - **특별 요구사항**: UTF-8 인코딩으로 한글 메시지 지원 **사용 예시:** ```python send_slack_message( channel="testhyun", text="테스트" ) ``` ### **2. 채널 목록 조회 기능** - **도구명**: `get_slack_channels` - **매개변수**: 없음 - **기능**: 접근 가능한 모든 채널 목록 조회 - **반환 정보**: 채널 ID, 이름, 공개/비공개 여부, 멤버십 상태 **사용 예시:** ```python get_slack_channels() ``` ### **3. 채널 메시지 히스토리 조회 기능** - **도구명**: `get_slack_channel_history` - **매개변수**: - `channel_id`: 조회할 채널의 ID (예: C08UATXFD8B) - `limit`: 조회할 메시지 수 (기본값: 10, 최대: 100) - **기능**: 지정된 채널의 최근 메시지 히스토리 조회 - **반환 정보**: 메시지 내용, 작성자, 타임스탬프 **사용 예시:** ```python get_slack_channel_history( channel_id="C08UATXFD8B", limit=10 ) ``` ### **4. 다이렉트 메시지 전송 기능** - **도구명**: `send_slack_direct_message` - **매개변수**: - `user_id`: 메시지를 받을 사용자의 ID - `text`: 테스트 - **기능**: 특정 사용자에게 1:1 다이렉트 메시지 전송 **사용 예시:** ```python send_slack_direct_message( user_id="U1234567890", text="테스트" ) ``` ### **5. 사용자 목록 조회 기능** - **도구명**: `get_slack_users` - **매개변수**: 없음 - **기능**: 워크스페이스의 사용자 목록 조회 (다이렉트 메시지 전송 시 참고용) - **반환 정보**: 사용자 ID, 이름, 실제 이름, 이메일, 관리자 여부 **사용 예시:** ```python get_slack_users() ``` ## 구현 과정에서 겪은 어려움과 해결 방법 ### **1. Slack API 인증 문제** - **어려움**: 초기 Bot Token 설정 시 권한 부족으로 인한 `missing_scope` 오류 발생 - **해결 방법**: Slack 앱 설정에서 필요한 모든 Bot Token Scopes를 추가하고 재설치 ### **2. 한글 메시지 인코딩 문제** - **어려움**: 한글 메시지 전송 시 인코딩 오류 발생 - **해결 방법**: UTF-8 인코딩을 명시적으로 설정하고 Slack API 요청 시 적절한 헤더 설정 ### **3. 채널 접근 권한 문제** - **어려움**: 봇이 특정 채널에 접근할 수 없는 `not_in_channel` 오류 - **해결 방법**: 봇을 해당 채널에 수동으로 초대하거나 공개 채널에서 테스트 진행 ### **4. FastMCP 서버 구조 이해** - **어려움**: FastMCP의 도구 정의 및 매개변수 타입 지정 방법 학습 - **해결 방법**: 공식 문서 참조 및 예제 코드 분석을 통한 점진적 구현 ## 추가로 구현한 기능 ### **1. 포괄적인 오류 처리** - 각 API 호출에 대한 상세한 오류 메시지 및 상태 코드 반환 - 네트워크 오류, 인증 오류, 권한 오류 등에 대한 구체적인 해결 방안 제시 ### **2. 사용자 친화적인 응답 형식** - API 응답을 구조화된 딕셔너리 형태로 반환하여 디버깅 용이성 향상 - 성공/실패 상태와 함께 상세한 메타데이터 제공 ### **3. 테스트 스크립트 (`main.py`)** - 모든 기능을 체계적으로 테스트할 수 있는 종합 테스트 스크립트 - 실시간 결과 확인 및 디버깅 정보 제공 ### **4. 환경별 설정 관리** - `.env` 파일을 통한 환경 변수 관리 - 개발/운영 환경 분리 가능한 구조 ## 주의사항 - Slack Bot Token이 반드시 필요합니다. - 봇이 해당 채널에 추가되어야 메시지를 전송할 수 있습니다. - 비공개 채널의 경우, 봇이 해당 채널의 멤버여야 합니다. - API Rate Limit을 고려하여 사용하세요. ## 문제 해결 ### **자주 발생하는 오류** 1. **`not_in_channel`**: 봇이 해당 채널에 추가되지 않음 - 해결: Slack에서 봇을 채널에 초대 2. **`invalid_auth`**: 토큰이 유효하지 않음 - 해결: `.env` 파일의 `SLACK_BOT_TOKEN` 확인 3. **`missing_scope`**: 필요한 권한이 없음 - 해결: Slack 앱 설정에서 필요한 Bot Token Scopes 추가 4. **Import 오류**: 필요한 패키지가 설치되지 않음 - 해결: `pip install -r requirements.txt` 실행

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/hyunol7/slack-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server