androidbuild-mcp について
androidbuild-mcpは、Androidアプリやツールチェーンを扱うエージェント向けのMCPサーバーです。Gradleのビルドとテストに加え、デバイス管理、デプロイ、UI自動化、ログ確認をまとめて行えます。
主な機能
- 01ビルド、テスト、Lint、カバレッジ
- 02エミュレーターとデバイスの管理
- 03APKのインストールとアプリ操作
- 04UI確認、スクリーンショット、操作
- 05Logcatの取得とクラッシュ確認
- 06Composeプロジェクトのひな型作成
活用シーン
- 01エージェント経由でAndroidプロジェクトをビルド、テスト
- 02アプリをデプロイしてエミュレーターを自動操作
- 03アプリのクラッシュや絞り込んだデバイスログを確認
- 04Composeの初期プロジェクトを生成
MCP 対応
stdio経由でMCPクライアントにAndroid開発およびデバイス操作ツールを提供します。ビルド、テスト、デプロイ、UI自動化、ログ確認に対応します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
53掲載時のツール一覧 · 3 週間前に更新
このツールにパラメーターはありません。
詳細
AndroidBuildMCP
AI エージェントに Android を直接操作させましょう。AndroidBuildMCP は、あらゆる MCP クライアント(Claude Code、Cursor、...)から、実際の Android アプリのビルド、デプロイ、操作、デバッグを可能にする MCP サーバーです。読みやすいエラーを出力する Gradle ビルド、エミュレーター管理、adb によるデプロイ、logcat のキャプチャ、UI の完全な自動化に対応しています。
クイックスタート
必要なもの:Node 18 以降、Android SDK(ANDROID_HOME またはデフォルトのインストール先)、Gradle ビルド用の JDK 17 以降。
インストール手順は不要です。初回実行時に npx がサーバーを取得します。
Claude Code
claude mcp add androidbuild -- npx -y @asjackson/androidbuild-mcp
その他の MCP クライアント
{
"mcpServers": {
"androidbuild": {
"command": "npx",
"args": ["-y", "@asjackson/androidbuild-mcp"]
}
}
}
代わりにソースから実行する
git clone https://github.com/dev-jackson/androidbuild-mcp.git
cd androidbuild-mcp
npm install && npm run build
claude mcp add androidbuild -- node /absolute/path/to/androidbuild-mcp/dist/index.js
次に、エージェントに doctor を実行するよう依頼してください。SDK、adb、エミュレーター、Java、接続済みデバイスを確認し、不足しているものを正確に知らせます。
エージェントにできること
- ビルドとテスト —
build_appはコンパイルし、何千行もの Gradle のログの代わりに、簡潔なfile:line形式のコンパイラーエラーを返します。test_app/test_instrumentedは解析済みの成功/失敗の概要を返します。Lint、クリーン、カバレッジ(Kover/Jacoco)にも対応しています。 - エミュレーターの管理 — AVD の一覧表示、作成、起動(完全な起動を待ってシリアルを返します)、データ消去、終了ができます。スクリーンショット用に、GPS の位置、ダークモード、見栄えのよいデモ用ステータスバーを設定できます。
- デプロイ —
build_runは 1 回の呼び出しでコンパイル、インストール、起動を行います。adb によるインストール/アンインストール/データ消去/アプリ情報の取得に対応し、接続デバイスが 1 台だけの場合は適切なデバイスを自動選択します。 - 画面の確認 —
snapshot_uiは、タップ座標付きの名前付き要素を簡潔なリストとして返します(Compose のセマンティクスを統合し、ノイズを除去します)。screenshotは画像を返します。annotate: trueを指定すると、ビジョン機能を使って番号付きの枠を描画し、画像内のテキストや WebView の内容も検出します。 - 画面の操作 — タップ、スクロール、スワイプ、ドラッグ、長押し、入力(キーボードに対応し、クリア/送信も可能)、ハードウェアキー操作ができます。また、要素が表示されるまでポーリングする
wait_for_uiにも対応しています。 - ログの確認 — アプリでフィルタリングしたバックグラウンドの logcat キャプチャ、一度限りのダンプ、スタックトレース用のクラッシュバッファに対応しています。
- 新しいアプリの開始 —
scaffold_android_projectは、そのままビルドできる最小限の Compose プロジェクトを生成します。
セッションのデフォルト値(session_set_defaults)を使うと、プロジェクト、モジュール、バリアント、デバイスを一度設定するだけで、以降の呼び出しでは引数を指定せずに使えます。
ツールリファレンス
stdio 経由で 53 個のツールを利用できます。各ツールはプレーンな引数を受け取り、テキスト(screenshot の場合は画像)を返します。
環境とプロジェクト
| ツール | 説明 |
|---|---|
doctor | SDK、adb、エミュレーター、avdmanager、Java、接続済みデバイスを確認し、不足しているものを報告します |
discover_projects | 指定したパス以下にある Android/Gradle プロジェクトを検索します |
list_modules | settings.gradle(.kts) で宣言されているモジュールを一覧表示します |
list_variants | モジュールのビルドバリアントを一覧表示します |
get_app_id | モジュールの applicationId を読み取ります |
show_gradle_config | Gradle、AGP、Kotlin、バージョンカタログのエントリーを表示します |
セッションのデフォルト値
| ツール | 説明 |
|---|---|
session_set_defaults | 以降のすべての呼び出しで使用するプロジェクト、モジュール、バリアント、シリアル番号、appId のデフォルト値を設定します |
session_show_defaults | 現在のデフォルト値を表示します |
session_clear_defaults | すべてのデフォルト値、または指定したキーのみをクリアします |
ビルド、テスト、品質
| ツール | 説明 |
|---|---|
build_app | APK をビルドし、コンパイラーエラーを簡潔な file:line 形式で返します |
build_run | 1 回の呼び出しでビルド、インストール、起動を行います |
test_app | JVM 単体テストを実行し、解析済みの合格/不合格の概要を表示します |
test_instrumented | デバイス上でインストルメンテーションテストを実行します |
lint | Android Lint を実行し、レポートの概要を表示します |
clean | gradle clean を実行します |
get_apk_path | ビルドせずに最新の APK を探します |
stop_gradle | プロジェクトの Gradle デーモンを停止します |
get_coverage_report | Kover/Jacoco を実行し、パッケージごとの行カバレッジの概要を表示します |
get_file_coverage | 1 つのソースファイルのカバレッジ対象/対象外の行を表示します |
デバイスとエミュレーター
| ツール | 説明 |
|---|---|
list_devices | シリアル番号、状態、モデル、Android バージョン、API レベルとともにデバイスを一覧表示します |
list_avds | AVD と、それぞれの起動状態を一覧表示します |
boot_emulator | AVD を起動し、完全に起動するまで待機して、シリアル番号を返します |
kill_emulator | 実行中のエミュレーターを終了します |
create_avd | インストール済みのシステムイメージから AVD を作成します |
delete_avd | AVD を削除します |
set_emulator_location | GPS の位置を設定します |
set_appearance | ダークモード/ライトモードを切り替えます |
statusbar_demo_mode | スクリーンショット用にステータスバーを整えます |
アプリのライフサイクル
| ツール | 説明 |
|---|---|
install_app | APK をインストールします(adb install -r) |
launch_app | ランチャーアクティビティを解決して、アプリケーション ID で起動します |
stop_app | 実行中のアプリを強制停止します |
uninstall_app | アプリをアンインストールします |
clear_app_data | アプリのデータをリセットし、新規インストール時の状態に戻します |
get_app_info | バージョン、target/min SDK、インストール先パス、実行中の PID を表示します |
UI 自動化
| ツール | 説明 |
|---|---|
snapshot_ui | UI を名前付き要素として、正確なタップ座標とともに出力します |
screenshot | 画面をキャプチャします。annotate: true を指定すると、番号付きの枠を描画します |
tap_element | 前回の注釈付きスクリーンショットにある要素 #N をタップします |
tap | ピクセル座標または画面に対する割合で指定した位置をタップします |
scroll | 安全なスワイプを計算して、指定した方向にスクロールします |
swipe | 2 点間をスワイプします |
drag | ある点から別の点へドラッグします |
long_press | 1000 ms 押し続けます |
type_text | キーボードが表示されるまで待機して、フォーカス中のフィールドにテキストを入力します |
key_press | BACK、HOME、ENTER、DPAD_*、または任意のキーコードを押します |
key_sequence | 複数のキーを順番に押します |
wait_for_ui | 要素が表示されるまでポーリングします |
ログと録画
| ツール | 説明 |
|---|---|
get_logs | アプリやタグでフィルタリングできる、1 回限りの logcat ダンプを取得します |
get_crash_logs | Java 例外、ネイティブクラッシュ、ANR を含むクラッシュバッファーを取得します |
start_log_capture | バックグラウンドで logcat のファイルへの記録を開始します |
stop_log_capture | 記録を停止し、ファイルと末尾の行を返します |
record_video_start | 画面録画を開始します(最大 3 分) |
record_video_stop | 録画を停止し、MP4 を取得します |
スキャフォールディング
| ツール | 説明 |
|---|---|
scaffold_android_project | そのままビルドできる最小構成の Compose アプリを作成します |
正確なタップ
adb 側の座標はすべて同じ座標空間(デバイスのピクセル)を使用しますが、MCP クライアントではスクリーンショットが拡大・縮小表示されることがよくあります。画像を見てピクセル位置を目測すると、タップ位置がずれてしまいます。対象を正確にタップする安全な方法は 3 つあります。
snapshot_ui— 名前付きの各要素について、デバイスピクセル上の正確な中心座標を返します。推奨される方法です。screenshot { annotate: true }+tap_element { element: N }— 画像上に描かれた番号でタップします。対応付けは元の PNG 上で解決されるため、クライアント側の拡大・縮小でずれることはありません。tap { xPct, yPct }— 画面に対する割合(0〜1)を指定します。long_press/swipe/dragでも使用できます。解像度に依存しません。
実際のピクセル座標が分かっている場合は、tap { x, y } も引き続き使用できます。
信頼性
リリース前に、実際のエミュレーターと実際のプロジェクトで、通常のケースから境界ケースまで各ツールをテストしました。シナリオごとの検証結果はqa-results.mdにあります。エージェントのワークフローで誤作動を防ぐための詳細をいくつか紹介します。
type_textは文字を入力する前にソフトキーボードの表示を待機します(そうしないと、フィールドにフォーカスした直後に入力した場合、最初の数文字が通知されずに失われます)。scrollは画面サイズに基づいて、長くゆっくりとしたスワイプを行います。短く速いスワイプは、一部のリストで無視されることがあります。ランチャーで必要となるlong_pressの長押し時間は 1000 ミリ秒です。- 画面外へのタップは無視されず、実際の画面サイズを示すエラーとして返されます。
- テキスト量の多い画面(電子書籍の WebView など)は、コンテキストがあふれないように出力を制限しています。代わりに
snapshot_ui { filter }で検索できます。 - ビルド/テスト/デバイスのエラーは、次に呼び出すツールを示す、短く実行可能なメッセージとして返されます。
オプション
- Google の Android CLIを使うと、
screenshot { annotate: true }が利用できます。doctorを実行すると、お使いの OS 用のインストーラーコマンドが 1 行で表示されます。 - ADBKeyboard IMEを使うと、ASCII 以外の文字を
type_textで入力できます(adb 単体では ASCII のみ対応します)。APK を一度インストールすれば、サーバーが自動的に使用します。
開発
npm install
npm test # unit tests (no real processes spawned)
npm run dev # run the server from source
npm run build # compile to dist/
ライセンス
MIT — LICENSEを参照してください。
概念面ではXcodeBuildMCPに着想を得ていますが、Android ツールチェーンを中心に独自に実装しています。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。