8
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Firebase MCP + Dart MCP + Claude Code で Crashlytics のエラー修正を高速化したメモ

8
Last updated at Posted at 2025-12-16

はじめに

Crashlytics のエラー対応を簡略化したかったので、Firebase MCP と Flutter and Dart MCP を Claude Code に接続し、
クラッシュ取得 → コード特定 → 修正案 → テスト生成 まで一連で行えるワークフローを作りました。

社内共有用のメモですが、同じことを試す人の参考になればと思います。

概要

  • Firebase MCP:Crashlytics のイシュー取得でエラー調査
  • Dart MCP:スタックトレースから該当コードを特定、自動テスト実行
    • analyze_filesについて少し深堀り。
  • Claude Code:修正案、再現テスト生成
    • Claude Codeのスラッシュコマンドでエラー調査の手作業をまとめて短縮

背景

Crashlytics のエラー対応では、次の作業に時間がかかっていました:

  • スタックトレースから該当コードを探す
  • 根本原因の整理
  • 再現テストの作成と修正

MCP使えばFirebase、Dartの情報をそのままClaudeに渡すことで、調査スピードがかなり上がったのでまとめておきます。

なぜDart and Flutter MCPを利用するのか?

まずDart and Fltter MCPでは様々なToolが使えます。
https://github.com/dart-lang/ai/tree/main/pkgs/dart_mcp_server

今回の分析で利用する analyze_files は、なんとなくflutter analyzeと同じことするのかなと思ったらどうやら違うようで、もっと便利なものらしいです。
(以下AIでanalyze_filesの機能をコードレベルで解析した結果)
できること:

  • ファイルを読み込む
  • 構文解析(AST)
  • クラス / 関数 / 変数などの構造化データ生成
  • シンボル参照情報を返す
  • Claude がコードを誤解しないための補助情報を渡す

できないこと:

  • 型チェック(null safety / 型エラー / 未定義参照)
  • lint
  • analyzer plugin
  • パッケージ依存の解決
  • 正式な静的解析としてのエラーレポート

つまり、
コードの“正しさ”を検証するのは flutter analyzeで、
analyze_filesは「AI がコードを理解しやすくするための構造化ツール」という認識で良さそう。これは障害調査等でかなり使えそうですね。

Firebase MCPとDart and Flutter MCP の導入

詳細な説明やClaude以外での導入方法は割愛します。

Claude Code の settings.json で有効化します。

"enabledPlugins": {     
    "firebase@firebase": true   
}

Firebase CLI のログインが必要です。
firebase login

続いてDart and Flutter MCPです。

以下のコマンドでClaudeにmcpを追加

claude mcp add-json dart '{"command":"dart","args":["mcp-server","--force-roots-fallback"]}' --scope user

接続確認:

claude mcp list

Claude Codeのスラッシュコマンドでフローを固定

今回は/analyze-crashlytics コマンドを作成しました。
以下のフローで構成してみます。

ここに格納:.claude/commands/analyze-crashlytics.md

  1. イシュー一覧取得
  2. 分析対象の選択(ここでイシューの中から修正する箇所を選択することができる)
  3. スタックトレースからコード特定
  4. 原因分析
  5. 修正 diff 生成
  6. 再現テスト生成
  7. 静的解析・テスト実行
  8. レポート出力

各修正は人が判断を行うべきなので、自動で修正しないよう設定しています。

結果

今回は元々原因がわかっている事象に対して調査を行ってもらいました。

問題なく情報、エラー概要、発生箇所、根本原因の調査、修正案とテストコード案を出してくれ、人による評価を行ったところかなり精度も高いです。

原因になっている場所のリンクも貼られているため特定のスピードがかなり早いのが良い。
crashrepo-qiita.png

Flutter and Dart MCP使わなかった場合も比較

MCP を使わずに同様の調査も行いました。
エラーの原因そのものの特定については、MCPを使わなくても結論はほぼ同じでした。

ただし、根本原因となっているコード位置の特定精度は、MCPを使った場合の方が明らかに高かったです。(Flutterに対する解像度が高い)

※ テストについての評価
生成されたテストコード自体の内容は概ね妥当でした。
しかし、元々のコードがテストを行えるようなコードではなくすべての調査でテスト実行が失敗という結果に...

現在のコードは構造上の問題(依存関係、DIもできていない)が多いので当たり前の結果とも言えます。
これはAgentが悪いというより、既存コードのアーキテクチャの影響が大きい結果だと感じました。

まとめ

Firebase MCP と Dart MCP を組み合わせることで、Crashlytics のエラー分析が効率化できました。

  • イシュー取得
  • コード位置の特定
  • 修正提案
  • テスト生成
  • 静的解析による検証

やっていること自体はシンプルですが、
ここまでが 1 コマンドで流れるようになり、手作業で行っていた部分はかなり減りました。
裏で調査させておけるのがとても良い。
更に、障害が発生した場合にも、Crashlytics→解析のフローを踏めるので障害発生時の調査も早くなりました。(実体験)

一方で、すべてのフローが成功したわけではなく、元のコードのアーキテクチャに強く依存することも分かりました。今回で更にそこの重要性を意識するきっかけにもなりました。

AgentやMCPは前提となる設計が整っていれば、業務効率を大きく引き上げられると感じているため、皆さんも色々試しながら業務効率化を目指しましょう。

8
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?