Slack代理CLI

Slack代理CLI是一个命令行界面和模型上下文协议(MCP)服务器,用于Slack API集成,支持终端脚本和AI助手工作流。

  • by bcharleson
  • Python
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 bcharleson/slack-mcp-server

使用说明

Slack代理CLI

用于Slack API集成的CLI和模型上下文协议(MCP)服务器。使用 slack 从终端获取脚本和代理工作流,或 slack mcp 通过stdio MCP集成AI助手。

AI代理: 看 代理商.md 用于安装、身份验证、所有命令、MCP工具名称和工作流示例。

特征

渠道管理

  • 列出所有可访问的频道(公共/私人)
  • 获取频道信息和详细信息
  • 创建新频道
  • 存档频道
  • 加入/退出频道
  • 设置频道主题
  • 获取频道消息历史记录

消息传递

  • 将消息发布到频道
  • 回复消息线程
  • 更新和删除邮件
  • 添加和删除表情符号反应
  • 获取消息反应

直接消息(DM)

  • 向用户发送直接消息
  • 列出DM和组DM对话
  • 获取DM对话历史记录
  • 打开新的DM对话

搜索(需要用户令牌)

  • 在工作区中搜索邮件
  • 搜索文件
  • 邮件和文件的组合搜索

用户管理

  • 列出工作区用户
  • 获取用户配置文件信息
  • 检查用户状态/在线状态
  • 通过电子邮件查找用户
  • 获取机器人和团队信息

先决条件

  • Python 3.10或更高版本
  • 具有管理员权限的Slack工作区,用于创建应用程序
  • 用于大多数操作的Slack Bot令牌(xoxb-…)
  • 用于搜索功能的Slack用户令牌(xoxp-…)

安装

npm(推荐)

需要 Node.js 18+ 和 Python 3.10+.

npm install -g slack-agent-cli
slack --version

MCP通过全局安装:

slack mcp

来源(Python)

1.克隆存储库

git clone https://github.com/bcharleson/slack-agent-cli.git
cd slack-agent-cli

2.创建虚拟环境

python3.12 -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

3.安装依赖项

pip install -e .

或根据要求安装:

pip install -r requirements.txt

Slack应用程序设置

1.创建Slack应用程序

  1. 首选 Slack API应用程序
  2. 点击“创建新应用”→ “从头开始”
  3. 命名您的应用程序并选择您的工作区

2.配置Bot令牌作用域

导航至 OAuth和权限 并添加这些Bot令牌范围:

频道

  • channels:read -查看基本频道信息
  • channels:write -管理公共渠道
  • channels:history -查看公共频道中的消息
  • groups:read -查看私人频道
  • groups:write -管理私人频道
  • groups:history -查看私人频道中的消息

消息传递

  • chat:write -发送消息
  • reactions:read -查看反应
  • reactions:write -添加反应

直接消息

  • im:read -查看DM信息
  • im:write -启动DM
  • im:history -查看DM历史记录
  • mpim:read -查看组DM信息
  • mpim:write -启动组DM
  • mpim:history -查看组DM历史记录

用户

  • users:read -查看用户
  • users:read.email -查看用户电子邮件

3.配置用户令牌范围(用于搜索)

如果您需要搜索功能,请添加以下用户令牌范围:

  • search:read -搜索邮件和文件

4.安装应用程序

  1. 点击“安装到工作区”
  2. 授权应用程序
  3. 复制 Bot用户OAuth令牌 (开始于 xoxb-)
  4. 如果使用搜索,也要复制 用户OAuth令牌 (开始于 xoxp-)

配置

环境变量

创建 .env 项目根目录中的文件:

# Required: Bot Token for most operations
SLACK_BOT_TOKEN=xoxb-your-bot-token-here

# Optional: User Token for search functionality
SLACK_USER_TOKEN=xoxp-your-user-token-here

您可以复制示例文件:

cp .env.example .env
# Then edit .env with your tokens

用法

命令行界面

安装后 slack 命令公开反映MCP工具的分组子命令:

# Channels
slack channels list
slack channels info C01234567
slack channels history C01234567 --limit 10

# Messages
slack messages post C01234567 "Hello from the CLI"
slack messages reply C01234567 1710000000.000100 "Thread reply"

# DMs
slack dms send U01234567 "Quick note from CLI"
slack dms list

# Search (requires SLACK_USER_TOKEN)
slack search messages "project update in:#general"

# Users / workspace
slack users list
slack users lookup brandon@example.com
slack workspace team

# Output formatting
slack --pretty channels list
slack --output json --quiet channels list

全局选项:

  • --bot-token / SLACK_BOT_TOKEN
  • --user-token / SLACK_USER_TOKEN
  • --output json|pretty (默认值: json)
  • --pretty 速记
  • --quiet 仅用于退出代码自动化

MCP服务器

启动stdio MCP服务器:

slack mcp
# or
slack-agent-cli mcp

运行服务器(开发)

source venv/bin/activate
python -m slack_agent_cli.cli mcp

Claude桌面配置

添加到您的Claude Desktop配置文件中:

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

{
  "mcpServers": {
    "slack": {
      "command": "/path/to/slack-agent-cli/venv/bin/python",
      "args": ["-m", "slack_agent_cli"],
      "cwd": "/path/to/slack-agent-cli",
      "env": {
        "SLACK_BOT_TOKEN": "xoxb-your-bot-token",
        "SLACK_USER_TOKEN": "xoxp-your-user-token"
      }
    }
  }
}

替换 /path/to/slack-agent-cli 安装的实际路径。

光标IDE配置

添加到光标MCP设置(~/.cursor/mcp.json):

{
  "mcpServers": {
    "slack-agent-cli": {
      "command": "slack",
      "args": ["mcp"],
      "env": {
        "SLACK_BOT_TOKEN": "xoxb-your-bot-token",
        "SLACK_USER_TOKEN": "xoxp-your-user-token"
      }
    }
  }
}

或者进行全局安装:

{
  "mcpServers": {
    "slack-agent-cli": {
      "command": "slack",
      "args": ["mcp"],
      "env": {
        "SLACK_BOT_TOKEN": "xoxb-your-bot-token",
        "SLACK_USER_TOKEN": "xoxp-your-user-token"
      }
    }
  }
}

可用工具

渠道工具

工具 说明
list_channels 列出所有可访问的频道
get_channel_info 获取特定频道的详细信息
create_channel 创建新频道
archive_channel 存档频道
get_channel_history 获取消息历史记录
join_channel 加入频道
leave_channel 留下一个频道
set_channel_topic 设置频道主题

消息工具

工具 说明
post_message 向频道发布消息
reply_to_thread 在帖子中回复
get_thread_replies 在一个帖子中获取所有回复
add_reaction 添加表情符号反应
remove_reaction 删除表情符号反应
get_message_reactions 获取消息的反应
update_message 更新现有邮件
delete_message 删除消息

DM工具

工具 说明
send_dm 发送直接消息
list_conversations 列出DM对话
get_dm_history 获取DM历史记录
open_dm 打开DM对话

搜索工具(需要用户令牌)

工具 说明
search_messages 搜索邮件
search_files 搜索文件
search_all 搜索邮件和文件

用户工具

工具 说明
list_users 列出工作区用户
get_user_info 获取用户详细信息
get_user_presence 检查用户是否在线
lookup_user_by_email 通过电子邮件查找用户
get_user_profile 获取详细资料
get_bot_info 获取机器人身份
get_team_info 获取工作区信息

测试

使用MCP检查器

npx @modelcontextprotocol/inspector python -m slack_agent_cli

这将打开一个web界面,以交互方式测试所有可用工具。

手动测试

  1. 启动服务器
  2. 使用Claude Desktop或其他MCP客户端
  3. 尝试基本命令:
    • “列出工作区中的所有频道”
    • “获取#普通频道的历史记录”
    • “向#test频道发送一条消息,说你好!”

故障排除

“SLACK_BOT_TOKEN未设置”

确保您的 .env 文件存在并包含令牌,或在MCP客户端配置中设置它。

“搜索需要用户令牌”

搜索操作需要用户令牌(SLACK_USER_TOKEN).将用户令牌范围添加到您的Slack应用程序中并包含令牌。

“channel_not_found”

机器人可能无法访问该频道。确保:

  1. 频道存在
  2. 机器人是私人频道的成员
  3. 通道ID正确(使用 list_channels 查找ID)

“缺少作用域”

你的Slack应用缺少所需的权限。检查上面的OAuth作用域部分,并在Slack应用程序设置中添加缺少的作用域。

发展

项目结构

slack-agent-cli/
├── src/
│   └── slack_agent_cli/
│       ├── cli/
│       │   └── main.py            # Click CLI + `slack mcp`
│       ├── core/
│       │   └── output.py          # JSON/pretty output helpers
│       ├── operations/            # Shared handlers for CLI + MCP
│       │   ├── channels.py
│       │   ├── messages.py
│       │   ├── search.py
│       │   └── users.py
│       ├── tools/                   # MCP tool registration
│       ├── utils/
│       │   └── slack_client.py
│       └── server.py              # FastMCP stdio server
├── pyproject.toml
├── package.json
├── AGENTS.md                      # AI agent guide (commands, MCP, workflows)
├── requirements.txt
├── .env.example
└── README.md

添加新工具

  1. 在中创建或编辑文件 src/slack_agent_cli/tools/
  2. 使用定义工具 @mcp.tool() 装饰器
  3. 通过调用注册函数在服务器中注册工具

许可证

MIT许可证

贡献

欢迎投稿!请随时提交拉取请求。