DEV Community

Cover image for Claude Code + Sentry MCP + Gitea MCP:每日自動抓 bug、修復、開 PR
Let's Write
Let's Write

Posted on Originally published at letswrite.tw

Claude Code + Sentry MCP + Gitea MCP:每日自動抓 bug、修復、開 PR

本篇要解決的問題

除了開發新專案,工程師日常最耗時的工作通常是排查、修復既有系統的 Bug。

而當 Anthropic 推出 Model Context Protocol (MCP)後,AI 在軟體開發自動化(DevOps Automation)有了全新落地應用,那有沒有辦法可以讓 AI 自己去找 bug 然後再自己修?

想到以前曾用過一陣子 Sentry,查了一下有 MCP 可用。

再查了一下 Gitea,也確定有 MCP 可用。

那把兩邊尬在一起,不就可以達成本篇的目標:AI 自己找 bug 後自己修?

本文實作如何透過 Sentry MCP 自動抓取 Production 錯誤堆疊,再結合 Gitea MCP 讓 Claude Code 實現每日自動找 Bug、本機修復測試、自動提交 PR 的完整除錯流程。


安裝 Sentry MCP

本機要先安裝 Claude CLI:https://code.claude.com/docs/en/quickstart

1 先下指令安裝,安裝 Sentry MCP:

claude mcp add --transport http sentry https://mcp.sentry.dev/mcp --scope user
Enter fullscreen mode Exit fullscreen mode

2 登入 Sentry 帳戶進行授權:

終端機輸入 claude,接著輸入:

/mcp list
Enter fullscreen mode Exit fullscreen mode

清單裡會看到 sentry 顯示為未授權,對 sentry 那項按 enter,瀏覽器會開啟頁面,都按 Approve 就行:

Claude Code 終端機執行 MCP list 選擇 Sentry 授權

Claude Code 終端機執行 MCP list 選擇 Sentry 授權

Sentry 官方網站 OAuth 授權頁面點擊 Approve

Sentry 官方網站 OAuth 授權頁面點擊 Approve

Sentry MCP 授權成功完成提示頁面

Sentry MCP 授權成功完成提示頁面

接著 Claude 要重啟,可以問問 Claude 有了 Sentry MCP 後它可以做到哪些事,August 詢問後回答如下:

  • 查 issuesearch_issues 搜錯誤,按專案/時間/狀態過濾
  • 查事件search_events 挖詳細 event 資料,stack trace、tag、breadcrumb 都能看
  • AI 診斷analyze_issue_with_seer 丟給 Seer 分析根因,給修復建議
  • 改狀態update_issue 標 resolved/ignored、指派負責人
  • 找組織/專案find_organizationsfind_projects 列出可存取範圍
  • 通用查詢get_sentry_resourceexecute_sentry_tool 存取更細資源

讓 Claude 知道要抓取哪個專案

Sentry 後台的側邊導覽列,點擊「設定 > 專案」,然後點擊要讓 Claude 分析的專案後,會看到專案資訊:

Sentry 後台專案設定中查看 Project Slug 與專案編號

Sentry 後台專案設定中查看 Project Slug 與專案編號

提供 Slug 或是專案編號給 Claude 都行,就會抓到了,以下是 August 提供專案編號的示範:

在 Claude Code 對話中提供 Sentry 專案編號進行讀取

在 Claude Code 對話中提供 Sentry 專案編號進行讀取


安裝 Gitea MCP

下列有三種方式,無論選擇哪種安裝方式,都需要先取得一組具備讀寫權限的 Gitea Token。

詳細的 Token 建立步驟與權限設定,請參考站內筆記文:

CodiumAI PR-Agent,在 Gitea 上用 AI 來 Code Review

方式一:直接用 go run

需要本機有 Go 才能使用:

claude mcp add --transport stdio --scope user gitea \
  --env GITEA_ACCESS_TOKEN=你的token \
  --env GITEA_HOST=https://your-gitea.internal \
  -- go run gitea.com/gitea/gitea-mcp@latest -t stdio
Enter fullscreen mode Exit fullscreen mode

方式二:下載官方執行檔

官方 releases 有提供 gitea-mcp_Windows_x86_64.zip 給 Windows,以及 gitea-mcp_Darwin_arm64.tar.gz 給 Apple Silicon Mac。

Windows:

https://gitea.com/gitea/gitea-mcp/releases 下載 gitea-mcp_Windows_x86_64.zip
解壓縮,把 gitea-mcp.exe 放到一個固定資料夾(例如 C:\Tools\gitea-mcp)。

把該資料夾加進系統環境變數 PATH。

Mac:

curl -LO [https://gitea.com/gitea/gitea-mcp/releases/download/v1.2.0/gitea-mcp_Darwin_arm64.tar.gz](https://gitea.com/gitea/gitea-mcp/releases/download/v1.2.0/gitea-mcp_Darwin_arm64.tar.gz)
tar -xzf gitea-mcp_Darwin_arm64.tar.gz
sudo mv gitea-mcp /usr/local/bin/
chmod +x /usr/local/bin/gitea-mcp
Enter fullscreen mode Exit fullscreen mode

安裝好 Gitea MCP 後,接上 Claude Code:

claude mcp add --transport stdio --scope user gitea --env GITEA_ACCESS_TOKEN=你的token --env GITEA_HOST=https://your-gitea.internal -- gitea-mcp -t stdio
Enter fullscreen mode Exit fullscreen mode

方式三:用 Docker

官方也提供 docker.gitea.com/gitea-mcp-server 這個 image,不需要額外編譯或裝 Go。

claude mcp add --transport stdio --scope user gitea \
--env GITEA_ACCESS_TOKEN=你的token \
--env GITEA_HOST=https://your-gitea.internal \
-- docker run --rm -i -e GITEA_ACCESS_TOKEN -e GITEA_HOST [docker.gitea.com/gitea-mcp-server](http://docker.gitea.com/gitea-mcp-server)
Enter fullscreen mode Exit fullscreen mode

不管選擇哪種方式,安裝好後在 Claude Code 輸入 /mcp,確認 Gitea 連線成功。


Claude Code 設定排程

Claude Code 選好本機專案後,貼上以下:

建立一個本機的排程,在本專案執行以下「Sentry issue 自動修復」功能:

Sentry 組織 slug: your-org-slug
Sentry 專案 slug: your-project
Gitea repo: Gitea 專案網址

步驟 1 - 找 issue:
呼叫 search_issues 找未解決的 error 類型 issue,
一次只查一種類型,不要用 OR / AND 組合查詢:

- "unresolved error issues" (limit 3)
  依事件數排序,取前 3 個。

步驟 2 - 抓細節:
對每個候選 issue 呼叫 get_issue_details,
取得完整 stack trace 與 trace ID。

步驟 3 - 分析根因:
對每個 issue 呼叫 analyze_issue_with_seer。
若 Seer 沒有給出可行的修正建議,
改用步驟 2 拿到的 stack trace 自行分析程式碼、
定位根因所在的檔案與函式。

步驟 4 - 本機修復:
只處理「根因明確、修改範圍小」的 issue(跳過需要
架構調整或影響多個模組的問題,改走步驟 6 的 fallback)。
在本機修改對應程式碼,接著執行專案既有的測試指令,
確認測試全數通過才進入下一步;測試沒過就放棄這個
issue、改走步驟 6。

步驟 5 - 開 PR(Gitea,透過 gitea-mcp):
a. 呼叫 pull_request_read(method: list, state: open)
檢查 owner/repo 是否已有相同 issue 的開啟中 PR,
有的話跳過,避免重複開單。
b. git checkout -b fix/issue-<issue-id>-<date> main
commit 訊息包含 Sentry issue ID。
git push 到 Gitea。
c. 呼叫 pull_request_write(method: create):- owner/repo - head: fix/issue-<issue-id>-<date> - base: main - title: "fix: <根因摘要>" - body:
"Sentry issue: <issue 連結>
Trace ID: <trace id>

        根因: <Seer 或自行分析的結論>
        修改內容: <變更摘要>
        測試結果: 已跑過既有測試並通過"

d. 每次執行最多開 2 個 PR,超過就停止並在最後總結說明。

步驟 6 - 無法修復時(fallback):
若 Seer 與自行分析都無法定位可行修正,或修改範圍過大、
或測試沒通過,改呼叫 issue_write(method: create)
在 Gitea 開一個 issue,內容包含 Sentry issue 連結、
trace ID、已知線索,標記給人工處理,不要硬修。

執行完畢後,用一段文字總結:處理了幾個 issue、開了幾個 PR、
有幾個轉成 fallback issue,並列出每個 PR / issue 的連結。
Enter fullscreen mode Exit fullscreen mode

需要替換的是前面幾行的這 3 個:

Sentry 組織 slug: your-org-slug
Sentry 專案 slug: your-project
Gitea repo: Gitea 專案網址
Enter fullscreen mode Exit fullscreen mode

前 2 個值可以在 Sentry 後台取得。

第 3 個值就是 Gitea 上的專案取得。

送出後,Claude Code 會詢問執行的時間,提供後就會建立完成。

建議是建立完成後,執行一次,看還會遇到什麼問題。

建立好的排程,會出現在「Routines」裡:

Claude Code 自動排程 Routine 建立成功介面

Claude Code 自動排程 Routine 建立成功介面


進階整合:搭配 CodiumAI PR-Agent 實現 Gitea 自動 Code Review

最後再搭配這篇,就會在有 PR 時自動再做一次 Code Review:

CodiumAI PR-Agent,在 Gitea 上用 AI 來 Code Review

Top comments (0)