Slack MCP服务器
AgentLedger平台集成 版本: 1.0.0
概述
Slack MCP服务器使AI代理能够通过标准化的模型上下文协议(MCP)工具与Slack工作区进行交互。此服务器提供读取消息、发布更新、管理线程和发现通道的访问权限,同时遵循AgentLedger平台安全和身份验证标准。
用真实的Slack数据验证-所有核心功能都经过测试并正常工作! ✅
身份验证模式
✅ OAuth(直接访问令牌)
此服务器直接使用Slack的OAuth令牌。该平台处理OAuth流和令牌管理——服务器只需接收和使用访问令牌。
令牌格式
accessToken: "xoxb-..." // Bot token (recommended)所需松弛范围
您的Slack应用程序需要以下OAuth作用域:
核心功能所需:
channels:history-查看公共频道中的消息groups:history-查看私人频道中的消息im:history-查看直接消息中的消息mpim:history-查看群直接消息中的消息channels:read-查看基本频道信息groups:read-查看基本私人频道信息users:read-查看用户信息chat:write-在频道和对话中发布消息
可用工具
1.对话_历史
说明: 从支持分页的Slack频道、DM或线程中检索消息历史记录
✅ 经过测试并使用真实的Slack数据!
参数:
accessToken(字符串,必填):Slack OAuth令牌(xoxb-…)channel_id(字符串,必填):频道ID(例如C1234567890)、频道名称(#general)或DM(@username)limit(string | number,可选):时间范围(1d、7d、1m、90d)或消息计数(例如100)cursor(字符串,可选):来自上一个响应的分页光标include_activity_messages(布尔值,可选):包括加入/离开系统消息(默认值:false)
例子:
{
"accessToken": "xoxb-...",
"channel_id": "#testing",
"limit": 10
}答复:
{
"success": true,
"data": {
"messages": [
{
"type": "message",
"user": "U1234567890",
"text": "Hello world!",
"ts": "1234567890.123456"
}
],
"has_more": false,
"cursor": "",
"channel_id": "C1234567890"
}
}______________________________________________________________________
2.对话回复
说明: 按通道和线程时间戳获取特定线程中的所有消息
✅ 经过测试并使用真实线程!
参数:
accessToken(字符串,必填):Slack OAuth令牌channel_id(字符串,必填):通道ID、名称(#general)或DM(@username)thread_ts(字符串,必填):消息时间戳格式为1234567890.123456limit(string | number,可选):时间范围或消息计数cursor(字符串,可选):分页光标include_activity_messages(布尔值,可选):包括系统消息(默认值:false)
例子:
{
"accessToken": "xoxb-...",
"channel_id": "#testing",
"thread_ts": "1234567890.123456",
"limit": 50
}答复:
{
"success": true,
"data": {
"messages": [
{
"type": "message",
"user": "U1234567890",
"text": "Thread parent message",
"ts": "1234567890.123456",
"thread_ts": "1234567890.123456"
},
{
"type": "message",
"user": "U9876543210",
"text": "Thread reply",
"ts": "1234567890.234567",
"thread_ts": "1234567890.123456"
}
],
"has_more": false,
"channel_id": "C1234567890",
"thread_ts": "1234567890.123456"
}
}______________________________________________________________________
3.对话_添加_消息
说明: 将消息发布到频道、线程或DM。支持markdown和纯文本格式。
✅ 通道和线程都经过测试和工作!
⚠️ 安全注意事项: 这个工具是 默认禁用。要启用,请设置 SLACK_MCP_ADD_MESSAGE_TOOL 环境变量为:
*-为所有频道启用C1234567890,C9876543210-为特定通道ID启用(逗号分隔)
参数:
accessToken(字符串,必填):带聊天功能的Slack OAuth令牌:写入作用域channel_id(字符串,必填):目标通道ID、名称(#general)或DM(@username)thread_ts(string,可选):线程时间戳;省略直接发布到频道payload(字符串,必填):要发布的消息内容content_type(字符串,可选):“text/markdown”(默认)或“text/plain”
示例-发布到频道:
{
"accessToken": "xoxb-...",
"channel_id": "#general",
"payload": "Hello from AI agent! 👋",
"content_type": "text/markdown"
}示例-帖子到线程:
{
"accessToken": "xoxb-...",
"channel_id": "#general",
"thread_ts": "1234567890.123456",
"payload": "Reply in thread"
}答复:
{
"success": true,
"data": {
"ok": true,
"channel": "C1234567890",
"ts": "1234567890.123456",
"message": {
"text": "Hello from AI agent! 👋",
"type": "message"
}
}
}______________________________________________________________________
4.频道列表
说明: 按类型(公共、私人、DM、组DM)列出工作区频道,并可选择流行度排序
✅ 经过测试并使用真实的工作空间数据!
参数:
accessToken(字符串,必填):Slack OAuth令牌channel_types(字符串,必填):逗号分隔值:mpim,im,public_channel,private_channelsort(字符串,可选):“流行度”按成员数排序limit(数字,可选):结果数量(最大值:999,默认值:100)cursor(字符串,可选):分页光标
例子:
{
"accessToken": "xoxb-...",
"channel_types": "public_channel,private_channel",
"sort": "popularity",
"limit": 50
}答复:
{
"success": true,
"data": {
"channels": [
{
"id": "C1234567890",
"name": "general",
"topic": "Company-wide announcements",
"purpose": "This channel is for team-wide communication",
"member_count": 150,
"is_private": false,
"is_channel": true,
"is_im": false,
"is_mpim": false
}
],
"has_more": false
}
}______________________________________________________________________
安装
# Install dependencies
npm install
# Build the TypeScript project
npm run build
# Run the server
npm start测试
# Run all tests
npm test
# Run integration tests (requires valid Slack token)
npm run test:integration平台集成说明
环境变量
SLACK_MCP_ADD_MESSAGE_TOOL-控制消息发布功能:
- 未设置(默认):邮件发布已禁用 - *:为所有通道启用 - C123...,C456...:为特定通道ID启用
错误处理
服务器为常见的Slack API错误提供特定的错误消息:
channel_not_found→ “使用提供的ID找不到频道”invalid_auth→ “无效或过期的身份验证凭据”not_in_channel→ “Bot不是此频道的成员”missing_scope→ “令牌缺少必需的Slack权限/范围”rate_limited→ “费率受Slack API限制-请稍后再试”
速率限制
Slack API有费率限制。服务器可以很好地处理速率限制错误,但请考虑在代理代码中实现重试逻辑。
通道ID分辨率
服务器会自动解析:
- 频道名称:
#general→C1234567890 - DM用户名:
@username→ 打开/查找DM并返回通道ID - 直接ID:
C1234567890→ 按原样使用
技术规格
- Node.js版本: ≥18.0.0
- 依赖项:
- @slack/web-api -Slack Web API官方客户端 - @modelcontextprotocol/sdk -MCP协议实现 - zod -架构验证
- 语言:TypeScript(ES2022)
- 运输:标准(MCP标准)
已知限制
- 机器人频道成员资格: 在阅读消息之前,必须将Bot添加到频道中(使用
/invite @bot-name在Slack中) - 信息发布安全: 默认情况下禁用-需要显式的环境变量配置
- 费率限制: Slack对API调用强制执行速率限制-实现生产使用的重试逻辑
真实世界测试结果
此服务器已使用实际的Slack工作区数据进行了测试:
验证能力:
- ✅ 阅读来自真实渠道的5+条消息
- ✅ 成功读取2条消息线程
- ✅ 向频道发布消息(现场测试)
- ✅ 发布线程回复(实时测试)
- ✅ 列出了12个真实的工作空间频道
- ✅ 按受欢迎程度对频道进行排序(614→143→23名成员。..)
- ✅ 所有错误处理都经过真实错误测试
- ✅ 所有操作在300ms以下的性能
什么有效:
- 4/4工具与真正的Slack API一起充分发挥功能✅
- 所有核心读写能力均已验证✅
- 渠道发现和管理工作✅
看 REAL_TEST_RESULTS.md 获取完整的测试文档。
平台配置建议
对于AgentLedger集成:
- OAuth设置:使用上面列出的所需范围配置您的Slack OAuth应用程序
- 令牌存储:将令牌安全地存储在平台的凭据管理系统中
- 速率限制:实现平台级速率限制和重试逻辑
- 错误监视:监视身份验证和权限错误
- 审计日志:记录所有邮件发布操作以符合要求
______________________________________________________________________
为AgentLedger平台构建 遵循MCP服务器构建指南v1.0.0 真实世界测试和验证 ✅
