Slack智能搜索服务器

一个基于fastMCP构建的Slack集成服务器,提供AI驱动的自然语言搜索功能,适用于团队协作和消息管理。

  • by jianrongzhang89
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 jianrongzhang89/slack-mcp-server

使用说明

Slack MCP服务器

使用fastMCP构建的专用模型上下文协议(MCP)服务器,提供智能Slack与人工智能驱动的自然语言搜索功能的集成。

特性

Slack集成工具

  • slack_list_channels:列出所有可访问的Slack频道
  • slack_get_channel_消息:从特定频道获取最新消息
  • slack_search_消息:跨渠道搜索消息(使用回退实现)
  • slack_smart_search: 🧠 基于人工智能的自然语言搜索,具有智能查询理解功能
  • slack_get_user_info:获取Slack用户的信息
  • slack_send_message:向Slack频道发送消息

开发工具

  • ping测试:连接测试工具(仅限开发服务器)

资源

  • slack://channels:将所有可访问的Slack频道作为资源列出
  • slack://status:将Slack连接状态作为资源进行检查

安装

此项目使用 紫外线 用于依赖性管理。

  1. 克隆存储库:

    git clone <your-repo-url>
    cd slack-mcp-server
    
  2. 安装依赖项:

    uv sync
    
  3. 安装MCP CLI工具(用于开发):

    uv add "mcp[cli]"
    
  4. 安装MCP检查器(用于测试):

    npm install -g @modelcontextprotocol/inspector
    
  5. 设置环境变量:

    # Required for Slack integration
    export SLACK_BOT_TOKEN=xoxb-your-slack-bot-token-here
    export SLACK_APP_TOKEN=xapp-your-slack-app-token-here
    
    # Optional for enhanced AI features
    export OPENAI_API_KEY=your-openai-api-key-here
    

用法

生产服务器

使用fastMCP运行生产服务器:

uv run python main.py

带MCP检查器的开发服务器

对于开发和测试,请使用开发服务器(main_dev.py)与MCP检查员:

快速设置(推荐)

使用提供的设置脚本进行自动配置:

# Run the setup script (creates wrapper and starts inspector)
./setup_inspector.sh

此脚本将:

  • 在中创建包装器脚本 ~/bin/mcp-server-everything
  • 自动启动MCP检查器
  • 提供用于连接的检查器URL

手动设置

如果您更喜欢手动设置:

  1. 设置环境变量:

    export SLACK_BOT_TOKEN=xoxb-your-token-here
    export SLACK_APP_TOKEN=xapp-your-app-token-here
    export OPENAI_API_KEY=your-openai-key-here  # Optional
    
  2. 启动开发服务器:

    uv run python main_dev.py
    
  3. 在单独的终端中,启动MCP检查器:

    npx @modelcontextprotocol/inspector
    
  4. 连接到服务器:

    • 使用检查器提供的URL(包括会话令牌)
    • 对于当地发展,通常: http://localhost:3000

连接到服务器

服务器实现MCP协议,可以通过任何兼容MCP的客户端连接。服务器将处理:

  • 工具发现和执行
  • 资源访问
  • 正确的错误处理和响应

例子

通过MCP客户端连接后,您可以使用Slack工具:

  • 基本松弛操作 (需要SLACK_BOT_TOKEN):

    • 列出频道: slack_list_channels()
    • 获取消息: slack_get_channel_messages("C1234567890", limit=20)
    • 搜索邮件: slack_search_messages("deployment", channel_id="C1234567890")
    • 获取用户信息: slack_get_user_info("U1234567890")
    • 发送消息: slack_send_message("C1234567890", "Hello from MCP!")
  • 🧠 AI驱动的智能搜索 (通过OPENAI_API_KEY增强):

    • 自然语言搜索: slack_smart_search("Show me discussions about deployment from last week")
    • 以用户为中心的搜索: slack_smart_search("What did John say about the API changes?")
    • 主题分析: slack_smart_search("Find decisions made about the mobile app")
    • 情感搜索: slack_smart_search("Show me concerns people raised about performance")

资源

  • slack://channels:将所有可访问的Slack频道作为资源列出
  • slack://status:将Slack连接状态作为资源进行检查

Slack集成设置

第一步:创建Slack Bot

  1. 首选 https://api.slack.com/apps

  2. 点击“创建新应用”→ “从头开始”

  3. 为您的应用命名并选择工作区

  4. 转到侧栏中的“OAuth和权限”

  5. 添加以下内容 Bot令牌范围:

    • channels:read (列出频道)
    • channels:history (读取频道消息)
    • groups:read (列出私人频道)
    • groups:history (阅读私人频道消息)
    • chat:write (发送消息)
    • users:read (获取用户信息)
    • app_mentions:read (接受提及)
    • im:history (阅读直接消息)
    • mpim:history (阅读群组私信)

    备注: search:read 范围可能不适用于所有应用程序。该服务器包含一个回退搜索实现,可以在没有此作用域的情况下工作。

步骤2:安装Bot

  1. 点击“安装到工作区”并授权应用程序
  2. 复制“Bot用户OAuth令牌”(以开头 xoxb-)
  3. 设置环境变量:
    export SLACK_BOT_TOKEN=xoxb-your-token-here
    

步骤3:邀请Bot加入频道

邀请您的机器人加入您希望它访问的频道:

/invite @your-bot-name

步骤4:测试集成

启动服务器,Slack工具将可用。服务器将显示启动时是否启用了Slack集成。

AI功能

智能搜索功能有两种模式:

增强模式(使用OpenAI API密钥)

  • 高级自然语言查询理解
  • 智能结果汇总
  • 更好地处理同义词和上下文
  • 智能提取时间、用户和内容过滤器

回退模式(无OpenAI API密钥)

  • 基于语义相似性的基本关键字搜索
  • 基于规则的时间/用户过滤器查询解析
  • 简单的结果计数

要启用增强模式,请设置OpenAI API密钥:

export OPENAI_API_KEY=your-openai-api-key-here

安全

  • 所有Slack工具都会验证输入并优雅地处理异常
  • Slack集成需要使用适当的作用域设置适当的OAuth令牌
  • Slack API调用是有费率限制的,包括全面的错误处理
  • AI搜索功能尊重Slack权限和频道访问
  • 机器人令牌通过环境变量进行安全管理
  • 不存储或记录敏感数据

发展

要扩展此以Slack为中心的服务器,请执行以下操作:

  1. 使用添加新的Slack工具 @mcp.tool() 装饰器
  2. 使用添加新的Slack资源 @mcp.resource() 装饰器
  3. 增强AI搜索功能 ai_search.py
  4. 确保正确的错误处理和类型提示
  5. 使用MCP客户端或MCP检查器进行测试

贡献

  1. 分叉存储库
  2. 创建要素分支
  3. 进行更改
  4. 使用真实的Slack数据进行彻底测试
  5. 提交拉取请求

许可证

MIT许可证