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
Qiye Wechat MCP
Enables AI assistants to send messages to Enterprise WeChat (Qiye Wechat) groups via webhooks.
MCP-Typebot
Integrates Typebot's REST API as callable tools, allowing interaction with Typebot forms and chats.
RocketMQ
A server for interacting with Apache RocketMQ, a distributed messaging and streaming platform, requiring environment variables for configuration.
MCP Notification Server
Sends periodic notifications every 10 seconds.
Apple Notifier
Send native macOS notifications and interact with system dialogs.
RetellAI
Interact with RetellAI's voice services to create conversational voice AI.
Gmail
Query live Gmail data using LLMs via CData's read-only MCP server.
Aligo SMS
Send SMS messages using the Aligo SMS API.
Discord MCP
An MCP server for the Discord API, enabling seamless integration of Discord bots with MCP-compatible applications.
Gmail
An MCP server for Gmail, allowing AI assistants to manage emails through natural language.