使用说明
slack-mcp服务器
免责声明
该项目包括 代码 最初由Anthropic开发,并在MIT许可证下发布。For Good AI股份有限公司(dba Zencoder股份有限公司)添加了大量修改和新功能,并根据Apache许可证2.0版获得许可。
概述
用于与Slack工作区交互的模型上下文协议(MCP)服务器。此服务器提供列出频道、发布消息、回复线程、添加反应、获取频道历史记录和管理用户的工具。
可用工具
-
slack_list_channels
- 列出工作区中的公共或预定义频道
- 可选输入:
limit(数字,默认值:100,最大值:200):要返回的最大通道数cursor(string):下一页的分页光标
- 返回:通道列表及其ID和信息
-
slack_post_message
- 在Slack频道发布新消息
- 所需输入:
channel_id(string):要发布的频道的IDtext(string):要发布的消息文本
- 返回:消息发布确认和时间戳
-
slack_reply_to_tothread
- 回复特定消息线程
- 所需输入:
channel_id(string):包含线程的通道thread_ts(string):父消息的时间戳text(string):回复文本
- 返回:回复确认和时间戳
-
slack_add_action
- 在消息中添加表情符号反应
- 所需输入:
channel_id(string):包含消息的通道timestamp(string):要响应的消息时间戳reaction(字符串):不带冒号的表情符号名称
- 返回:反应确认
-
slack_get_channel_历史
- 从频道获取最新消息
- 所需输入:
channel_id(string):通道ID
- 可选输入:
limit(数字,默认值:10):要检索的邮件数
- 返回:消息及其内容和元数据的列表
-
slack_get_thread_replys
- 获取消息线程中的所有回复
- 所需输入:
channel_id(string):包含线程的通道thread_ts(string):父消息的时间戳
- 返回:回复列表及其内容和元数据
-
slack_get_users
- 获取包含基本配置文件信息的工作区用户列表
- 可选输入:
cursor(string):下一页的分页光标limit(数字,默认值:100,最大值:200):可返回的最大用户数
- 返回:用户及其基本配置文件的列表
-
slack_get_user_profile
- 获取特定用户的详细个人资料信息
- 所需输入:
user_id(string):用户的ID
- 返回:详细的用户配置文件信息
Slack机器人设置
要使用此MCP服务器,您需要创建一个Slack应用程序,并为其配置必要的权限:
1.创建Slack应用程序
- 访问 Slack应用程序页面
- 点击“创建新应用”
- 选择“从头开始”
- 命名您的应用程序并选择您的工作区
2.配置Bot令牌作用域
导航到“OAuth和权限”并添加以下范围:
channels:history-查看公共频道中的消息和其他内容channels:read-查看基本频道信息chat:write-以应用程序的身份发送消息reactions:write-在消息中添加表情符号反应users:read-查看用户及其基本信息users.profile:read-查看用户的详细资料
3.将应用程序安装到工作区
- 点击“安装到工作区”并授权应用程序
- 保存以开头的“Bot用户OAuth令牌”
xoxb-
4.获取您的团队ID
获取您的团队ID(以 T)通过以下方式 本指南
5.将机器人添加到频道(可选)
为了让机器人访问私人频道或发布消息,您可能需要使用以下方式邀请它访问特定频道 /invite @your-bot-name
特性
- 多种运输支持:支持stdio和流式HTTP传输
- 现代MCP SDK:更新为使用最新的MCP SDK(v1.13.2)和现代API
- 全面的Slack集成:全套Slack操作,包括:
- 列出频道(具有预定义的频道支持)
- 发布消息
- 回复帖子
- 添加反应
- 获取频道历史记录
- 获取线程回复
- 列出用户
- 获取用户资料
安装
本地开发
npm install
npm run build
全球安装(NPM)
npm install -g @zencoderai/slack-mcp-server
Docker安装
# Build the Docker image locally
docker build -t slack-mcp-server .
# Or pull from Docker Hub
docker pull zencoderai/slack-mcp:latest
# Or pull a specific version
docker pull zencoderai/slack-mcp:1.0.0
配置
设置以下环境变量:
export SLACK_BOT_TOKEN="xoxb-your-bot-token"
export SLACK_TEAM_ID="your-team-id"
export SLACK_CHANNEL_IDS="channel1,channel2,channel3" # Optional: predefined channels
export AUTH_TOKEN="your-auth-token" # Optional: Bearer token for HTTP authorization (Streamable HTTP transport only)
用法
命令行选项
slack-mcp [options]
Options:
--transport <type> Transport type: 'stdio' or 'http' (default: stdio)
--port <number> Port for HTTP server when using Streamable HTTP transport (default: 3000)
--token <token> Bearer token for HTTP authorization (optional, can also use AUTH_TOKEN env var)
--help, -h Show this help message
本地使用示例
使用slack-mcp命令(全局安装后)
# Use stdio transport (default)
slack-mcp
# Use stdio transport explicitly
slack-mcp --transport stdio
# Use Streamable HTTP transport on default port 3000
slack-mcp --transport http
# Use Streamable HTTP transport on custom port
slack-mcp --transport http --port 8080
# Use Streamable HTTP transport with custom auth token
slack-mcp --transport http --token mytoken
# Use Streamable HTTP transport with auth token from environment variable
AUTH_TOKEN=mytoken slack-mcp --transport http
直接使用节点(用于开发)
# Use stdio transport (default)
node dist/index.js
# Use stdio transport explicitly
node dist/index.js --transport stdio
# Use Streamable HTTP transport on default port 3000
node dist/index.js --transport http
# Use Streamable HTTP transport on custom port
node dist/index.js --transport http --port 8080
# Use Streamable HTTP transport with custom auth token
node dist/index.js --transport http --token mytoken
# Use Streamable HTTP transport with auth token from environment variable
AUTH_TOKEN=mytoken node dist/index.js --transport http
Docker使用示例
直接使用Docker
# Run with stdio transport (default)
docker run --rm \
-e SLACK_BOT_TOKEN="xoxb-your-bot-token" \
-e SLACK_TEAM_ID="your-team-id" \
zencoderai/slack-mcp:latest
# Run with HTTP transport on port 3000
docker run --rm -p 3000:3000 \
-e SLACK_BOT_TOKEN="xoxb-your-bot-token" \
-e SLACK_TEAM_ID="your-team-id" \
zencoderai/slack-mcp:latest --transport http
# Run with HTTP transport on custom port
docker run --rm -p 8080:8080 \
-e SLACK_BOT_TOKEN="xoxb-your-bot-token" \
-e SLACK_TEAM_ID="your-team-id" \
zencoderai/slack-mcp:latest --transport http --port 8080
# Run with custom auth token
docker run --rm -p 3000:3000 \
-e SLACK_BOT_TOKEN="xoxb-your-bot-token" \
-e SLACK_TEAM_ID="your-team-id" \
-e AUTH_TOKEN="mytoken" \
zencoderai/slack-mcp:latest --transport http
使用Docker Compose
创建一个 docker-compose.yml 文件:
version: '3.8'
services:
slack-mcp:
# Use published image:
image: zencoderai/slack-mcp:latest
# Or build locally:
# build: .
environment:
- SLACK_BOT_TOKEN=xoxb-your-bot-token
- SLACK_TEAM_ID=your-team-id
- SLACK_CHANNEL_IDS=channel1,channel2,channel3 # Optional
- AUTH_TOKEN=your-auth-token # Optional for HTTP transport
ports:
- "3000:3000" # Only needed for HTTP transport
command: ["--transport", "http"] # Optional: specify transport type
restart: unless-stopped
然后运行:
# Start the service
docker compose up -d
# View logs
docker compose logs -f slack-mcp
# Stop the service
docker compose down
运输类型
标准运输
- 用例:命令行工具和直接集成
- 沟通:标准输入/输出流
- 默认:是的
可流式HTTP传输
- 用例:远程服务器和基于web的集成
- 沟通:带有可选服务器发送事件流的HTTP POST请求
- 特性:
- 会话管理
- 双向通信
- 可恢复连接
- RESTful API端点
- 承载令牌身份验证
身份验证(仅限流式HTTP传输)
使用Streamable HTTP传输时,服务器支持承载令牌身份验证:
- 命令行:使用
--token <token>指定自定义令牌 - 环境变量:设置
AUTH_TOKEN=<token>作为退路 - 自动生成:如果两者都没有提供,则生成随机令牌
命令行选项优先于环境变量。使用以下命令在HTTP请求中包含令牌 Authorization: Bearer <token> 头球
故障排除
如果遇到权限错误,请验证:
- 所有必需的范围都已添加到您的Slack应用程序中
- 应用程序已正确安装到您的工作区
- 令牌和工作区ID已正确复制到您的配置中
- 该应用程序已添加到它需要访问的频道中
发展
构建
npm run build
观看模式
npm run watch
API端点(可流式HTTP传输)
使用Streamable HTTP传输时,服务器会公开以下端点:
POST /mcp-客户端到服务器通信GET /mcp-服务器到客户端通知(服务器发送的事件流)DELETE /mcp-会话终止
与以前版本的更改
- 更新MCP SDK:从v1.0.1升级到v1.13.2
- 现代API:从低级服务器类迁移到高级McpServer类
- Zod验证:使用Zod添加了正确的模式验证
- 运输灵活性:添加了对流式HTTP传输的支持
- 命令行界面:添加了用于传输选择的CLI参数
- 会话管理:为HTTP传输实现了正确的会话处理
- 更好的错误处理:改进了错误处理和日志记录