使用说明
Slack MCP服务器
只读 模型上下文协议(MCP) 用于访问Slack工作区数据的服务器。该服务器使Claude等AI助手能够从Slack工作区读取频道、消息、线程和用户信息。
特性
| 工具 | 描述 | 需要授权 |
|---|---|---|
list_channels |
列出所有可访问的公共频道,并分页 | 机器人或用户 |
get_channel_history |
从特定通道检索消息历史记录 | 机器人或用户 |
get_thread_replies |
获取消息线程中的所有回复(包括父线程) | 机器人或用户 |
list_users |
列出所有分页的工作区用户 | 机器人或用户 |
get_user_profile |
获取特定用户的详细个人资料信息 | 机器人或用户 |
search_messages |
跨所有渠道搜索邮件 | 仅限用户 |
refresh_credentials |
手动触发凭据刷新 | 仅限用户 |
所有读取工具都支持基于光标的分页。这 refresh_credentials 该工具支持用户令牌身份验证的自动凭据管理。
安装
先决条件
- Node.js 20+
- pnpm(或npm/yarn)
- 具有适当访问权限的Slack工作区
设置
# Clone the repository
git clone https://github.com/your-username/slack-mcp-server.git
cd slack-mcp-server
# Install dependencies
pnpm install
# Build the project
pnpm run build
认证
服务器支持两种身份验证方法:
选项1:机器人令牌(推荐)
在大多数用例中使用标准的Slack Bot用户OAuth令牌。
- 创建Slack应用程序 api.slack.com/apps
- 在下面添加以下Bot令牌范围 OAuth和权限:
channels:read-列出公共频道channels:history-读取频道消息users:read-列出工作区用户users.profile:read-读取用户配置文件
- 将应用程序安装到您的工作区
- 复制 Bot用户OAuth令牌 (开始于
xoxb-)
export SLACK_BOT_TOKEN=xoxb-your-token-here
选项2:用户令牌(非官方-搜索所需)
使用用户令牌启用 search_messages 工具。此方法使用浏览器会话凭据。
警告: 此身份验证方法使用从浏览器中提取的非官方会话凭据。它可能违反Slack的服务条款。会话令牌过期,需要手动重新提取。使用风险由您自行承担,仅适用于您有适当授权的工作区。
- 在浏览器中打开Slack工作区
- 打开开发人员工具(F12)→ 应用→ Cookie
- 查找并复制
dcookie值(以开头xoxd-) - 在“网络”选项卡中,找到任何API请求并从“授权”标头中复制令牌(以
xoxc-)
export SLACK_USER_TOKEN=xoxc-your-token-here
export SLACK_COOKIE_D=xoxd-your-cookie-here
注: 如果同时配置了bot令牌和用户令牌,则bot令牌优先。
令牌自动刷新(仅限用户令牌)
用户令牌会定期过期。服务器可以自动刷新凭据以保持不间断的访问。
自动刷新所需:
export SLACK_USER_TOKEN=xoxc-your-token-here
export SLACK_COOKIE_D=xoxd-your-cookie-here
export SLACK_WORKSPACE=your-workspace-name # e.g., "mycompany" from mycompany.slack.com
可选配置:
# Credential storage location (default: ~/.slack-mcp-server/credentials.json)
export SLACK_CREDENTIALS_PATH=/custom/path/credentials.json
# Refresh interval in days (default: 7)
export SLACK_REFRESH_INTERVAL_DAYS=7
# Enable/disable auto-refresh (default: true)
export SLACK_REFRESH_ENABLED=true
它是如何工作的:
- 启动时,凭据从存储(如果可用)加载或从环境变量保存
- 每小时,系统都会根据配置的间隔检查刷新是否到期
- 到期时,xoxc令牌和d cookie都会通过向您的工作区发出请求进行刷新
- 新凭据将以安全权限持久化到凭据文件中(0600)
- 如果刷新失败,则以指数回退的方式重试(最多3次尝试)
- 您还可以使用以下命令手动触发刷新
refresh_credentials工具
用法
运行服务器
# With bot token
SLACK_BOT_TOKEN=xoxb-... pnpm start
# With user token (enables search)
SLACK_USER_TOKEN=xoxc-... SLACK_COOKIE_D=xoxd-... pnpm start
Claude代码配置
将此MCP服务器添加到克劳德代码中:
# With bot token
claude mcp add slack -- node /absolute/path/to/slack-mcp-server/build/index.js \
-e SLACK_BOT_TOKEN=xoxb-your-token-here
# With user token (enables search)
claude mcp add slack -- node /absolute/path/to/slack-mcp-server/build/index.js \
-e SLACK_USER_TOKEN=xoxc-your-token-here \
-e SLACK_COOKIE_D=xoxd-your-cookie-here
要验证服务器是否已配置:
claude mcp list
工具参考
list_channels
列出工作区中所有可访问的公共频道。
参数:
limit(可选):返回的最大通道数(1-1000,默认值:100)cursor(可选):来自上一个响应的分页光标exclude_archived(可选):排除已存档的频道(默认值:true)
get_channel_历史
从特定频道检索消息历史记录。
参数:
channel_id(必填):通道ID(例如C1234567890)limit(可选):要返回的最大消息数(1-1000,默认值:50)cursor(可选):分页光标oldest(可选):仅此时间戳之后的消息latest(可选):仅此时间戳之前的消息
get_thread_replys
检索消息线程中的所有回复。
参数:
channel_id(必填):包含线程的通道IDthread_ts(必填):父消息的时间戳limit(可选):返回的最大回复数(1-1000,默认值:50)cursor(可选):分页光标
list_users
列出工作区中的所有用户。
参数:
limit(可选):可返回的最大用户数(1-1000,默认值:200)cursor(可选):分页光标
get_user_profile
获取特定用户的详细个人资料信息。
参数:
user_id(必填):用户ID(例如,U1234567890)
搜索消息
在所有可访问的渠道中搜索消息。 需要用户令牌身份验证。
参数:
query(必填):搜索查询(支持Slack修饰符:from:,in:,before:,after:)sort(可选):排序方式score或timestamp(默认值:分数)sort_dir(可选):排序方向asc或desc(默认值:desc)count(可选):每页结果(1-100,默认值:20)page(可选):页码(默认:1)
刷新凭证
手动触发Slack用户凭据的刷新。 需要用户令牌身份验证 SLACK_WORKSPACE 已配置。
参数: 无
退货:
- 关于成功:
{ success: true, message, refreshedAt, totalRefreshes } - 失败时:
{ success: false, error: { code, message, retryable } }
错误代码:
REFRESH_NOT_AVAILABLE-未配置Bot令牌身份验证或工作区REFRESH_IN_PROGRESS-另一个刷新已在运行SESSION_REVOKED-凭据无效,需要手动重新验证NETWORK_ERROR-连接问题(可重试)
免责声明
该项目不隶属于Slack Technologies,LLC。
用户令牌身份验证是非官方的,可能不符合Slack的服务条款。建议使用Bot令牌身份验证。