使用说明
Slack MCP服务器(Python)
用于Slack工作区的强大MCP服务器-支持DM、Group DM、智能历史获取,并通过OAuth或浏览器令牌工作。
这是对原始Go语言的Python/FastMCP重写 slack-mcp服务器.
特性
- 8工具:对话历史、对话回复、对话添加消息、对话搜索消息、频道列表、频道创建、频道邀请用户、频道移除用户
- 2资源:slack://{workspace}/通道,slack://{workspace}/users
- 认证:用于大多数操作的Bot OAuth令牌(xoxb),用于搜索的用户OAuth令牌(xoxp)
- 智能缓存:用户和频道在本地缓存以实现快速查找
- csv输出:所有响应均为CSV格式,便于解析
安装
使用uvx(建议用于Claude Code)
uvx --from git+https://github.com/korotovsky/slack-mcp-server/python_version slack-mcp-server \
--bot-token xoxb-your-bot-token
使用pip
pip install git+https://github.com/korotovsky/slack-mcp-server.git#subdirectory=python_version
发展
cd python_version
pip install -e ".[dev]"
pre-commit install
Claude代码配置
添加到您的Claude Code MCP设置中:
使用Bot Token(建议用于大多数操作):
{
"slack-mcp": {
"type": "stdio",
"command": "uvx",
"args": [
"--from",
"git+https://github.com/korotovsky/slack-mcp-server/python_version",
"slack-mcp-server",
"--bot-token",
"xoxb-your-bot-token-here"
]
}
}
使用Bot和用户令牌(用于搜索功能):
{
"slack-mcp": {
"type": "stdio",
"command": "uvx",
"args": [
"--from",
"git+https://github.com/korotovsky/slack-mcp-server/python_version",
"slack-mcp-server",
"--bot-token",
"xoxb-your-bot-token-here",
"--user-token",
"xoxp-your-user-token-here"
]
}
}
或者使用浏览器令牌:
{
"slack-mcp": {
"type": "stdio",
"command": "uvx",
"args": [
"--from",
"git+https://github.com/korotovsky/slack-mcp-server/python_version",
"slack-mcp-server",
"--xoxc-token",
"xoxc-your-token",
"--xoxd-token",
"xoxd-your-cookie"
]
}
}
认证
服务器支持两种类型的OAuth令牌,每种令牌都有不同的用途:
机器人令牌(xoxb)-必填
Bot OAuth令牌用于大多数操作,是服务器运行所必需的。
令牌格式: xoxb-...
所需范围:
channels:manage-创建公共频道groups:write-创建私人频道,邀请/删除用户channels:read-阅读公共频道信息groups:read-读取私人频道信息channels:history-读取公共频道消息历史记录groups:history-读取私人频道消息历史记录im:history-读取DM历史记录mpim:history-读取组DM历史记录users:read-读取用户信息chat:write-发布消息
如何获得Bot令牌:
- 在以下位置创建Slack应用程序https://api.slack.com/apps
- 导航到“OAuth和权限”
- 添加上面列出的所需机器人令牌范围
- 将应用程序安装到您的工作区
- 复制“Bot用户OAuth令牌”(以开头
xoxb-)
用户令牌(xoxp)-可选
用户OAuth令牌仅用于搜索操作。Bot令牌不能与 search.messages API
令牌格式: xoxp-...
所需范围:
search:read-搜索邮件(必填)conversations_search_messages)
如何获取用户令牌:
- 在Slack应用程序设置中,导航到“OAuth和权限”
- 添加
search:read用户令牌范围 - 将应用程序重新安装到您的工作区
- 复制“用户OAuth令牌”(以开头
xoxp-)
注: 如果你不需要搜索功能,你可以省略用户令牌。
浏览器令牌(xoxc/xoxd)-替代方案
从浏览器中提取“隐身模式”:
- 在浏览器中打开Slack,打开DevTools
- 找到
xoxc-本地存储或网络请求中的令牌 - 找到
d=xoxd-...在饼干中
环境变量
| 变量 | 描述 |
|---|---|
SLACK_MCP_BOT_TOKEN |
Bot OAuth令牌(xoxb-…)-大多数操作都需要 |
SLACK_MCP_USER_TOKEN |
用户OAuth令牌(xoxp-…)-可选,用于搜索操作 |
SLACK_MCP_XOXC_TOKEN |
浏览器令牌(替代身份验证) |
SLACK_MCP_XOXD_TOKEN |
浏览器cookie(替代身份验证) |
SLACK_MCP_ADD_MESSAGE_TOOL |
启用发布: true, 1,或频道列表 |
SLACK_MCP_ADD_MESSAGE_MARK |
发布后标记为已读 |
SLACK_MCP_ADD_MESSAGE_UNFURLING |
链接展开: yes 或域列表 |
SLACK_MCP_CHANNEL_MANAGEMENT |
启用渠道管理工具: true, 1,或 yes |
SLACK_MCP_USERS_CACHE |
自定义用户缓存路径 |
SLACK_MCP_CHANNELS_CACHE |
自定义通道缓存路径 |
SLACK_MCP_LOG_LEVEL |
日志级别(调试/信息/警告/错误) |
工具
对话_历史
从频道或DM获取消息。
channel_id: Channel ID (Cxxxxxxxxxx) or name (#general, @username)
include_activity_messages: Include join/leave messages (default: false)
cursor: Pagination cursor
limit: '1d', '1w', '30d', '90d' or number like '50'
对话回复
获取线程回复。
channel_id: Channel ID or name
thread_ts: Thread timestamp (1234567890.123456)
include_activity_messages: Include activity messages
cursor: Pagination cursor
limit: Time range or number
对话_添加_消息
发布消息(默认情况下禁用,将SLACK_MCP_ADD_message_TOOL设置为启用)。
channel_id: Channel ID or name
payload: Message text
thread_ts: Optional thread to reply to
content_type: 'text/markdown' or 'text/plain'
对话_搜索_消息
使用过滤器搜索邮件。
search_query: Search text or Slack message URL
filter_in_channel: Filter by channel
filter_in_im_or_mpim: Filter by DM
filter_users_with: Filter threads with user
filter_users_from: Filter messages from user
filter_date_before/after/on/during: Date filters
filter_threads_only: Only thread messages
cursor: Pagination cursor
limit: Max results (1-100)
频道列表
获取频道列表。
channel_types: Comma-separated: 'mpim', 'im', 'public_channel', 'private_channel'
sort: 'popularity' to sort by member count
limit: Max results (1-999)
cursor: Pagination cursor
channels_create
创建新的Slack频道(需要 SLACK_MCP_CHANNEL_MANAGEMENT=true).
参数:
name: Channel name (lowercase, numbers, hyphens, underscores; max 80 chars)
is_private: Create as private channel (default: false)
description: Channel description/purpose
使用示例:
# Create a public channel
channels_create(name="project-alpha", description="Main project discussion")
# Create a private channel for team leads
channels_create(name="team-leads", is_private=true, description="Leadership discussions")
重要行为:
创意创作: 此工具创建的所有频道都标有 [managed by slack-mcp] 在他们的目标领域。如果你打电话 channels_create 名称已存在:
- 如果通道是由此MCP实例创建的(具有标记),它将返回现有通道
- 如果通道存在但不是由此MCP创建的,则返回错误
这可确保安全、幂等的通道创建,同时防止意外修改不受此工具管理的现有通道。
所需范围:
- 公共渠道:
channels:managebot令牌范围 - 私人渠道:
groups:writebot令牌范围
channels_invite_users
邀请用户加入Slack频道(需要 SLACK_MCP_CHANNEL_MANAGEMENT=true).
参数:
channel_id: Channel ID or name (e.g., C1234567890 or #project-alpha)
user_ids: Comma-separated user IDs or @mentions (e.g., 'U123,U456' or '@alice,@bob')
使用示例:
# Invite users by @mention
channels_invite_users(channel_id="#project-alpha", user_ids="@alice,@bob")
# Invite users by ID
channels_invite_users(channel_id="C1234567890", user_ids="U123456,U789012")
# Mix of @mentions and IDs
channels_invite_users(channel_id="#project-alpha", user_ids="@alice,U789012")
重要行为:
- 已在通道中的用户会被自动跳过(幂等行为)
- 为方便起见,同时支持用户ID(U…)和@提及
- 需要
groups:writebot令牌范围
channels_remove_user
从Slack频道中删除用户(需要 SLACK_MCP_CHANNEL_MANAGEMENT=true).
参数:
channel_id: Channel ID or name (e.g., C1234567890 or #project-alpha)
user_id: User ID or @mention to remove (e.g., 'U123' or '@alice')
使用示例:
# Remove user by @mention
channels_remove_user(channel_id="#project-alpha", user_id="@alice")
# Remove user by ID
channels_remove_user(channel_id="C1234567890", user_id="U123456")
重要行为:
- 删除不在频道中的用户将返回
not_in_channel状态(不是错误) - 为方便起见,同时支持用户ID(U…)和@提及
- 需要
groups:writebot令牌范围
资源
slack://{workspace}/channels-所有通道的CSV目录slack://{workspace}/users-所有用户的CSV目录
发展
# Install dev dependencies
pip install -e ".[dev]"
# Install pre-commit hooks
pre-commit install
# Run linting
ruff check .
ruff format .
许可证
麻省理工学院