Skip to main content

概述

Sentry 是 MCP Marketplace 中提供的官方 MCP 集成。它使用 OAuth 身份验证,让 Devin 能够访问你的 Sentry 项目,以便查询问题详情、堆栈跟踪、事件面包屑等信息。 连接后,你可以通过 Webhook 设置自动化错误分诊,或计划定期运行修复会话,批量处理 Sentry 错误。

启用 Sentry MCP

1

打开 MCP Marketplace

前往 Settings > MCP Marketplace,找到 Sentry
2

完成 OAuth 流程

点击 Enable,然后使用有权访问你的项目的 Sentry 账户进行身份验证。这将授予 Devin 对你的 Sentry 问题、事件和堆栈跟踪的读取权限。
3

验证连接

启动一个会话,并让 Devin 列出你某个项目中的最近问题,以测试连接。你也可以在 MCP Marketplace 中点击 Test listing tools,确认连接是否正常。

功能

启用 Sentry MCP 后,Devin 可在任何会话中执行以下操作:
功能描述
查询问题详情查看问题的元数据、状态、分配情况和事件计数
获取完整堆栈跟踪访问任意事件的完整堆栈跟踪
查看事件面包屑查看错误发生前的用户操作和系统事件
检查发布标签查看是哪个发布版本引入或解决了某个问题
更新问题状态将问题标记为已解决、已忽略,或分配给团队成员
管理分配和标签更新问题分配、标签和书签
配置告警查看和管理告警规则及通知设置

自动分诊流水线 (Webhook 驱动)

你可以将 Sentry 告警直接接入 Devin,这样新的生产环境错误就能自动完成分诊。这里使用 Sentry Internal Integration 将 webhook 发送到桥接服务,再由该服务调用 Devin API。
1

创建 Sentry Internal Integration

在你的 Sentry 控制台中,前往 Settings > Developer Settings > Custom Integrations,然后点击 Create New Integration > Internal Integration按如下方式配置:
  • Name: Devin Auto-Triage
  • Webhook URL: 你的桥接服务端点 (例如 https://your-domain.com/sentry-webhook)
  • Alert Rule Action: 切换为 on —— 这样该集成就可作为告警规则中的一个操作使用
  • Permissions:Issue & EventProject 提供读取权限
2

创建告警规则

前往你项目中的 Alerts > Create Alert Rule > Issue Alert
  • When: 创建了新 issue
  • If: 该 issue 在 1 小时内有超过 50 个 event (可根据你的流量调整)
  • Then: 通过 Devin Auto-Triage 发送通知
3

部署 webhook 处理程序

构建一个小型处理程序,用来接收 Sentry 的告警负载并启动 Devin session。在 Settings > Service Users 中创建一个服务用户,并授予 ManageOrgSessions permission (如果你还想通过 API 列出或筛选 sessions,也请添加 ViewOrgSessions) 。将 API token 存储为 DEVIN_API_KEY,将你的组织 ID 存储为 DEVIN_ORG_ID,并将 Sentry Internal Integration 的 Client Secret 存储为 SENTRY_CLIENT_SECRET,写入处理程序的环境变量。
const express = require('express');
const crypto = require('crypto');
const app = express();
app.use(express.json({
  verify: (req, _res, buf) => { req.rawBody = buf; },
}));

function verifySignature(req) {
  const signature = req.headers['sentry-hook-signature'];
  if (!signature) return false;
  const expected = crypto
    .createHmac('sha256', process.env.SENTRY_CLIENT_SECRET)
    .update(req.rawBody)
    .digest('hex');
  if (signature.length !== expected.length) return false;
  return crypto.timingSafeEqual(Buffer.from(signature), Buffer.from(expected));
}

app.post('/sentry-webhook', async (req, res) => {
  if (!verifySignature(req)) return res.status(401).send('Bad signature');

  const event = req.body.data?.event;
  if (!event) return res.sendStatus(200);

  const orgId = process.env.DEVIN_ORG_ID;
  const response = await fetch(
    `https://api.devin.ai/v3/organizations/${orgId}/sessions`, {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${process.env.DEVIN_API_KEY}`,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      prompt: [
        `A Sentry alert fired for a new issue: "${event.title}"`,
        `Culprit: ${event.culprit}`,
        `Sentry URL: ${event.web_url}`,
        ``,
        `Use the Sentry MCP to pull the full stack trace and breadcrumbs.`,
        `Identify the root cause, fix the issue, and open a PR with a`,
        `regression test.`,
      ].join('\n'),
      tags: ['sentry-auto-triage', `project:${event.project}`],
    }),
  });

  const { session_id } = await response.json();
  console.log(`Started Devin session ${session_id} for: ${event.title}`);
  res.sendStatus(200);
});

app.listen(3000);
将它部署到任何可以接收 HTTPS 流量的环境中即可——例如 Cloudflare Worker、AWS Lambda,或小型 VPS。然后将 Sentry Internal Integration 的 webhook URL 指向它。
4

测试流水线

在 Sentry 中触发一次测试告警 (或暂时调低阈值) ,然后在 app.devin.ai 中查看是否出现了一个带有 sentry-auto-triage 标签的新 session。
上述代码会为每个 session 打上 sentry-auto-triage 和 Sentry 项目名称两个标签。这样你就可以在 Devin 控制台中筛选这些 sessions,并通过 tags 查询参数使用 API 拉取它们。列出 sessions 需要你的服务用户具备 ViewOrgSessions permission——完整权限表请参阅 API 概览

定期批量修复

与其逐一处理单个告警,你可以计划一个定期运行的 Devin session,批量拉取尚未解析的 Sentry 错误,并为每个错误启动一个修复 session。
1

创建计划

前往 Settings > Schedules,然后点击 Create schedule
  • 名称: Daily Sentry remediation
  • 频率: 每天早上 6:00 (这样修复 PR 能在站会前准备好)
  • Agent: Devin —— 这样 Devin 就能为每个错误启动一个单独的 session,从而并行运行修复
  • 提示:
使用 Sentry MCP 拉取 payments-api 项目中过去
24 小时内所有未解析的错误,并按事件数排序。
跳过带有 `wontfix` 或 `expected-behavior` 标签的错误。

对于前 5 个错误:
1. 拉取完整的堆栈跟踪和 breadcrumbs
2. 在我们的 repo 中找到相关源文件
3. 找出根本原因
4. 启动一个 Devin session,创建包含修复和回归
   测试的 PR,并在 PR 描述中附上对应的 Sentry issue URL

将所有错误及其 PR 的摘要发布到 Slack。
2

审查并迭代

运行一周后,调整作用域:
  • 增加或减少错误数量,具体取决于有多少修复可以合并
  • 按项目或标签筛选,以聚焦代码库中的特定区域
  • 添加 Knowledge,说明你的错误处理约定,让 Devin 的修复更符合你团队的模式
将由 webhook 驱动的高影响错误 (50+ 事件/小时) 分诊,与针对低频长尾问题的定期批量修复结合使用。这样既能处理紧急错误,也能持续处理其他错误。