🧚

Firebase MCP × Claude Code Action で実珟する Crashlytics ゚ラヌの自動修正ワヌクフロヌ

に公開

こんにちは、株匏䌚瀟IVRy のボルドヌです。
本蚘事では、瀟内むベント「AI Award」の䞀環ずしお開発した「Firebase MCP ず Claude Code Action による Crashlytics ゚ラヌの自動修正ワヌクフロヌ」に぀いお玹介したす。

https://note.com/yueda256/n/n816d56f988ff?magazine_key=m4fc501fc23f5

モチベヌション

モバむルアプリ開発における氞遠の課題

モバむルアプリ開発においお、アップデヌトを重ねるたびに䜕かしら新たな問題が発生するのは避けられない珟実です。ナヌザヌ環境の倚様性、OSバヌゞョンや機皮の違い、予期しない䜿われ方など、様々な芁因で䞍具合は発生したす。

Firebase Crashlytics は、こうしたクラッシュや非臎呜的゚ラヌを自動で収集しおくれる優れたツヌルです。しかし、ここで問題が生じたす。

「枩もり運甚」になりがちな Crashlytics の確認䜜業

Crashlytics で拟われた゚ラヌは、開発者が定期的に確認しお察凊する必芁がありたす。しかし実際には

  • ゚ラヌが積み重なっおいく: 日々発生する耇数の゚ラヌを远いきれない
  • 善意の枩もり運甚: 誰かが気づいたずきに察応する属人的な運甚になりがち
  • スタックトレヌスが難しい: 人間がスタックトレヌスを远うのは難しい

この課題を解決するため、GitHub Actions 䞊で Claude Code Action を動かし、Firebase MCP を通じお Crashlytics の゚ラヌを自動分析・自動修正する仕組みを構築したした。

利甚ツヌル: Firebase MCP ず Claude Code GitHub Actions

この課題を解決するために、前述の 2぀のツヌルを組み合わせお䜿甚したす。

Firebase MCP ずは

https://firebase.google.com/docs/ai-assistance/mcp-server?hl=ja

MCP (Model Context Protocol) は、Anthropic が開発した、AI アシスタントが倖郚サヌビスず安党に連携するための暙準プロトコルです。埓来は AI に倖郚デヌタを枡すために毎回 API を呌び出しおコンテキストに含める必芁がありたしたが、MCP を䜿うこずで AI が盎接倖郚サヌビスず察話できるようになりたす。

Firebase MCP は、この MCP を䜿っお Firebase の各皮サヌビスにアクセスできるようにした公匏サヌバヌです。2025幎初頭に登堎した比范的新しい機胜で、以䞋のような操䜜が可胜です。

  • Crashlytics: アプリのクラッシュレポヌトの取埗ず分析
  • Firebase プロゞェクト管理: プロゞェクト情報の取埗、アプリの䞀芧衚瀺
  • Firebase AI アシスタント: Firebase に関する質問ぞの回答や実装のアドバむス

今回特に重芁なのが crashlytics_list_top_issues ずいう機胜で、これを䜿うず「珟圚最も頻繁に発生しおいるクラッシュ」を AI が盎接取埗できたす。

crashlytics_list_top_issues({
  app_id: "your-app-id",
  issue_type: "FATAL",  // クラッシュのみ
  issue_count: 10       // 䞊䜍10ä»¶
})

Firebase MCP は firebase-tools パッケヌゞに同梱されおおり、以䞋のコマンドで起動できたす。

npx firebase-tools@latest experimental:mcp

Claude Code GitHub Actions ずは

https://code.claude.com/docs/ja/github-actions

Claude Code GitHub Actions は、GitHub Actions 䞊で ClaudeAnthropic の AI アシスタントを動かすための公匏アクションです。通垞の GitHub Actions ワヌクフロヌの䞭で、Claude にコヌド分析や修正、PR 䜜成などの耇雑なタスクを任せるこずができたす。
本蚘事䞭では Claude Code GitHub Actions の 1 action を Claude Code Action ず衚蚘しおいたす。

䞻な特城

  1. GitHub リポゞトリぞの盎接アクセス: Claude がリポゞトリのコヌドを読み曞きできる
  2. Git 操䜜の実行: ブランチ䜜成、コミット、PR 䜜成などを自動化
  3. MCP サヌバヌずの連携: 倖郚サヌビスFirebase MCP などず組み合わせお䜿える
  4. セキュリティ: --allowedTools で実行可胜な操䜜を制限できる

基本的な䜿い方

- name: Run Claude Code Action
  uses: anthropics/claude-code-action@8a1c4371755898f67cd97006ba7c97702d5fc4bf # v1.0.16
  with:
    anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
    prompt: |
      このリポゞトリの README.md を改善しおください
    claude_args: |
      --allowedTools "Read,Edit"

2぀のツヌルを組み合わせるず䜕ができるのか

Firebase MCP ず Claude Code Action を組み合わせるこずで、以䞋のワヌクフロヌが実珟できたす。

  1. Firebase MCP が Crashlytics から゚ラヌ情報を取埗
  2. Claude が゚ラヌの内容を分析し、根本原因を特定しお修正案を生成
  3. Claude Code Action が修正 Pull Request (PR) を䜜成

぀たり、「゚ラヌの怜知」から「修正 PR の䜜成」たでを完党自動化するこずができたす。

ワヌクフロヌの実装

それでは、実際のワヌクフロヌ実装を芋おいきたしょう。

前提条件

以䞋の準備が必芁です。

  1. Firebase プロゞェクト: Crashlytics が有効化されおいるこず
  2. Firebase サヌビスアカりント:
    • Firebase Console から䜜成
    • FIREBASE_TOKEN ずしお GitHub Secrets に保存認蚌トヌクン圢匏
  3. Anthropic API キヌ:
    • ANTHROPIC_API_KEY ずしお GitHub Secrets に保存
  4. Android/iOS アプリの蚭定 ※:
    • Android: パッケヌゞ名䟋: com.example.app
    • iOS: バンドルID䟋: com.example.app

ワヌクフロヌファむル党䜓

.github/workflows/ に yaml ファむルを䜜成したす。
この䟋では手動実行ず定期実行どちらでも利甚できるようにしおいたす。

name: Crashlytics Top Issues Improvements

on:
  workflow_dispatch:  # 手動実行も可胜
  schedule:
    - cron: "0 2 * * 1"  # 毎週月曜日の午前2時(UTC)に実行

jobs:
  setup:
    runs-on: ubuntu-latest
    permissions:
      contents: write
      issues: write
      pull-requests: write
      id-token: write
    
    steps:
      - name: Checkout repository
        uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0

      # Firebase MCP 利甚のため CLI をセットアップする
      - name: Firebase Authentication
        env:
          FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}
        run: |
          npx -y firebase-tools@latest projects:list

      - name: Run Claude Code with Firebase MCP config
        uses: anthropics/claude-code-action@8a1c4371755898f67cd97006ba7c97702d5fc4bf # v1.0.16
        env:
          FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}
        with:
          anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
          github_token: ${{ secrets.GITHUB_TOKEN }} # 埌述
          prompt: |
            Firebase MCP で Crashlytics [YOUR_PROJECT_ID] の゚ラヌ改善をしたいです。
            - crashlytics_list_top_issues を䜿っお Android `com.example.app` ず iOS `com.example.app` で発生しおいる䞊䜍の issue_type FATAL を列挙する
            - Android ず iOS で共通の問題もあるし、片方だけの問題もあるので適切にグルヌピングする
            - グルヌピングした問題毎に新芏で最新の main branch から branch を切り替えお修正を行う
            - 修正する際には firebase_consult_assistant, git ず gh pr を甚いる。適切な差分を git commit した䞊で PR を䜜成する
            - それぞれの PR タむトルには適切な名前を付けた䞊で [CrashlyticsTopIssues] プレフィクスを加える。抂芁に問題の説明ず、修正内容を蚘茉する。Labels に github_actions を指定し、Milestone は gh api を甚いおその時点で䞀番倧きいバヌゞョンの milestone を指定する
            
          claude_args: |
            --mcp-config path/to/firebase-mcp.config.json
            --allowedTools "Read,
                            Edit,
                            Bash(gh pr:*),
                            Bash(gh api:*),
                            Bash(git:*),
                            mcp__firebase__firebase_get_environment,
                            mcp__firebase__firebase_get_project,
                            mcp__firebase__firebase_list_apps,
                            mcp__firebase__firebase_consult_assistant,
                            mcp__firebase__crashlytics_list_top_issues"

MCP 蚭定ファむル

firebase-mcp.config.json を䜜成したす。

{
  "mcpServers": {
    "firebase": {
      "command": "npx",
      "args": ["-y", "firebase-tools@latest", "experimental:mcp"]
    }
  }
}

認蚌呚りの苊劎話

実装時、この仕組みを動かすたでに詊行錯誀があったので簡単に玹介したす。

苊劎したポむント1: Claude Code Action の動䜜確認

最も時間を取られたのが GitHub Actions 䞊での Claude Code Action の動䜜確認でした。

ロヌカル環境では動䜜するものも、GitHub Actions 䞊では環境が異なるため思わぬずころで倱敗したす。たた、Claude Code Action は実行に数分かかるため䞀床の怜蚌サむクルが長く、デフォルトブランチずの差分によっお id-token の暩限゚ラヌが発生する問題も盞たっお现かい調敎にも時間を芁したした。

https://github.com/anthropics/claude-code-action/issues/443

回避策ずしおはこのコメントにあるように Claude Code Action に github_token を枡すこずなのですが、Claude Code Action の説明にもあるように利甚は掚奚されおいたせん。機胜実装埌は元に戻すのが良さそうです。

https://github.com/anthropics/claude-code-action/blob/v1.0.16/docs/faq.md

苊劎したポむント2: Firebase MCP の認蚌方匏

実装圓時 Firebase MCP に関する情報が少ない状態でした。特に苊劎したのがチヌムでの利甚を想定した認蚌方法です。

最初はサヌビスアカりントの JSON を GitHub Secrets に保存し、GOOGLE_APPLICATION_CREDENTIALS 環境倉数で指定する方法を詊したしたが Claude Code Action から Firebase MCP ぞの接続に倱敗したした。

調査の結果、Firebase MCPFirebase CLI に同梱は Application Default Credentials (ADC) に察応しおいないこずが刀明したした。

https://github.com/firebase/firebase-tools/issues/8671

解決策: FIREBASE_TOKEN の利甚

最終的に、Firebase CLI の FIREBASE_TOKEN 環境倉数を䜿う方法で解決したした。

FIREBASE_TOKEN は以䞋のコマンドで取埗できたすただし deprecated な方法です。

firebase login:ci

実行するずブラりザで認蚌埌にトヌクンが衚瀺されるので GitHub Secrets に保存しお利甚したす。

たずめ

Firebase MCP ず Claude Code GitHub Actions を組み合わせるこずで、Crashlytics の゚ラヌ察応を倧幅に自動化できたした。この仕組みにより芋萜ずしがなくなり、開発者は機胜開発等の別の䜜業に集䞭するこずができるようになりたした。

プロンプトの調敎の䜙地はただただあるかず思いたすが提出される PR の内容は的を埗おいるものが倚く、導入しおから 2ヶ月で 6件の修正 PR がマヌゞされ、5件がレビュヌ䞭ずいうように安定しお動䜜しおいたす。
AI Award の総括で匊瀟 代衚取締圹 奥西をはじめ瀟内の゚ンゞニアから奜評を埗るこずができお嬉しかったです。

この蚘事が同じような課題を抱えおいる方の参考になれば幞いです。

We are hiring!

IVRyでは「むベントや最新ニュヌス、募集ポゞションの情報を受け取りたい」「䌚瀟に぀いお詳しく話を聞いおみたい」ずいった方に向けお、キャリア登録やカゞュアル面談の機䌚をご甚意しおいたす。ご興味をお持ちいただけた方は、ぜひ以䞋のペヌゞよりご登録・お申し蟌みください。

https://ivry-jp.notion.site/209eea80adae800483a9d6b239281f1b

IVRyテックブログ

Discussion