Slack MCP Server

Slack MCP Server

A comprehensive Slack integration server that enables sending messages, managing channels, uploading files, and running Pomodoro timers through FastMCP v2.

Category
Visit Server

README

Slack MCP Server - Complete Implementation

πŸ“‹ ν”„λ‘œμ νŠΈ κ°œμš”

FastMCP v2λ₯Ό μ‚¬μš©ν•˜μ—¬ κ΅¬ν˜„ν•œ μ™„μ „ν•œ Slack API 연동 MCP μ„œλ²„μž…λ‹ˆλ‹€. 과제 κ°€μ΄λ“œλΌμΈμ— 따라 ν•„μˆ˜ κΈ°λŠ₯ 4개, 선택 κΈ°λŠ₯ 4개, 그리고 λ³΄λ„ˆμŠ€ λ½€λͺ¨λ„λ‘œ 타이머 κΈ°λŠ₯ 4개λ₯Ό λͺ¨λ‘ κ΅¬ν˜„ν–ˆμŠ΅λ‹ˆλ‹€.

🎯 μ£Όμš” νŠΉμ§•

  • βœ… μ™„μ „ν•œ UTF-8 ν•œκΈ€ 지원 - λͺ¨λ“  λ©”μ‹œμ§€μ—μ„œ ν•œκΈ€ μ™„λ²½ 지원
  • βœ… 이쀑 토큰 μ‹œμŠ€ν…œ - Bot Token + User Token으둜 λͺ¨λ“  κΈ°λŠ₯ 지원
  • βœ… 슀마트 파일 μ—…λ‘œλ“œ - 크기별 졜적 μ—…λ‘œλ“œ 방식 μžλ™ 선택
  • βœ… λ½€λͺ¨λ„λ‘œ 타이머 - μžλ™ μ•Œλ¦Ό κΈ°λŠ₯이 ν¬ν•¨λœ μ‹œκ°„ 관리 도ꡬ
  • βœ… 비동기 처리 - κ³ μ„±λŠ₯ asyncio 기반 κ΅¬ν˜„
  • βœ… μƒμ„Έν•œ μ—λŸ¬ 핸듀링 - λͺ¨λ“  API ν˜ΈμΆœμ— λŒ€ν•œ μ μ ˆν•œ μ˜ˆμ™Έ 처리

πŸš€ κΈ°λŠ₯ λͺ©λ‘

πŸ”΄ ν•„μˆ˜ κΈ°λŠ₯ (Required Features - 4개)

  1. send_slack_message - λ©”μ‹œμ§€ 전솑

    • 채널 λ˜λŠ” DM에 λ©”μ‹œμ§€ 전솑
    • μŠ€λ ˆλ“œ λ‹΅κΈ€ 지원
    • μ™„μ „ν•œ UTF-8 ν•œκΈ€ 지원
  2. get_slack_channels - 채널 λͺ©λ‘ 쑰회

    • 곡개/λΉ„κ³΅κ°œ 채널 ꡬ뢄
    • 멀버십 μƒνƒœ 확인
    • λ³΄κ΄€λœ 채널 필터링
  3. get_slack_channel_history - λ©”μ‹œμ§€ νžˆμŠ€ν† λ¦¬ 쑰회

    • μ΅œμ‹  λ©”μ‹œμ§€λΆ€ν„° 쑰회
    • μ‹œκ°„ λ²”μœ„ μ§€μ • κ°€λŠ₯
    • λ©”μ‹œμ§€ 메타데이터 포함
  4. send_slack_direct_message - DM 전솑

    • νŠΉμ • μ‚¬μš©μžμ—κ²Œ 1:1 λ©”μ‹œμ§€ 전솑
    • μžλ™ DM 채널 생성
    • 봇 μ‚¬μš©μž 필터링

🟑 선택 κΈ°λŠ₯ (Optional Features - 4개)

  1. get_slack_users - μ‚¬μš©μž λͺ©λ‘ 쑰회

    • μ‚¬μš©μž νƒ€μž…λ³„ λΆ„λ₯˜ (κ΄€λ¦¬μž, 멀버, 게슀트, 봇)
    • DM κ°€λŠ₯ μ‚¬μš©μž 필터링
    • μƒμ„Έν•œ ν”„λ‘œν•„ 정보
  2. search_slack_messages - λ©”μ‹œμ§€ 검색 (User Token ν•„μš”)

    • ν‚€μ›Œλ“œ 기반 전체 μ›Œν¬μŠ€νŽ˜μ΄μŠ€ 검색
    • μ •λ ¬ 및 필터링 μ˜΅μ…˜
    • 검색 κ²°κ³Ό 메타데이터
  3. upload_file_to_slack - 슀마트 파일 μ—…λ‘œλ“œ

    • 파일 크기별 졜적 μ—…λ‘œλ“œ 방식
    • λ‹€μ–‘ν•œ 파일 ν˜•μ‹ 지원
    • μžλ™ 미리보기 및 μ½”λ“œ ν•˜μ΄λΌμ΄νŒ…
  4. add_slack_reaction - λ©”μ‹œμ§€ λ°˜μ‘ μΆ”κ°€

    • 이λͺ¨μ§€ λ°˜μ‘ μΆ”κ°€
    • λ‹€μ–‘ν•œ 이λͺ¨μ§€ ν˜•μ‹ 지원

🟒 λ³΄λ„ˆμŠ€ κΈ°λŠ₯ (Bonus Features - 4개)

  1. start_pomodoro_timer - λ½€λͺ¨λ„λ‘œ 타이머 μ‹œμž‘

    • 5κ°€μ§€ 타이머 νƒ€μž… (study, work, break, meeting, custom)
    • μžλ™ μ‹œμž‘/μ’…λ£Œ μ•Œλ¦Ό
    • μ‚¬μš©μž μ •μ˜ μ‹œκ°„ 및 λ©”μ‹œμ§€
  2. cancel_pomodoro_timer - 타이머 μ·¨μ†Œ

    • μ‹€ν–‰ 쀑인 타이머 μ¦‰μ‹œ 쀑단
    • μ·¨μ†Œ μ•Œλ¦Ό 전솑
  3. list_active_timers - ν™œμ„± 타이머 λͺ©λ‘

    • ν˜„μž¬ μ‹€ν–‰ 쀑인 λͺ¨λ“  타이머
    • μ§„ν–‰λ₯  및 남은 μ‹œκ°„ ν‘œμ‹œ
  4. get_timer_status - 타이머 μƒνƒœ 쑰회

    • νŠΉμ • νƒ€μ΄λ¨Έμ˜ 상세 μƒνƒœ
    • μ‹€μ‹œκ°„ μ§„ν–‰ 상황

πŸ› οΈ μœ ν‹Έλ¦¬ν‹° κΈ°λŠ₯

  1. test_slack_connection - μ—°κ²° ν…ŒμŠ€νŠΈ
  2. get_workspace_info - μ›Œν¬μŠ€νŽ˜μ΄μŠ€ 정보
  3. get_file_preview - 파일 미리보기
  4. verify_or_create_file - 파일 확인/생성

πŸ“¦ μ„€μΉ˜ 및 μ‹€ν–‰ 방법

1. ν”„λ‘œμ νŠΈ μ΄ˆκΈ°ν™”

# ν”„λ‘œμ νŠΈ 클둠 λ˜λŠ” λ‹€μš΄λ‘œλ“œ ν›„
cd slack-mcp

# uv νŒ¨ν‚€μ§€ λ§€λ‹ˆμ € μ„€μΉ˜ (μ—†λŠ” 경우)
curl -LsSf https://astral.sh/uv/install.sh | sh

# κ°€μƒν™˜κ²½ 생성 및 ν™œμ„±ν™”
uv venv
source .venv/bin/activate  # Linux/macOS
# .venv\Scripts\activate  # Windows

# μ˜μ‘΄μ„± μ„€μΉ˜
uv sync
# λ˜λŠ”
uv pip install -r requirements.txt

2. ν™˜κ²½ λ³€μˆ˜ μ„€μ •

.env νŒŒμΌμ„ μƒμ„±ν•˜κ³  λ‹€μŒκ³Ό 같이 μ„€μ •:

# ν•„μˆ˜: Slack Bot Token (xoxb-둜 μ‹œμž‘)
SLACK_BOT_TOKEN=xoxb-your-bot-token-here

# 선택: Slack User Token (xoxp-둜 μ‹œμž‘) - 검색, νŒŒμΌμ—…λ‘œλ“œμš©
SLACK_USER_TOKEN=xoxp-your-user-token-here

# 선택: κΈ°λ³Έ 채널 ID (ν…ŒμŠ€νŠΈμš©)
SLACK_TEST_CHANNEL_ID=C08UZKK9Q4R

# 선택: 둜그 레벨
LOG_LEVEL=INFO

3. Slack App μ„€μ •

ν•„μš”ν•œ Bot Token Scopes:

channels:read        # 채널 λͺ©λ‘ 쑰회
channels:history     # 채널 λ©”μ‹œμ§€ νžˆμŠ€ν† λ¦¬ 쑰회
chat:write          # λ©”μ‹œμ§€ 전솑
im:read             # DM 채널 읽기
im:write            # DM λ©”μ‹œμ§€ 전솑
im:history          # DM νžˆμŠ€ν† λ¦¬ 쑰회
users:read          # μ‚¬μš©μž 정보 쑰회
reactions:write     # λ°˜μ‘ μΆ”κ°€

μΆ”κ°€ User Token Scopes (선택 κΈ°λŠ₯용):

search:read         # λ©”μ‹œμ§€ 검색
files:write         # 파일 μ—…λ‘œλ“œ

4. μ„œλ²„ μ‹€ν–‰

# MCP μ„œλ²„ μ‹€ν–‰
python slack_mcp_server.py

# λ˜λŠ” 직접 μ‹€ν–‰
uv run slack_mcp_server.py

πŸ’‘ μ‚¬μš©λ²• 및 μ˜ˆμ‹œ

κΈ°λ³Έ λ©”μ‹œμ§€ 전솑

# Claude/LLM이 도ꡬ 호좜 μ‹œ
send_slack_message(
    channel="C08UZKK9Q4R", 
    text="μ•ˆλ…•ν•˜μ„Έμš”! MCPμ—μ„œ λ³΄λ‚΄λŠ” λ©”μ‹œμ§€μž…λ‹ˆλ‹€! πŸš€"
)

파일 μ—…λ‘œλ“œ (슀마트 처리)

# λ‹€μ–‘ν•œ 크기의 νŒŒμΌμ„ μžλ™μœΌλ‘œ 졜적 λ°©μ‹μœΌλ‘œ μ—…λ‘œλ“œ
upload_file_to_slack(
    file_path="./report.pdf",
    channels="C08UZKK9Q4R",
    title="뢄석 λ³΄κ³ μ„œ",
    comment="μ›”κ°„ 데이터 뢄석 κ²°κ³Όμž…λ‹ˆλ‹€."
)

λ½€λͺ¨λ„λ‘œ 타이머 μ‚¬μš©

# μˆ˜μ—… 타이머 μ‹œμž‘ (50λΆ„)
start_pomodoro_timer(
    timer_type="study",
    channel_id="C08UZKK9Q4R",
    duration_minutes=50,
    custom_name="파이썬 κ³ κΈ‰ 문법 ν•™μŠ΅"
)

# ν™œμ„± 타이머 확인
list_active_timers()

# 타이머 μ·¨μ†Œ
cancel_pomodoro_timer("study_20250602_143022_123456")

λ©”μ‹œμ§€ 검색 (User Token ν•„μš”)

# μ›Œν¬μŠ€νŽ˜μ΄μŠ€ μ „μ²΄μ—μ„œ λ©”μ‹œμ§€ 검색
search_slack_messages(
    query="MCP μ„œλ²„",
    count=10,
    sort="timestamp"
)

πŸ—οΈ ν”„λ‘œμ νŠΈ ꡬ쑰

slack-mcp/
β”œβ”€β”€ .env                     # ν™˜κ²½ λ³€μˆ˜ (Git μ œμ™Έ)
β”œβ”€β”€ .env.example            # ν™˜κ²½ λ³€μˆ˜ ν…œν”Œλ¦Ώ
β”œβ”€β”€ .gitignore              # Git λ¬΄μ‹œ 파일
β”œβ”€β”€ README.md               # 이 파일
β”œβ”€β”€ requirements.txt        # μ˜μ‘΄μ„± λͺ©λ‘
β”œβ”€β”€ pyproject.toml         # ν”„λ‘œμ νŠΈ μ„€μ •
β”œβ”€β”€ slack_api_client.py    # Slack API ν΄λΌμ΄μ–ΈνŠΈ (핡심 λͺ¨λ“ˆ)
β”œβ”€β”€ pomodoro_timer.py      # λ½€λͺ¨λ„λ‘œ 타이머 λͺ¨λ“ˆ
└── slack_mcp_server.py    # FastMCP μ„œλ²„ 메인

πŸ”§ 기술적 κ΅¬ν˜„ 세뢀사항

이쀑 토큰 μ‹œμŠ€ν…œ

  • Bot Token (xoxb-): 일반적인 봇 κΈ°λŠ₯ (λ©”μ‹œμ§€ 전솑, 채널 쑰회 λ“±)
  • User Token (xoxp-): μ‚¬μš©μž κΆŒν•œ ν•„μš”ν•œ κΈ°λŠ₯ (검색, λŒ€μš©λŸ‰ 파일 μ—…λ‘œλ“œ)

슀마트 파일 μ—…λ‘œλ“œ μ „λž΅

  1. μž‘μ€ ν…μŠ€νŠΈ 파일 (< 50KB): λ©”μ‹œμ§€ λ‚΄μš©μœΌλ‘œ 직접 전솑
  2. 쀑간 파일 (50KB - 1MB): μ½”λ“œ μŠ€λ‹ˆνŽ«μœΌλ‘œ μ—…λ‘œλ“œ
  3. 일반 파일 (1MB - 100MB): ν‘œμ€€ 파일 μ—…λ‘œλ“œ
  4. λŒ€μš©λŸ‰ 파일 (100MB - 1GB): User Token으둜 μ—…λ‘œλ“œ
  5. μ΄ˆλŒ€μš©λŸ‰ 파일 (> 1GB): 파일 μ •λ³΄λ§Œ 곡유

비동기 처리 및 λ™μ‹œμ„±

  • asyncio 기반 μ™„μ „ 비동기 κ΅¬ν˜„
  • λ½€λͺ¨λ„λ‘œ νƒ€μ΄λ¨Έμ˜ 병렬 μ‹€ν–‰ 지원
  • 락(Lock)을 ν†΅ν•œ ν΄λΌμ΄μ–ΈνŠΈ μ΄ˆκΈ°ν™” μ•ˆμ „μ„± 보μž₯

UTF-8 ν•œκΈ€ 지원

headers = {
    'Content-Type': 'application/json; charset=utf-8'
}

πŸ› 개발 κ³Όμ •μ—μ„œ κ²ͺ은 어렀움과 ν•΄κ²° 방법

1. ν•¨μˆ˜λ“€ κ°„μ˜ Input λ³€μˆ˜λͺ… 톡일 어렀움

문제: API ν•¨μˆ˜λ§ˆλ‹€ λ§€κ°œλ³€μˆ˜ 이름이 λ‹¬λΌμ„œ 일관성 λΆ€μ‘±

  • channel vs channel_id vs channels
  • text vs message vs content

ν•΄κ²°μ±…:

  • Slack API 곡식 λ¬Έμ„œ κΈ°μ€€μœΌλ‘œ λ³€μˆ˜λͺ… 톡일(ν–₯ν›„ μ—…λ°μ΄νŠΈ μ˜ˆμ •)
  • λ‚΄λΆ€ ν•¨μˆ˜μ—μ„œλŠ” μΌκ΄€λœ 넀이밍 μ»¨λ²€μ…˜ 적용
  • docstring에 λͺ…ν™•ν•œ λ§€κ°œλ³€μˆ˜ μ„€λͺ… μΆ”κ°€
async def send_message(
    self, 
    channel: str,      # κ°€λŠ₯ν•œ 뢀뢄듀은 channel 둜 톡일 μ˜ˆμ •
    text: str,         # 톡일: text
    thread_ts: Optional[str] = None
) -> Dict[str, Any]:

2. Input-Output λ³€μˆ˜λͺ… μ°ΎκΈ° 어렀움

문제: Slack API μ‘λ‹΅μ˜ λ³΅μž‘ν•œ 쀑첩 ꡬ쑰둜 ν•„μš”ν•œ 데이터 μΆ”μΆœ 어렀움

ν•΄κ²°μ±…:

  • API 응닡을 둜그둜 좜λ ₯ν•˜μ—¬ ꡬ쑰 νŒŒμ•…
  • 곡톡 데이터 μΆ”μΆœ ν•¨μˆ˜ μž‘μ„±
  • 응닡 데이터 μ •κ·œν™” 및 ν¬λ§·νŒ…
# 응닡 데이터 μ •κ·œν™” μ˜ˆμ‹œ
formatted_messages.append({
    'text': msg.get('text', ''),
    'user': msg.get('user', 'Unknown'),
    'timestamp': readable_time,
    'ts': msg.get('ts', ''),
    # ... ν•„μš”ν•œ ν•„λ“œλ§Œ μΆ”μΆœ
})

3. Outdated file_upload ν•¨μˆ˜λ₯Ό μ΅œμ‹  λ²„μ „μœΌλ‘œ μ‚¬μš©ν•˜κΈ°κΉŒμ§€ λ§Žμ€ μ‹œν–‰μ°©μ˜€

문제: Slack의 파일 μ—…λ‘œλ“œ APIκ°€ μ—¬λŸ¬ 번 λ³€κ²½λ˜μ–΄ κΈ°μ‘΄ 방식 deprecated

ν•΄κ²°μ±…:

  • files.upload (deprecated) β†’ files.getUploadURLExternal + files.completeUploadExternal
  • Slack SDK와 κΈ°μ‘΄ REST API의 ν•˜μ΄λΈŒλ¦¬λ“œ 접근법
  • 파일 크기별 λ‹€λ₯Έ μ—…λ‘œλ“œ μ „λž΅ κ΅¬ν˜„
# μƒˆλ‘œμš΄ 파일 μ—…λ‘œλ“œ ν”Œλ‘œμš°
# 1. μ—…λ‘œλ“œ URL μš”μ²­
upload_response = await self._make_request('files.getUploadURLExternal', 'POST', upload_data)

# 2. μ™ΈλΆ€ URL둜 파일 μ—…λ‘œλ“œ
async with self._session.put(upload_url, data=file_content) as response:
    # 파일 μ—…λ‘œλ“œ

# 3. μ—…λ‘œλ“œ μ™„λ£Œ 처리
complete_response = await self._make_request('files.completeUploadExternal', 'POST', complete_data)

4. User Token이 ν•„μš”ν•œ 경우 vs Bot Token만으둜 ν•΄κ²°λ˜λŠ” 경우

문제: μ–΄λ–€ κΈ°λŠ₯에 μ–΄λ–€ 토큰이 ν•„μš”ν•œμ§€ νŒŒμ•…ν•˜κΈ° 어렀움

ν•΄κ²°μ±…:

  • κΈ°λŠ₯별 토큰 μš”κ΅¬μ‚¬ν•­ λͺ…ν™•νžˆ λΆ„λ₯˜
  • 이쀑 토큰 μ‹œμŠ€ν…œμœΌλ‘œ μžλ™ 선택
  • 토큰 λΆ€μ‘± μ‹œ λͺ…ν™•ν•œ μ•ˆλ‚΄ λ©”μ‹œμ§€
# Bot Token으둜 κ°€λŠ₯ν•œ κΈ°λŠ₯
- λ©”μ‹œμ§€ 전솑 (chat.postMessage)
- 채널 λͺ©λ‘ (conversations.list)
- μ‚¬μš©μž λͺ©λ‘ (users.list)
- 파일 μ—…λ‘œλ“œ (< 100MB)

# User Token이 ν•„μš”ν•œ κΈ°λŠ₯  
- λ©”μ‹œμ§€ 검색 (search.messages)
- λŒ€μš©λŸ‰ 파일 μ—…λ‘œλ“œ (> 100MB)

5. GET vs POST의 차이

문제: μ–Έμ œ GET을 μ“°κ³  μ–Έμ œ POSTλ₯Ό 써야 ν•˜λŠ”μ§€ ν˜Όλž€

ν•΄κ²°μ±…:

  • Slack API λ¬Έμ„œμ˜ HTTP λ©”μ†Œλ“œ μ •ν™•νžˆ 확인
  • 데이터 μ‘°νšŒλŠ” GET, 데이터 생성/μˆ˜μ •μ€ POST
  • ν†΅μΌλœ _make_request ν•¨μˆ˜λ‘œ 처리
# GET: 데이터 쑰회
await self._make_request('conversations.list', 'GET', params)
await self._make_request('users.list', 'GET', params)

# POST: 데이터 생성/μˆ˜μ •
await self._make_request('chat.postMessage', 'POST', data)
await self._make_request('files.getUploadURLExternal', 'POST', data)

6. 기타 ν•΄κ²°ν•œ μ΄μŠˆλ“€

  • Rate Limiting: μ§€μˆ˜ λ°±μ˜€ν”„μ™€ μž¬μ‹œλ„ 둜직
  • Error Handling: 각 μ—λŸ¬ μ½”λ“œλ³„ λ§žμΆ€ν˜• ν•΄κ²° μ œμ•ˆ
  • UTF-8 Encoding: ν•œκΈ€ λ©”μ‹œμ§€ μ™„λ²½ 지원
  • Async Safety: λ½€λͺ¨λ„λ‘œ νƒ€μ΄λ¨Έμ˜ λ™μ‹œ μ‹€ν–‰ 처리

πŸ“Š μ„±λŠ₯ 및 μ œν•œμ‚¬ν•­

파일 μ—…λ‘œλ“œ μ œν•œ

  • 무료 ν”Œλžœ: μ΅œλŒ€ 5GB μ›Œν¬μŠ€νŽ˜μ΄μŠ€ μŠ€ν† λ¦¬μ§€
  • κ°œλ³„ 파일: μ΅œλŒ€ 1GB (유료 ν”Œλžœμ—μ„œ)
  • Bot Token: μ΅œλŒ€ 100MB 파일 μ—…λ‘œλ“œ
  • User Token: μ΅œλŒ€ 1GB 파일 μ—…λ‘œλ“œ

API Rate Limits

  • Tier 1 λ©”μ†Œλ“œ: 1+ per minute
  • Tier 2 λ©”μ†Œλ“œ: 20+ per minute
  • Tier 3 λ©”μ†Œλ“œ: 50+ per minute
  • Tier 4 λ©”μ†Œλ“œ: 100+ per minute

πŸ” ν…ŒμŠ€νŠΈ 방법

1. μ—°κ²° ν…ŒμŠ€νŠΈ

# μ„œλ²„ μ‹€ν–‰ ν›„ Claudeμ—μ„œ ν…ŒμŠ€νŠΈ
test_slack_connection()

2. κΈ°λ³Έ κΈ°λŠ₯ ν…ŒμŠ€νŠΈ

# 채널 λͺ©λ‘ 쑰회
get_slack_channels()

# λ©”μ‹œμ§€ 전솑 ν…ŒμŠ€νŠΈ  
send_slack_message("C08UZKK9Q4R", "ν…ŒμŠ€νŠΈ λ©”μ‹œμ§€μž…λ‹ˆλ‹€! πŸŽ‰")

3. κ³ κΈ‰ κΈ°λŠ₯ ν…ŒμŠ€νŠΈ

# 파일 μ—…λ‘œλ“œ ν…ŒμŠ€νŠΈ
upload_file_to_slack("./test.txt", title="ν…ŒμŠ€νŠΈ 파일")

# λ½€λͺ¨λ„λ‘œ 타이머 ν…ŒμŠ€νŠΈ
start_pomodoro_timer("work", duration_minutes=25, custom_name="ν…ŒμŠ€νŠΈ μž‘μ—…")

🀝 κΈ°μ—¬ 방법

  1. 이슈 제보: GitHub Issues μ‚¬μš©
  2. κΈ°λŠ₯ μ œμ•ˆ: Feature Request ν…œν”Œλ¦Ώ μ‚¬μš©
  3. μ½”λ“œ κΈ°μ—¬: Pull Request ν™˜μ˜
  4. λ¬Έμ„œ κ°œμ„ : README 및 docstring κ°œμ„ 

πŸ“„ λΌμ΄μ„ μŠ€

이 ν”„λ‘œμ νŠΈλŠ” MIT λΌμ΄μ„ μŠ€λ₯Ό λ”°λ¦…λ‹ˆλ‹€.

πŸ™‹β€β™‚οΈ 문의 및 지원

  • 개발자: JunHyuck Kwon
  • 버전: 8.5.2 (Complete Implementation)
  • μ΅œμ’… μ—…λ°μ΄νŠΈ: 2025-06-04

과제 완성도: βœ… ν•„μˆ˜ 4개 + βœ… 선택 4개 + βœ… λ³΄λ„ˆμŠ€ 4개 + βœ… μœ ν‹Έλ¦¬ν‹° 4개 = 총 16개 κΈ°λŠ₯ μ™„μ „ κ΅¬ν˜„

이 ν”„λ‘œμ νŠΈλ₯Ό 톡해 μ‹€μ œ μ—…λ¬΄μ—μ„œ ν™œμš©ν•  수 μžˆλŠ” κ³ ν’ˆμ§ˆ Slack 연동 도ꡬλ₯Ό ꡬ좕할 수 μžˆμŠ΅λ‹ˆλ‹€! πŸš€

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
E2B

E2B

Using MCP to run code via e2b.

Official
Featured