Slack模型上下文协议服务器

一个全面的模型上下文协议(MCP)服务器,使LLM能够与Slack工作区交互,提供搜索、阅读和管理Slack内容的工具,以及工作区信息和常见工作流程的提示资源。

  • by SergioKingOne
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 sergiokingone/slack-mcp-server

使用说明

Slack MCP服务器

一个全面的模型上下文协议(MCP)服务器,使LLM能够与Slack工作区进行交互。此服务器提供用于搜索、阅读和管理Slack内容的工具,以及用于工作区信息和常见工作流提示的资源。

特性

🛠️ 工具(11个可用)

  • 渠道管理
    • slack_list_channels -浏览公共和私人频道
    • slack_get_channel_info -获取详细的频道信息
    • slack_list_bookmarks -列出频道中的书签
  • 消息操作
    • slack_list_messages -从通道和线程读取消息
    • slack_list_threads -发现线程对话
    • slack_search_messages -在工作区中搜索
  • 用户管理
    • slack_get_user_info -获取详细的用户信息
    • slack_list_users -列出工作区用户
  • 内容与反应
    • slack_list_files -浏览共享文件
    • slack_add_reaction -添加表情符号反应
    • slack_remove_reaction -删除表情符号反应

📚 资源(4个可用)

  • slack://workspace -工作区信息
  • slack://me -当前机器人用户信息
  • slack://users -完整的用户目录
  • slack://channels -所有可访问的频道

💡 提示(5个可用)

  • find_recent_discussions -搜索关于特定主题的讨论
  • channel_activity_summary -总结渠道活动
  • team_member_activity -检查团队成员的参与情况
  • daily_standup_helper -收集站立信息
  • knowledge_search -查找机构知识

快速开始

1.创建Slack应用程序

  1. 首选 api.slack.com/apps 点击“创建新应用”
  2. 选择“从头开始”并为您的应用程序命名
  3. 选择要安装它的工作区

2.配置OAuth作用域

在您的应用程序设置中,转到“OAuth和权限”并添加这些Bot令牌范围:

基本范围:

  • channels:read -查看基本频道信息
  • channels:history -查看公共频道中的消息
  • groups:read -查看私人频道的基本信息
  • groups:history -查看私人频道中的消息
  • users:read -查看工作区中的人员
  • users:read.email -查看电子邮件地址
  • team:read -查看工作区信息

完整功能的附加范围:

  • im:read -查看直接消息
  • im:history -查看直接消息中的消息
  • mpim:read -查看群组直接消息
  • mpim:history -查看群直接消息中的消息
  • search:read -搜索邮件
  • files:read -查看文件
  • reactions:read -查看表情符号反应
  • reactions:write -添加和删除反应
  • bookmarks:read -查看书签

3.安装应用程序

  1. 在“OAuth和权限”中,单击“安装到工作区”
  2. 复制“Bot用户OAuth令牌”(以开头 xoxb-)

4.配置克劳德桌面

添加到您的Claude Desktop配置中:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
窗户: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "slack": {
      "command": "npx",
      "args": ["-y", "@sergdev1/slack-mcp-server"],
      "env": {
        "SLACK_BOT_TOKEN": "xoxb-your-bot-token",
        "SLACK_TEAM_ID": "T01234567"
      }
    }
  }
}

使用示例

使用工具

"Search for messages about the deployment"
"List all channels I have access to"
"Show me threads in #engineering from the last week"
"Get information about user U1234567890"
"Add a thumbsup reaction to message 1234567890.123456 in channel C1234567890"

使用资源

资源提供了对常用信息的快速访问:

"Check the workspace resource for company info"
"Look at the users resource to see all team members"
"Review the channels resource for a complete channel list"

使用提示

提示为常见任务提供指导工作流程:

"Use the find_recent_discussions prompt to search for budget talks"
"Run the channel_activity_summary for #general and #random"
"Execute daily_standup_helper for the #engineering channel"
"Use knowledge_search to find our deployment process"

API详细参考

工具

slack_list_channels

列出Slack工作区中的频道。

参数:

  • exclude_archived (布尔值,可选):排除已存档的频道(默认值:true)
  • types (字符串,可选):通道类型(默认:“public_Channel,private_Channel”)
  • limit (数字,可选):返回的最大通道数(默认值:100)
  • cursor (字符串,可选):分页光标

slack_search_消息

在工作区中搜索邮件。

参数:

  • query (字符串,必填):使用Slack修饰符搜索查询
  • count (数字,可选):每页结果(默认值:20)
  • page (数字,可选):页码(默认值:1)
  • highlight (布尔值,可选):突出显示匹配项(默认值:true)
  • sort (字符串,可选):按“分数”或“时间戳”排序(默认值:“分数”)
  • sort_dir (字符串,可选):排序方向为“asc”或“desc”(默认:“desc“)

搜索修改器:

  • from:@username -来自特定用户的消息
  • in:#channel -特定频道中的消息
  • after:2024-01-01 -日期后的消息
  • before:2024-12-31 -日期前的消息
  • has:link -带有链接的消息
  • has:file -带有文件的消息

slack_add_action/slack_remove_action

管理表情符号对消息的反应。

参数:

  • channel (字符串,必填):通道ID
  • timestamp (字符串,必填):消息时间戳
  • name (字符串,必需):不带冒号的表情符号名称(例如“thumbsup”)

资源

资源通过其URI访问并返回JSON数据:

  • slack://workspace:返回工作区ID、名称、域和企业信息
  • slack://me:返回机器人用户ID、名称和身份验证详细信息
  • slack://users:返回所有具有配置文件的活动用户
  • slack://channels:返回所有可访问的频道及其元数据

提示

每个提示符都接受参数,并为LLM返回一条结构化消息:

find_recent_discues

  • topic (字符串,必填):要搜索的主题
  • days (字符串,可选):回顾的天数(默认值:“7”)

渠道_活动_总结

  • channel_names (字符串,必填):逗号分隔的频道名称
  • hours (字符串,可选):要分析的小时数(默认值:“24”)

高级配置

环境变量

  • SLACK_BOT_TOKEN (必填):您的Slack机器人令牌
  • SLACK_TEAM_ID (可选):团队信息的工作区ID

安全最佳实践

  1. 令牌安全

    • 从不将令牌提交到版本控制
    • 对敏感数据使用环境变量
    • 定期旋转令牌
  2. 通道存取

    • 机器人必须被邀请到私人频道: /invite @your-bot-name
    • DM需要明确的用户权限
  3. 速率限制

    • 尊重Slack的费率限制
    • 实现重试的指数回退
    • 缓存频繁访问的数据

发展

项目结构

slack-mcp-server/
├── src/
│   ├── index.ts       # Main server entry point
│   ├── slack-client.ts # Slack API client wrapper
│   ├── tools.ts       # Tool implementations
│   ├── resources.ts   # Resource handlers
│   ├── prompts.ts     # Prompt definitions
│   └── types.ts       # TypeScript interfaces
├── package.json
├── tsconfig.json
└── README.md

从源头构建

# Clone the repository
git clone https://github.com/sergdev1/slack-mcp-server.git
cd slack-mcp-server

# Install dependencies
npm install

# Build the project
npm run build

# Run in development mode
npm run dev

测试

# Set your Slack token
export SLACK_BOT_TOKEN="xoxb-your-bot-token"
export SLACK_TEAM_ID="T01234567"  # Optional

# Run the server
npm test

# Use MCP Inspector for testing
npx @modelcontextprotocol/inspector

扩展服务器

要添加新工具,请执行以下操作:

  1. 在中定义架构 tools.ts
  2. 实现处理函数
  3. 注册 server.tool()

要添加新资源,请执行以下操作:

  1. 在中定义处理程序 resources.ts
  2. 注册 server.resource()

要添加新提示,请执行以下操作:

  1. 在中定义模板 prompts.ts
  2. 注册 server.prompt()

故障排除

常见问题

“channel_not_found”错误

  • 确保bot是频道的成员
  • 检查您使用的是频道ID而不是名称
  • 验证通道是否已存档

“missing_scope”错误

  • 将所需的OAuth作用域添加到您的应用程序中
  • 将应用程序重新安装到您的工作区
  • 某些范围需要管理员批准

未返回任何消息

  • 验证bot是否具有通道类型的历史范围
  • 检查时间范围参数
  • 确保通道有范围内的消息

搜索不起作用

  • 需要 search:read 范围
  • 搜索索引可能存在延迟
  • 检查查询语法是否有效

调试模式

通过设置启用调试日志记录:

DEBUG=slack-mcp-server npm run dev

贡献

欢迎投稿!拜托:

  1. 分叉存储库
  2. 创建要素分支(git checkout -b feature/amazing-feature)
  3. 提交您的更改(git commit -m 'Add amazing feature')
  4. 推到分支(git push origin feature/amazing-feature)
  5. 打开拉取请求

代码的风格

  • 使用TypeScript实现类型安全
  • 遵循现有的代码模式
  • 为公共API添加JSDoc注释
  • 包括新功能的测试

许可证

MIT许可证-有关详细信息,请参阅许可证文件

致谢

更新日志

v2.0.0版本

  • 新增8个工具(搜索、用户、文件、反应)
  • 添加了4个资源以快速访问数据
  • 添加了5个常见工作流提示
  • 改进了错误处理和验证
  • 更好的TypeScript类型
  • 模块化代码架构

v1.0.0

  • 初始版本
  • 基本通道、消息和线程工具

由以下材料制成❤️ 对于MCP社区