Slack MCP Server
A Slack integration server that allows natural language interaction with the Slack API within the Cursor IDE.
π Slack MCP Server
FastMCPλ₯Ό μ¬μ©ν μμ ν Slack ν΅ν© MCP μλ²μ λλ€. Cursor IDEμμ Slack APIμ λͺ¨λ κΈ°λ₯μ μμ°μ΄λ‘ μ¬μ©ν μ μκ² ν΄μ€λλ€.
π λͺ©μ°¨
- νΉμ§
- μꡬμ¬ν
- λΉ λ₯Έ μ€μΉ
- μλ μ€μΉ
- μ¬μ©λ²
- μ¬μ© κ°λ₯ν λꡬ
- νλ‘μ νΈ κ΅¬μ‘°
- κ°λ°μ κ°μ΄λ
- λ¬Έμ ν΄κ²°
- λΌμ΄μ μ€
β¨ νΉμ§
νμ κΈ°λ₯ (κ³Όμ μꡬμ¬ν)
- β λ©μμ§ μ μ‘: μ±λμ λ©μμ§ μ μ‘
- β μ±λ λͺ©λ‘ μ‘°ν: μ κ·Ό κ°λ₯ν λͺ¨λ μ±λ μ‘°ν
- β μ±λ νμ€ν 리 μ‘°ν: μ§μ λ μ±λμ λ©μμ§ νμ€ν 리
- β λ€μ΄λ νΈ λ©μμ§: 1:1 λ©μμ§ μ μ‘
μΆκ° κΈ°λ₯
- β μ¬μ©μ λͺ©λ‘ μ‘°ν: μν¬μ€νμ΄μ€ μ¬μ©μ μ 보
- β λ°μ μΆκ°: λ©μμ§μ μ΄λͺ¨μ§ λ°μ μΆκ°
- β λ©μμ§ κ²μ: ν€μλ κΈ°λ° λ©μμ§ κ²μ
- β μ°κ²° ν μ€νΈ: API μ°κ²° μν νμΈ
κΈ°μ μ νΉμ§
- π FastMCP κΈ°λ°: μ΅μ MCP νλ μμν¬ μ¬μ©
- β‘ λΉλκΈ° μ²λ¦¬: aiohttpλ₯Ό μ΄μ©ν κ³ μ±λ₯ API νΈμΆ
- π‘οΈ μμ ν μλ¬ μ²λ¦¬: μμΈν μ€λ₯ λ©μμ§μ 볡ꡬ κ°λ₯ν μμΈ μ²λ¦¬
- π νμ ννΈ: μμ ν νμ μμ μ±
- π§ͺ ν¬κ΄μ ν μ€νΈ: μλνλ ν μ€νΈ μ€μνΈ
- π λ‘κΉ : ꡬ쑰νλ λ‘κΉ μμ€ν
- π§ μλ μ€μΉ: μν΄λ¦ μ€μΉ μ€ν¬λ¦½νΈ
π μꡬμ¬ν
- Python 3.8+
- pip (ν¨ν€μ§ κ΄λ¦¬μ)
- Cursor IDE (MCP ν΄λΌμ΄μΈνΈ)
- Slack Bot Token (xoxb-λ‘ μμ)
Slack Bot κΆν
Slack μ±μ λ€μ κΆνμ΄ νμν©λλ€:
Bot Token Scopes:
- channels:history # μ±λ λ©μμ§ μ½κΈ°
- channels:read # μ±λ μ 보 μ‘°ν
- chat:write # λ©μμ§ μ μ‘
- groups:history # λΉκ³΅κ° κ·Έλ£Ή λ©μμ§ μ½κΈ°
- groups:read # λΉκ³΅κ° κ·Έλ£Ή μ 보 μ‘°ν
- im:history # DM λ©μμ§ μ½κΈ°
- im:read # DM μ 보 μ‘°ν
- im:write # DM μ μ‘
- mpim:history # λ©ν°νν° DM λ©μμ§ μ½κΈ°
- mpim:read # λ©ν°νν° DM μ 보 μ‘°ν
- mpim:write # λ©ν°νν° DM μ μ‘
- reactions:write # λ°μ μΆκ°
- search:read # λ©μμ§ κ²μ
- users:read # μ¬μ©μ μ 보 μ‘°ν
π λΉ λ₯Έ μ€μΉ
1. μλ μ€μΉ (κΆμ₯)
cd slack-mcp
python install.py
μ€μΉ μ€ν¬λ¦½νΈκ° λ€μμ μλμΌλ‘ μ²λ¦¬ν©λλ€:
- ν¨ν€μ§ μ€μΉ
- νκ²½ λ³μ μ€μ
- Cursor MCP μ€μ μ λ°μ΄νΈ
- μ€μΉ ν μ€νΈ μ€ν
2. Cursor μ¬μμ
μ€μΉ μλ£ ν Cursorλ₯Ό μ¬μμνλ©΄ Slack MCP λꡬλ₯Ό μ¬μ©ν μ μμ΅λλ€.
π§ μλ μ€μΉ
1. μ μ₯μ ν΄λ‘
git clone <repository-url>
cd slack-mcp
2. ν¨ν€μ§ μ€μΉ
pip install -r requirements.txt
3. νκ²½ λ³μ μ€μ
.env
νμΌ μμ±:
# Slack Bot Token (xoxb-λ‘ μμνλ ν ν°)
SLACK_BOT_TOKEN=xoxb-your-bot-token-here
# μ νμ : λ‘κ·Έ λ 벨 μ€μ
LOG_LEVEL=INFO
4. Cursor MCP μ€μ
~/.cursor/mcp.json
νμΌμ λ€μ μΆκ°:
{
"mcpServers": {
"slack": {
"command": "python",
"args": ["/path/to/slack-mcp/slack_mcp_server.py"],
"env": {
"SLACK_BOT_TOKEN": "xoxb-your-bot-token-here"
}
}
}
}
5. ν μ€νΈ μ€ν
python test_slack_mcp.py
π μ¬μ©λ²
Cursorμμ μ μ±ν μ μμνκ³ λ€μκ³Ό κ°μ΄ μμ°μ΄λ‘ Slack κΈ°λ₯μ μ¬μ©ν μ μμ΅λλ€:
λ©μμ§ μ μ‘
#general μ±λμ "μλ
νμΈμ!"λΌλ λ©μμ§λ₯Ό 보λ΄μ£ΌμΈμ
μ±λ μ 보 μ‘°ν
μ¬μ© κ°λ₯ν Slack μ±λ λͺ©λ‘μ 보μ¬μ£ΌμΈμ
λ©μμ§ νμ€ν 리
#general μ±λμ μ΅κ·Ό λ©μμ§ 10κ°λ₯Ό κ°μ Έμμ£ΌμΈμ
λ€μ΄λ νΈ λ©μμ§
μ¬μ©μ U1234567890μκ² "νμ μ€λΉ μλ£"λΌλ DMμ 보λ΄μ£ΌμΈμ
λ©μμ§ κ²μ
"νλ‘μ νΈ"λΌλ ν€μλκ° ν¬ν¨λ λ©μμ§λ₯Ό κ²μν΄μ£ΌμΈμ
π οΈ μ¬μ© κ°λ₯ν λꡬ
λꡬ | μ€λͺ | νλΌλ―Έν° |
---|---|---|
send_slack_message | μ±λμ λ©μμ§ μ μ‘ | channel , text |
get_slack_channels | μ±λ λͺ©λ‘ μ‘°ν | μμ |
get_slack_channel_history | μ±λ νμ€ν 리 μ‘°ν | channel_id , limit |
send_slack_direct_message | λ€μ΄λ νΈ λ©μμ§ μ μ‘ | user_id , text |
get_slack_users | μ¬μ©μ λͺ©λ‘ μ‘°ν | μμ |
add_slack_reaction | λ©μμ§μ λ°μ μΆκ° | channel , timestamp , name |
search_slack_messages | λ©μμ§ κ²μ | query , count |
test_slack_connection | μ°κ²° ν μ€νΈ | μμ |
π νλ‘μ νΈ κ΅¬μ‘°
slack-mcp/
βββ π README.md # μ΄ νμΌ
βββ π requirements.txt # Python ν¨ν€μ§ μμ‘΄μ±
βββ π slack_api.py # Slack API ν΄λΌμ΄μΈνΈ
βββ π slack_mcp_server.py # FastMCP μλ² κ΅¬ν
βββ π test_slack_mcp.py # ν
μ€νΈ μ€ν¬λ¦½νΈ
βββ π install.py # μλ μ€μΉ μ€ν¬λ¦½νΈ
βββ π mcp_config.json # MCP μ€μ ν
νλ¦Ώ
βββ π env_example.txt # νκ²½ λ³μ ν
νλ¦Ώ
βββ π .gitignore # Git 무μ νμΌ
π¨βπ» κ°λ°μ κ°μ΄λ
κ°λ° νκ²½ μ€μ
# κ°λ° λͺ¨λλ‘ ν¨ν€μ§ μ€μΉ
pip install -r requirements.txt
# νκ²½ λ³μ μ€μ
cp env_example.txt .env
# .env νμΌμ νΈμ§νμ¬ μ€μ ν ν° μ
λ ₯
# ν
μ€νΈ μ€ν
python test_slack_mcp.py
μλ‘μ΄ λꡬ μΆκ°
slack_api.py
μ API λ©μλ μΆκ°slack_mcp_server.py
μ MCP λꡬ λ°μ½λ μ΄ν° μΆκ°test_slack_mcp.py
μ ν μ€νΈ μΌμ΄μ€ μΆκ°
λ‘κΉ
μλ²λ λ€μ μμΉμ λ‘κ·Έλ₯Ό κΈ°λ‘ν©λλ€:
- μ½μ μΆλ ₯: μ€μκ° λ‘κ·Έ νμΈ
- νμΌ λ‘κ·Έ:
slack_mcp.log
λλ²κΉ
# μμΈ λ‘κ·Έμ ν¨κ» ν
μ€νΈ μ€ν
LOG_LEVEL=DEBUG python test_slack_mcp.py
# μλ² μ§μ μ€ν (λλ²κΉ
μ©)
python slack_mcp_server.py
π λ¬Έμ ν΄κ²°
μμ£Ό λ°μνλ λ¬Έμ
1. "SLACK_BOT_TOKEN νκ²½ λ³μκ° μ€μ λμ§ μμμ΅λλ€"
ν΄κ²°μ± :
.env
νμΌμ μ¬λ°λ₯Έ ν ν°μ΄ μλμ§ νμΈ- ν ν°μ΄
xoxb-
λ‘ μμνλμ§ νμΈ
2. "invalid_auth" μλ¬
ν΄κ²°μ± :
- Slack Bot Tokenμ΄ μ ν¨νμ§ νμΈ
- ν ν°μ΄ μ¬λ°λ₯Έ μν¬μ€νμ΄μ€μ©μΈμ§ νμΈ
- νμν κΆνμ΄ λͺ¨λ λΆμ¬λμλμ§ νμΈ
3. "channel_not_found" μλ¬
ν΄κ²°μ± :
- μ±λ IDκ° μ¬λ°λ₯Έμ§ νμΈ
- λ΄μ΄ ν΄λΉ μ±λμ μΆκ°λμλμ§ νμΈ
- κ³΅κ° μ±λμΈμ§ λλ λ΄μ΄ μ΄λλμλμ§ νμΈ
4. Cursorμμ MCP λκ΅¬κ° λ³΄μ΄μ§ μμ
ν΄κ²°μ± :
- Cursorλ₯Ό μμ ν μ¬μμ
~/.cursor/mcp.json
μ€μ νμΌ νμΈ- νμΌ κ²½λ‘κ° μ¬λ°λ₯Έμ§ νμΈ
λ‘κ·Έ νμΈ
# μλ² λ‘κ·Έ νμΈ
tail -f slack_mcp.log
# ν
μ€νΈ λ‘κ·Έμ ν¨κ» μ€ν
python test_slack_mcp.py 2>&1 | tee debug.log
μλ μ°κ²° ν μ€νΈ
# Pythonμμ μ§μ ν
μ€νΈ
python -c "
import asyncio
from slack_api import get_slack_client
import os
from dotenv import load_dotenv
load_dotenv()
token = os.getenv('SLACK_BOT_TOKEN')
client = get_slack_client(token)
async def test():
result = await client.test_connection()
print(result)
asyncio.run(test())
"
π κ³Όμ μꡬμ¬ν λλΉ νν©
μꡬμ¬ν | μν | ꡬν μμΉ |
---|---|---|
νμ κΈ°λ₯ | ||
λ©μμ§ μ μ‘ | β μλ£ | send_slack_message |
μ±λ λͺ©λ‘ μ‘°ν | β μλ£ | get_slack_channels |
μ±λ νμ€ν 리 μ‘°ν | β μλ£ | get_slack_channel_history |
λ€μ΄λ νΈ λ©μμ§ | β μλ£ | send_slack_direct_message |
μ ν κΈ°λ₯ | ||
μ¬μ©μ λͺ©λ‘ μ‘°ν | β μλ£ | get_slack_users |
λ°μ μΆκ° | β μλ£ | add_slack_reaction |
λ©μμ§ κ²μ | β μλ£ | search_slack_messages |
κΈ°μ μꡬμ¬ν | ||
FastMCP μ¬μ© | β μλ£ | slack_mcp_server.py |
μλ¬ μ²λ¦¬ | β μλ£ | λͺ¨λ λꡬμ try-catch |
νμ ννΈ | β μλ£ | λͺ¨λ ν¨μμ νμ ννΈ |
λ‘κΉ | β μλ£ | ꡬ쑰νλ λ‘κΉ μμ€ν |
ν μ€νΈ | β μλ£ | test_slack_mcp.py |
λ¬Έμν | β μλ£ | μ΄ README λ° μ½λ μ£Όμ |
π μΆκ° ꡬν μ¬ν
κ³Όμ μꡬμ¬νμ λμ΄μ λ€μ κΈ°λ₯λ€μ μΆκ°λ‘ ꡬννμ΅λλ€:
- π μλ μ€μΉ μμ€ν : μν΄λ¦ μ€μΉ μ€ν¬λ¦½νΈ
- π§ͺ ν¬κ΄μ ν μ€νΈ: λͺ¨λ κΈ°λ₯μ λν μλνλ ν μ€νΈ
- π μμΈν μλ΅ ν¬λ§·ν : ꡬ쑰νλ μ±κ³΅/μ€ν¨ μλ΅
- β‘ λΉλκΈ° HTTP ν΄λΌμ΄μΈνΈ: κ³ μ±λ₯ aiohttp μ¬μ©
- π‘οΈ μΈμ κ΄λ¦¬: HTTP μΈμ μ¬μ¬μ©μΌλ‘ μ±λ₯ μ΅μ ν
- π§ κ°λ°μ λꡬ: λλ²κΉ λ° λ¬Έμ ν΄κ²° λꡬ
- π μμ ν νλ‘μ νΈ κ΅¬μ‘°: μμ° μ€λΉ μλ£λ μ½λ ꡬ쑰
π λΌμ΄μ μ€
MIT License - μμΈν λ΄μ©μ LICENSE νμΌμ μ°Έμ‘°νμΈμ.
π μμνκΈ°
# 1. νλ‘μ νΈ ν΄λ‘
git clone <repository-url>
cd slack-mcp
# 2. μλ μ€μΉ μ€ν
python install.py
# 3. Cursor μ¬μμ
# μ΄μ Cursorμμ Slack MCP λꡬλ₯Ό μ¬μ©ν μ μμ΅λλ€!
λ¬Έμ κ° μμΌμλ©΄ Issuesμ λ³΄κ³ ν΄μ£ΌμΈμ.
Related Servers
MCP Meme Sticky
Create AI-generated memes and convert them into stickers for Telegram and WhatsApp.
Phone-a-Friend MCP Server
An AI-to-AI consultation system for complex problem-solving and reasoning, using OpenRouter for model access.
Zoom Transcript
An MCP server for interacting with transcripts from Zoom Cloud Recordings.
Lara Translate
Translate text with language detection, context-awareness, and translation memories using the Lara Translate API.
LINE Official Account
Integrates the LINE Messaging API to connect an AI Agent to the LINE Official Account.
Local Network Request MCP Server
Sends HTTP requests to endpoints on the local network.
AI Therapist
Provides emotional support and mental health tools for AI agents.
ELEMENT.FM
Create and publish unlimited podcast shows and episodes with ELEMENT.FM
MCP-Pushover Bridge
Enables AI assistants to send push notifications via the Pushover service.
Gmail MCP
Manage your Gmail account, including sending, reading, and organizing emails.