Skip to main content

概要

Sentry は、MCP Marketplace で利用できる公式の MCP 統合です。OAuth 認証を利用して、Devin が Sentry プロジェクトにアクセスできるようにし、issue の詳細、スタックトレース、イベントのブレッドクラムなどを照会できます。 接続すると、Webhook を通じて自動エラートリアージを設定したり、Sentry エラーをバッチ処理する定期的な修復セッションをスケジュールしたりできます。

Sentry MCPを有効にする

1

MCP Marketplaceを開く

Settings > MCP Marketplace に移動し、Sentry を見つけます。
2

OAuthフローを完了する

Enable をクリックし、プロジェクトにアクセスできる Sentry アカウントで認証します。これにより、Devin に Sentry の issue、イベント、スタックトレースへの読み取り権限が付与されます。
3

接続を確認する

セッションを開始し、いずれかのプロジェクトの最近の issue を一覧表示するよう Devin に依頼して、接続をテストします。接続を確認するには、MCP Marketplace で Test listing tools をクリックすることもできます。

機能

Sentry MCP を有効にすると、Devin は任意のセッション内で次の操作を実行できます。
機能説明
issue の詳細を照会issue のメタデータ、ステータス、担当者、イベント数を表示
完全なスタックトレースを取得任意のイベントの完全なスタックトレースにアクセス
イベントのブレッドクラムを確認エラーに至るまでのユーザー操作とシステムイベントを表示
リリースタグを確認issue がどのリリースで発生または解決されたかを確認
issue のステータスを更新issue を解決済みまたは無視としてマークしたり、チームメンバーに割り当てたりする
担当者とタグを管理issue の担当者、タグ、ブックマークを更新
アラートを設定アラートルールと通知設定を表示・管理

自動トリアージパイプライン (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 に切り替える — これにより、この integration をアラートルールのアクションとして利用できるようになります
  • Permissions: Issue & EventProject の読み取りアクセス
2

アラートルールを作成する

プロジェクトの Alerts > Create Alert Rule > Issue Alert に移動します:
  • When: 新しい issue が作成されたとき
  • If: issue のイベント数が 1 時間50 を超えたとき (トラフィックに応じて調整してください)
  • Then: Devin Auto-Triage 経由で通知を送信する
3

Webhook ハンドラーをデプロイする

Sentry のアラートペイロードを受信し、Devin セッションを開始する小さなハンドラーを構築します。Settings > Service Usersサービスユーザー を作成し、ManageOrgSessions permission を付与します (API 経由でセッションを一覧表示または絞り込みしたい場合は、ViewOrgSessions も追加してください) 。API トークンは DEVIN_API_KEY、組織 ID は DEVIN_ORG_ID、Sentry Internal Integration の Client SecretSENTRY_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.aisentry-auto-triage タグ付きの新しいセッションを確認します。
上記のコードでは、各セッションに sentry-auto-triage と Sentry プロジェクト名のタグを付けています。これにより、Devin ダッシュボードでこれらのセッションを絞り込んだり、tags クエリパラメータを使って API 経由で取得 したりできます。セッションの一覧取得には、サービスユーザーに ViewOrgSessions permission が必要です。permissions テーブルの完全版については、API overview を参照してください。

定期的な一括修復

個別のアラートにその都度対応する代わりに、未解決の Sentry エラーをまとめて取得し、それぞれに対して修正用のセッションを起動する定期実行の Devin セッションをスケジュールできます。
1

スケジュールを作成する

Settings > Schedules に移動し、Create schedule をクリックします。
  • Name: Daily Sentry remediation
  • Frequency: 毎日午前 6:00 (スタンドアップまでに修正 PR を用意できるようにするため)
  • Agent: Devin — これにより、Devin はエラーごとに個別のセッションを起動できるため、修正を並列に進められます
  • Prompt:
Sentry MCP を利用して、payments-api プロジェクトで過去
24 時間に発生した未解決エラーを、イベント数の多い順にすべて取得してください。
`wontfix` または `expected-behavior` のタグが付いたエラーはスキップしてください。

上位 5 件のエラーについて:
1. 完全なスタックトレースと breadcrumbs を取得する
2. repo 内の関連するソースファイルを見つける
3. 根本原因を特定する
4. 修正とリグレッションテストを含む PR を作成するための Devin セッションを開始し、
   PR の説明に Sentry issue の URL を含める

すべてのエラーと対応する PR の要約を Slack に投稿してください。
2

レビューして調整する

1 週間実行したら、対象範囲を調整します。
  • エラー数を増減する: マージ可能な修正の数に応じて調整します
  • プロジェクトまたはタグで絞り込む: codebase の特定の領域に絞って対応します
  • Knowledge を追加する: エラー処理の規約を追加して、Devin の修正がチームのパターンに合うようにします
影響の大きいエラー (1 時間あたり 50 件超のイベント) には webhook ベースのトリアージを、発生頻度が低い多数の問題には定期的な一括修復を組み合わせてください。これにより、緊急性の高いエラーと継続的に発生するエラーの両方に対応できます。