一个只读的 MCP(模型上下文协议)服务器,用于 Slack,并支持 OAuth 认证和多用户会话。
https://github.com/user-attachments/assets/211bd428-209f-461a-b9a1-9cc85fd7c438
slack_get_channel_messages - 从频道中检索消息slack_get_thread_replies - 获取对话线程回复slack_search_messages - 使用过滤器进行高级消息搜索slack_get_users - 列出工作区用户或获取特定个人资料slack_get_channels - 列出频道或获取详细信息slack_get_oauth_url - 生成 OAuth 授权 URL客户端ID 和 客户端密钥channels:history groups:history im:history mpim:history channels:read groups:read im:read mpim:read users:read users:read.email search:readhttps://abc123.ngrok.io/oauth2callback)。参见下面的本地开发设置。https://your-domain.com/oauth2callbackuv sync
Slack 要求 OAuth 回调使用 HTTPS。对于本地开发,可以使用 ngrok 或类似的 HTTPS 代理:
# 访问 https://ngrok.com/ 下载 ngrok 并启动代理
ngrok http 8001
复制 HTTPS 转发 URL(例如,https://abc123.ngrok.io/oauth2callback),并将其添加到你的 Slack 应用设置中的重定向 URL 中。
设置所需的环境变量:
export SLACK_CLIENT_ID="your_client_id"
export SLACK_CLIENT_SECRET="your_client_secret"
# 生产环境中使用 https://your-domain.com。
export SLACK_MCP_BASE_URI="http://localhost"
# 生产环境中使用 https://your-domain.com。
export SLACK_EXTERNAL_URL="https://abc123.ngrok.io"
# 可选,如果你希望在不同的端口上运行 MCP 服务器。
export SL
ACK_MCP_PORT=8001
uv run python main.py
默认情况下,服务器将在 http://localhost:8001 上启动。确保 ngrok 代理与之一起运行以使 OAuth 正常工作。
在你的 MCP 客户端配置中添加(例如,Cursor 的 ~/.cursor/mcp.json):
{
"mcpServers": {
"slack": { "url": "http://localhost:8001/mcp", "transport": "http" }
}
}
调用 slack_get_oauth_url() MCP 工具以获取授权 URL,在浏览器中访问它,并在首次使用 MCP 服务器时批准访问权限。
对于生产部署,你可以将其放在 Docker 中运行:
docker build -t slack-mcp .
docker run -p 8001:8001 \
-e SLACK_CLIENT_ID="your_client_id" \
-e SLACK_CLIENT_SECRET="your_client_secret" \
-e SLACK_MCP_BASE_URI="https://your-domain.com" \
-e SLACK_EXTERNAL_URL="https://your-domain.com" \
slack-mcp
使用 uv run pytest 运行测试。
本项目根据 Apache 许可证 2.0 发布 - 查看 LICENSE 文件了解详情。
Duolingo 正在招聘!申请职位请访问 https://www.duolingo.com/careers