配置 Slack MCP 服务:为 Opik 的 send-code-review-slack 命令打通 Cursor 消息通道 配置 Slack MCP 服务为 Opik 的 send-code-review-slack 命令打通 Cursor 消息通道【免费下载链接】comet-llmDebug, evaluate, and monitor your LLM applications, RAG systems, and agentic workflows with comprehensive tracing, automated evaluations, and production-ready dashboards.项目地址: https://gitcode.com/GitHub_Trending/co/comet-llm本篇指南讲解如何在 Cursor IDE 中配置 Slack MCPModel Context Protocol服务器使仓库内置的send-code-review-slack命令能够把代码审查请求自动发送到#code-review频道。读完本文你将掌握从创建 Slack App、申请 User OAuth Token到编写mcp.json与.env.local、再到验证命令全链路可用的完整实操方案并理解仓库中该命令的底层调用逻辑。背景为什么这套代码审查流程需要 Slack MCP在 comet-llmOpik仓库中团队通过.agents/commands/comet/send-code-review-slack.md定义了一条名为cursor send-code-review-slack的 Agent 命令用于在完成分支开发后自动提取当前分支的 GitHub PR 信息Jira 工单、测试环境链接、FE/BE/Python/TypeScript 各组件摘要并按固定模板向#code-review频道发送代码审查请求。这条命令的发送环节依赖Slack MCP 服务器。仓库选用的是支持User OAuth TokenSLACK_MCP_XOXP_TOKEN的自定义 MCP 服务器Docker 镜像ghcr.io/korotovsky/slack-mcp-server其关键特性是消息将以你本人authenticated user的身份发送而不是以 bot 身份发送这使代码审查通知更贴近人工提交流程团队成员可以直接看到谁请求了审查。整套配置的落点分为两个层面工作区级一次性由管理员完成创建 Slack App、配置 User Token Scopes用户级每位开发者各自完成安装 App 到工作区、获取自己的 User OAuth Token、配置环境变量、重启 Cursor。具体配置位于仓库的.agents/docs/SLACK_MCP_SETUP.md实际的 MCP 服务器声明则位于 .agents/mcp.json本文会结合这两份文件与相关命令文档展开。总体配置概览六个步骤步骤层级操作产物Step 1工作区管理员创建 Slack AppApp IDStep 2工作区管理员配置 User Token Scopeschat:write、channels:read、users:read、channels:historyStep 3用户安装 App 到工作区授权关系Step 4用户获取 User OAuth Token以xoxp-开头的令牌Step 5用户配置.env.local与 MCP 声明SLACK_MCP_XOXP_TOKEN等环境变量Step 6用户重启 Cursor 并验证send-code-review-slack可用其中 Step 1、Step 2 只需要做一次App 创建并配置完成后工作区所有用户都可以安装它并各自取得属于自己的 User OAuth Token。Step 1创建 Slack App这是工作区管理员的一次性操作创建完成后整个工作区共用这一个 App进入 Slack API 的 Apps 管理页面点击Create New App→From scratch为 App 命名仓库示例命名为 Opik Code Review选择目标工作区点击Create App完成创建。Step 2配置 User Token Scopes关键区分点CRITICALScope 必须添加到User Token Scopes而不是其上方相邻的 Bot Token Scopes否则页面不会出现 User OAuth Token后续步骤将无法继续。在 App 设置页面进入OAuth Permissions滚动到Scopes区域找到User Token Scopes小节其描述为Scopes that access user data and act on behalf of users that authorize them——确认你在正确位置这些 scope 让 App 以你的身份行动而不是以 bot 身份然后逐条添加以下 OAuth ScopeScope用途chat:write以你认证的用户账号发送消息channels:read查看公共频道的基本信息users:read读取用户信息slack-mcp-server做缓存所需channels:history查看公共频道中的消息MCP 服务器做频道缓存所需添加完成后点击Save Changes。注意users:read与channels:history是ghcr.io/korotovsky/slack-mcp-server正确缓存、访问频道信息所必需的。缺失时日志中可能出现missing_scope错误尽管基础的发送消息功能可能仍可用仍建议按上表配齐以保证 MCP 服务器全功能运行。Step 3安装 App 到工作区这是每位开发者各自执行的步骤用于授权 App 并生成属于自己的 User OAuth Token回到OAuth Permissions页面顶部点击Install to Workspace若已安装过则点击Reinstall to Workspace审阅权限并点击Allow。说明授权页面可能出现 Send messages as [App Name] 的字样这只是 App 在请求权限。当你实际使用 User OAuth Token 时消息将以你个人的账号发出而不是以 App 名义发出。Step 4获取你的 User OAuth Token安装/重新安装 App 之后停留在OAuth Permissions页面必要时刷新滚动到OAuth Tokens for Your Workspace区域找到User OAuth Token注意不是Bot User OAuth Token如果只看到 Bot User OAuth Token说明 Scope 被误加到了 Bot Token Scopes请回到 Step 2 修正再回到此处点击Reinstall to WorkspaceUser OAuth Token 应以xoxp-开头而不是xoxb-点击Show/Reveal查看完整令牌并复制——这就是用于以你本人身份发消息的令牌。Step 5配置环境变量与 mcp.json5.1 将令牌写入.env.local在项目根目录创建或编辑.env.local加入 User OAuth TokenSLACK_MCP_XOXP_TOKENxoxp-your-user-oauth-token-here务必把xoxp-your-user-oauth-token-here替换为 Step 4 拿到的真实令牌xoxp-开头绝不是xoxb-。令牌通过envFile从.env.local加载从而不会直接写进mcp.json。5.2 mcp.json 中的 Slack 服务器声明仓库根目录的 .agents/mcp.json 中已经写好了 Slack MCP 服务器的完整声明Cursor 通过make cursor将.cursor符号链接指向.agents后即可加载核心片段如下{ mcpServers: { GitHub: { command: docker, args: [ run, -i, --rm, -e, GITHUB_PERSONAL_ACCESS_TOKEN, -e, GITHUB_TOOLSETSrepos,pull_requests,issues, ghcr.io/github/github-mcp-server ], envFile: ${workspaceFolder}/.env.local }, slack: { command: docker, args: [ run, -i, --rm, -e, SLACK_MCP_XOXP_TOKEN, -e, LOG_LEVELerror, -e, SLACK_MCP_ADD_MESSAGE_TOOLtrue, ghcr.io/korotovsky/slack-mcp-server:latest, mcp-server, --transport, stdio ], envFile: ${workspaceFolder}/.env.local } } }从中可以看到三个关键配置项mcp-server --transport stdio必填。指定服务器通过 stdio 传输与 Cursor 走 MCP 协议通信缺失时服务器会退化为启动 SSE 服务器无法与 Cursor 的 MCP 集成协作。SLACK_MCP_ADD_MESSAGE_TOOL必填用于启用conversations_add_message工具该工具默认关闭属于安全设计。取值规则true或1对所有频道与私聊DM启用以逗号分隔的频道 ID如XXXXXXXX,YYYYYYYY仅对这些频道启用!XXXXXXXX除指定频道外的所有频道启用。对本仓库的代码审查命令而言使用true以允许向#code-review发消息。envFile指向${workspaceFolder}/.env.local其中存放SLACK_MCP_XOXP_TOKEN保证令牌不进入mcp.json也降低误提交风险。仓库还通过-e LOG_LEVELerror降低 MCP 服务器日志噪音便于聚焦真正的错误。5.3 前置要求本机已安装并正在运行 Docker首次使用时Docker 会自动拉取镜像ghcr.io/korotovsky/slack-mcp-server:latest.env.local应加入.gitignore防止令牌被提交进 Git 历史。Step 6重启 Cursor 并验证完全关闭并重新打开 Cursor IDE仅 Reload Window 不够需彻底退出在 Cursor Settings Features MCP 中确认 Slack MCP 服务器已列出、无报错在存在已打开 PR 的分支上运行cursor send-code-review-slack若能收到发送成功确认说明整条链路已打通。命令如何使用这套 MCP 配置源码级工作流发送命令send-code-review-slack.agents/commands/comet/send-code-review-slack.md 定义了完整执行模型自动从 GitHub PR 提取信息仅对缺失信息提问按模板格式化后经 Slack MCP 发送。与本文 MCP 配置直接相关的环节包括Preflight 阶段命令会先调用 Slack MCP 的channels_list工具以limit: 1的最小参数调用确保公共与私有频道都能返回来探测 MCP 是否可用若工具不可用会提示按 .agents/docs/SLACK_MCP_SETUP.md 配置并重启 Cursor。这一探测依赖 Step 5 中mcp-server --transport stdio与SLACK_MCP_ADD_MESSAGE_TOOLtrue的正确配置。发送阶段调用conversations_add_message工具参数为channel_id: #code-review、payload: 格式化后的完整消息、content_type: text/markdown可选默认即此值。命令文档明确要求服务器必须带mcp-server --transport stdio和SLACK_MCP_ADD_MESSAGE_TOOLtrue否则会遇到 tool disabled 错误。失败处理命令对常见错误给出了与本文 Troubleshooting 一一对应的提示例如认证错误检查SLACK_MCP_XOXP_TOKEN是否xoxp-开头、权限错误检查chat:write是否位于 User Token Scopes、Docker 错误检查镜像能否拉取等。消息采用固定模板greeting 后依次为 Jira 链接、PR 链接、PR size、测试环境链接、可选组件摘要并且只有被提供或提取到的可选字段才会出现。典型输出形如Hi team, Please review the following PR: :jira_epic: jira link: https://comet-ml.atlassian.net/browse/OPIK-1234 :github: pr link: https://github.com/comet-ml/opik/pull/1234 :straight_ruler: pr size: L :test_tube: test env link: https://test.opik.com :react: fe summary (optional): Added new metrics dashboard UI :java: be summary (optional): Implemented metrics aggregation endpoint :typescript: typescript summary (optional): Added TypeScript SDK support for metrics不发送消息的替代命令generate-code-review-slack-command.agents/commands/comet/generate-code-review-slack-command.md 定义了孪生命令cursor generate-code-review-slack-command信息提取与格式化逻辑完全相同但它不依赖 Slack MCP、也不自动发送而是生成一段可复制、可编辑的 Slack 消息。适合需要人工补充的场景添加提及、附带视频/媒体链接Slack 不支持直接通过 MCP 发送视频视频应放入 PR 描述后分享链接、最终校对等。命令文档中明确建议如需自动发送则用send-code-review-slack如需先编辑再发送则用本命令。PR size 字段的提取逻辑消息模板中的:straight_ruler: pr size字段由两份文档共享的提取逻辑 .agents/docs/PR_SIZE_EXTRACTION.md 决定优先读取 GitHub PR 的size/*标签 size/XS、 size/S、 size/M、 size/L、 size/XL仅存储为{emoji} {BUCKET}如 L不带行数统计只有在标签缺失时才按additions deletions计算回退且回退使用的忽略清单与阈值必须与标签工作流保持一致见 .github/workflows/labeler.yml 中的阈值XS 20、S ≤ 100、M ≤ 300、L ≤ 600、XL 600。配置文件如何被 Cursor 加载仓库 Makefile 中定义了make cursor将.cursor符号链接指向.agents/与make claude将.agents同步为.claude/并生成.mcp.json。也就是说本文提到的mcp.json与命令/文档体系由.agents/目录统一管理运行make cursor后 Cursor 即可识别全部 MCP 服务器与 Agent 命令。安全注意事项绝不把令牌提交进 Git.env.local必须加入.gitignoremcp.json通过环境变量引用令牌不直接存放令牌但提交前仍需检查其中是否意外包含敏感内容。令牌存储位置SLACK_MCP_XOXP_TOKEN只存放在.env.local且已被.gitignore忽略不直接写入mcp.json。令牌类型务必使用以xoxp-开头的 User OAuth Token而不是以xoxb-开头的 Bot Token否则消息发送身份与预期不符。仓库的 .agents/rules/security.mdc 还针对 Agent 交互场景定义了安全红线如禁止执行危险命令、避免提交密钥等配置 MCP 令牌时同样适用。故障排查MCP 服务器未出现在 Cursor 中检查mcp.json是否位于正确位置.cursor/mcp.json或用户级~/.cursor/mcp.json本仓库通过make cursor完成.cursor - .agents链接校验 JSON 语法是否合法可使用 JSON 校验器彻底重启 Cursor退出并重新打开而非仅 Reload Window查看 Cursor Settings Features MCP 中的错误信息确认 Docker 已安装且运行中docker --version、docker ps。Docker 命令错误日志出现 Usage: docker [OPTIONS] COMMAND确认 Docker 正在运行执行docker ps失败则启动 Docker Desktop 或 Docker daemon手动测试 MCP 服务器命令docker run -i --rm -e SLACK_MCP_XOXP_TOKENxoxp-your-token -e LOG_LEVELerror ghcr.io/korotovsky/slack-mcp-server:latest正常应启动 MCP 服务器失败时查看具体报错 3.手动拉取镜像docker pull ghcr.io/korotovsky/slack-mcp-server:latest检查 mcp.json 结构确保args数组格式正确每个参数都是独立的字符串元素可对照 .agents/mcp.json 中slack节点的写法。认证错误确认令牌以xoxp-开头而非xoxb-日志中出现xoxb-说明误用了 Bot Token回到 Step 4 重新获取 User OAuth Token确认 App 已安装到你的工作区确认 User Token Scopes 包含全部必需 scopechat:write发消息必需、channels:read访问频道必需、users:readMCP 服务器缓存必需、channels:history完整功能推荐确认 Docker 参数中用的是SLACK_MCP_XOXP_TOKEN而非SLACK_BOT_TOKEN检查实际mcp.json中 Docker 参数里的令牌确实是xoxp-...更新令牌后彻底重启 Cursor确认 Docker 运行中且能拉取镜像。missing_scope 错误从错误信息中确认具体缺失的 scope在 Slack App 的 OAuth Permissions → User Token Scopes 中添加缺失 scope常见缺失项users:read、channels:history添加后重新安装 App到工作区若生成了新令牌同步更新mcp.json引用的令牌重启 Cursor 重载 MCP 配置。部分missing_scope可能只是警告不阻断基础功能如发消息但补齐全部推荐 scope 才能保证 MCP 服务器全功能可用。权限错误确认 User Token Scopes 中包含chat:write确认你对#code-review频道有访问权限确认自己是该频道成员使用 Docker 时确认容器具备访问 Slack API 的网络能力。小结通过本文的六个步骤你可以在工作区级一次性创建 Slack App 与 User Token Scopes并以个人身份获取xoxp-开头的 User OAuth Token配合.env.local与 .agents/mcp.json 中mcp-server --transport stdio、SLACK_MCP_ADD_MESSAGE_TOOLtrue的关键配置让 Cursor 中的cursor send-code-review-slack命令自动完成提取 PR 信息 → 格式化消息 → 以你本人身份发送到#code-review的完整代码审查通知流程。若需要人工编辑添加提及、视频链接等generate-code-review-slack-command提供了不依赖 Slack MCP 的可复制方案。配置完成后记得把.env.local纳入.gitignore并妥善保管好你的 User OAuth Token。如需进一步深入可在仓库内继续阅读以下资源Slack MCP 配置指南原文MCP 服务器声明文件发送代码审查消息命令生成可复制 Slack 消息命令PR size 提取共享逻辑PR size 标签工作流【免费下载链接】comet-llmDebug, evaluate, and monitor your LLM applications, RAG systems, and agentic workflows with comprehensive tracing, automated evaluations, and production-ready dashboards.项目地址: https://gitcode.com/GitHub_Trending/co/comet-llm创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考