Slack消息搜索服务器

一个基于MCP协议实现的Slack消息搜索服务器,支持AI代理高效检索Slack工作区内的消息。

  • by paterapatera
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 paterapatera/slack-mcp

使用说明

Slack MCP服务器

Slack 在工作区中搜索消息MCP (Model Context Protocol) 服务器。AI 代理Slack 中描述的场景,使用以下步骤创建明细表,以便在概念设计中分析体量的体积。

概要

此项目包括:MCP 实施符合协议的服务器Slack Web API 对较大场景进行渲染期间已观察到该故障。Claude Desktop 或者其他MCP 可从客户端使用。

主要功能

  • ✅ MCP 遵守协议:标准MCP 服务器实施
  • ✅ Slack 邮件搜索:在工作区中查找消息
  • ✅ 频道滤波:搜索特定频道
  • ✅ 支持汇率限制: Slack API 合理的汇率限制
  • ✅ 错误处理:统一的错误处理策略
  • ✅ 记录:搜索请求统计信息和日志记录

前提条件

  • 包子 v1.2.21 以降
  • 已启用Slack User Token (xoxb- 或 xoxp- ),模板名称将采用不同的格式

Slack User Token 所需权限

具有以下权限Slack User Token 需要:

  • channels:history:显示用户公共频道中的消息和内容
  • channels:read:显示工作区中公共通道的基本信息
  • groups:history:显示用户专用通道中的消息和内容
  • groups:read:显示用户专用频道的基本信息
  • im:history:显示用户直接消息中的消息和内容
  • im:read:显示用户直接消息的基本信息
  • mpim:history:显示用户组直接消息中的消息和内容
  • mpim:read:显示用户组直接消息的基本信息
  • search:read:查找工作区内容

安装,安装

1.克隆存储库

git clone https://github.com/paterapatera/slack-mcp.git
cd slack-mcp

2.安装相关性

bun install

3.设置环境变量

必需的环境变量:

export SLACK_USER_TOKEN="xoxb-your-token-here"

可选环境变量:

export SLACK_TEAM_ID="T1234567890"  # チーム/ワークスペース ID
export SLACK_CHANNEL_IDS="C1234567890,C0987654321"  # 検索対象チャンネル(カンマ区切り)

4.构建

bun run build

构建后dist/index.js 将条目添加到文档注册表。

使用方法

bun link 安装

在本地开发环境中使用时bun link 使用:

# プロジェクトディレクトリで実行
bun link

# グローバルにリンクされた後、どこからでも実行可能
slack-mcp

指定环境变量时:

SLACK_USER_TOKEN="xoxb-your-token" slack-mcp

MCP 用作客户端

这个服务器MCP 客户端(例如:Claude Desktop, MCP Inspector)中所述修改相应参数的值。

Claude Desktop 中的设置

claude_desktop_config.json 添加:

bun link 中所述修改相应参数的值(推奨):

{
  "mcpServers": {
    "slack-mcp": {
      "command": "slack-mcp",
      "env": {
        "SLACK_USER_TOKEN": "xoxb-your-token-here",
        "SLACK_TEAM_ID": "T1234567890",
        "SLACK_CHANNEL_IDS": "C1234567890,C0987654321"
      }
    }
  }
}

bun link 中描述的相应参数的值slack-mcp 命令可用。

使用本地路径时:

{
  "mcpServers": {
    "slack-mcp": {
      "command": "bun",
      "args": ["/path/to/slack-mcp/dist/index.js"],
      "env": {
        "SLACK_USER_TOKEN": "xoxb-your-token-here",
        "SLACK_TEAM_ID": "T1234567890",
        "SLACK_CHANNEL_IDS": "C1234567890,C0987654321"
      }
    }
  }
}

直接実行

bun dist/index.js

但是,通常MCP 通过客户端使用。

测试

单元测试

bun test

共运行80个测试,包括:

  • 配置服务
  • Slack API客户端
  • 搜索服务
  • MCP 服务器
  • 日志服务
  • 集成测试

MCP Inspector 使用E2E 测试

MCP Inspector 单击功能区上的MCP_INSPECTOR_GUIDE.md 来修改标记元素的显示属性。

简单步骤:

# 1. 環境変数を設定
export SLACK_USER_TOKEN="xoxb-your-token-here"

# 2. ビルド
bun run build

# 3. MCP Inspector を起動
bun run inspector

或者,使用测试脚本:

./scripts/test-with-inspector.sh

了解更多信息 MCP_INSPECTOR_GUIDE.md 来修改标记元素的显示属性。

体系结构

主要组件

  • McpServer: MCP 协议实现和工具注册
  • SlackAPI客户端: Slack Web API 通信和速率限制处理
  • 搜索服务:消息搜索业务逻辑
  • 配置服务:加载和验证环境变量
  • 记录服务:管理日志记录和统计信息

项目结构

slack-mcp/
├── src/
│   ├── index.ts                 # エントリーポイント
│   └── services/
│       ├── mcp-server.ts        # MCP サーバー実装
│       ├── slack-api-client.ts  # Slack API クライアント
│       ├── search-service.ts     # 検索サービス
│       ├── config-service.ts    # 設定管理
│       ├── logging-service.ts   # ログ記録
│       └── __tests__/           # テストファイル
├── dist/                        # ビルド出力
├── scripts/                     # ユーティリティスクリプト
└── .kiro/                      # 仕様書と設計ドキュメント

工具

search_messages

Slack 在工作区中搜索消息。

参数:

  • query (string, 必需:搜索查询
  • limit (number, 可选:最大搜索结果数

返回值:

{
  "messages": [
    {
      "text": "メッセージのテキスト",
      "timestamp": "2024-01-01T00:00:00.000Z",
      "channelId": "C1234567890",
      "channelName": "general",
      "userId": "U1234567890",
      "userName": "username"
    }
  ],
  "total": 1,
  "hasMore": false
}

环境变数

变数名 必须 说明
SLACK_USER_TOKEN ✅ Slack用户令牌(xoxb- 或 xoxp- 开始于
SLACK_TEAM_ID ❌ 团队/工作区ID
SLACK_CHANNEL_IDS ❌ 搜索频道ID(逗号分隔)

故障排除

服务器未启动

  • 环境变数 SLACK_USER_TOKEN 确认是否正确设置
  • 标记有效的格式(xoxb- 或 xoxp- )或确认
  • dist/index.js 确认是否存在(bun run build 执行)

搜索失败

  • Slack API 验证标记是否有效
  • 标记所需的作用域(search:read),模板名称将采用不同的格式
  • 检查网络连接

MCP Inspector 发生错误

  • 日志stdout 查看项目中可用的所有族stderr ),模板名称将采用不同的格式
  • 了解更多信息 MCP_INSPECTOR_GUIDE.md 请参见故障排除部分

开発

开发环境设置

# 依存関係のインストール
bun install

# 開発モードでテストを実行
bun test --watch

# ビルド
bun run build

代码样式

  • TypeScript 使用
  • TDD (Test-Driven Development) 方法
  • 符合统一错误处理策略

许可证

国际学生中心

参考链接

貢献

这个项目是个人项目。如果有问题或改善建议Issue 中所述修改相应参数的值。


注意:此项目包括 bun link 中描述的场景,使用以下步骤创建明细表,以便在概念设计中分析体量的体积。npm 的明细栏样式中定义的设置。