mcpField
A
androidbuild-mcp

androidbuild-mcp

ローカル
github.com/dev-jackson開発ツール014 週間前に更新

androidbuild-mcp について

androidbuild-mcpは、Androidアプリやツールチェーンを扱うエージェント向けのMCPサーバーです。Gradleのビルドとテストに加え、デバイス管理、デプロイ、UI自動化、ログ確認をまとめて行えます。

主な機能

  1. 01ビルド、テスト、Lint、カバレッジ
  2. 02エミュレーターとデバイスの管理
  3. 03APKのインストールとアプリ操作
  4. 04UI確認、スクリーンショット、操作
  5. 05Logcatの取得とクラッシュ確認
  6. 06Composeプロジェクトのひな型作成

活用シーン

  1. 01エージェント経由でAndroidプロジェクトをビルド、テスト
  2. 02アプリをデプロイしてエミュレーターを自動操作
  3. 03アプリのクラッシュや絞り込んだデバイスログを確認
  4. 04Composeの初期プロジェクトを生成

MCP 対応

stdio経由でMCPクライアントにAndroid開発およびデバイス操作ツールを提供します。ビルド、テスト、デプロイ、UI自動化、ログ確認に対応します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"dev-jackson-androidbuild": {
"command": "npx",
"args": [
"-y",
"@asjackson/androidbuild-mcp"
]
}
}
}
起動コマンドnpx -y @asjackson/androidbuild-mcp

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@asjackson/androidbuild-mcp0.1.1

ツール

53

掲載時のツール一覧 · 3 週間前に更新

このツールにパラメーターはありません。

詳細

AndroidBuildMCP

npm license

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 の場合は画像)を返します。

環境とプロジェクト

ツール説明
doctorSDK、adb、エミュレーター、avdmanager、Java、接続済みデバイスを確認し、不足しているものを報告します
discover_projects指定したパス以下にある Android/Gradle プロジェクトを検索します
list_modulessettings.gradle(.kts) で宣言されているモジュールを一覧表示します
list_variantsモジュールのビルドバリアントを一覧表示します
get_app_idモジュールの applicationId を読み取ります
show_gradle_configGradle、AGP、Kotlin、バージョンカタログのエントリーを表示します

セッションのデフォルト値

ツール説明
session_set_defaults以降のすべての呼び出しで使用するプロジェクト、モジュール、バリアント、シリアル番号、appId のデフォルト値を設定します
session_show_defaults現在のデフォルト値を表示します
session_clear_defaultsすべてのデフォルト値、または指定したキーのみをクリアします

ビルド、テスト、品質

ツール説明
build_appAPK をビルドし、コンパイラーエラーを簡潔な file:line 形式で返します
build_run1 回の呼び出しでビルド、インストール、起動を行います
test_appJVM 単体テストを実行し、解析済みの合格/不合格の概要を表示します
test_instrumentedデバイス上でインストルメンテーションテストを実行します
lintAndroid Lint を実行し、レポートの概要を表示します
cleangradle clean を実行します
get_apk_pathビルドせずに最新の APK を探します
stop_gradleプロジェクトの Gradle デーモンを停止します
get_coverage_reportKover/Jacoco を実行し、パッケージごとの行カバレッジの概要を表示します
get_file_coverage1 つのソースファイルのカバレッジ対象/対象外の行を表示します

デバイスとエミュレーター

ツール説明
list_devicesシリアル番号、状態、モデル、Android バージョン、API レベルとともにデバイスを一覧表示します
list_avdsAVD と、それぞれの起動状態を一覧表示します
boot_emulatorAVD を起動し、完全に起動するまで待機して、シリアル番号を返します
kill_emulator実行中のエミュレーターを終了します
create_avdインストール済みのシステムイメージから AVD を作成します
delete_avdAVD を削除します
set_emulator_locationGPS の位置を設定します
set_appearanceダークモード/ライトモードを切り替えます
statusbar_demo_modeスクリーンショット用にステータスバーを整えます

アプリのライフサイクル

ツール説明
install_appAPK をインストールします(adb install -r)
launch_appランチャーアクティビティを解決して、アプリケーション ID で起動します
stop_app実行中のアプリを強制停止します
uninstall_appアプリをアンインストールします
clear_app_dataアプリのデータをリセットし、新規インストール時の状態に戻します
get_app_infoバージョン、target/min SDK、インストール先パス、実行中の PID を表示します

UI 自動化

ツール説明
snapshot_uiUI を名前付き要素として、正確なタップ座標とともに出力します
screenshot画面をキャプチャします。annotate: true を指定すると、番号付きの枠を描画します
tap_element前回の注釈付きスクリーンショットにある要素 #N をタップします
tapピクセル座標または画面に対する割合で指定した位置をタップします
scroll安全なスワイプを計算して、指定した方向にスクロールします
swipe2 点間をスワイプします
dragある点から別の点へドラッグします
long_press1000 ms 押し続けます
type_textキーボードが表示されるまで待機して、フォーカス中のフィールドにテキストを入力します
key_pressBACK、HOME、ENTER、DPAD_*、または任意のキーコードを押します
key_sequence複数のキーを順番に押します
wait_for_ui要素が表示されるまでポーリングします

ログと録画

ツール説明
get_logsアプリやタグでフィルタリングできる、1 回限りの logcat ダンプを取得します
get_crash_logsJava 例外、ネイティブクラッシュ、ANR を含むクラッシュバッファーを取得します
start_log_captureバックグラウンドで logcat のファイルへの記録を開始します
stop_log_capture記録を停止し、ファイルと末尾の行を返します
record_video_start画面録画を開始します(最大 3 分)
record_video_stop録画を停止し、MP4 を取得します

スキャフォールディング

ツール説明
scaffold_android_projectそのままビルドできる最小構成の Compose アプリを作成します

正確なタップ

adb 側の座標はすべて同じ座標空間(デバイスのピクセル)を使用しますが、MCP クライアントではスクリーンショットが拡大・縮小表示されることがよくあります。画像を見てピクセル位置を目測すると、タップ位置がずれてしまいます。対象を正確にタップする安全な方法は 3 つあります。

  1. snapshot_ui — 名前付きの各要素について、デバイスピクセル上の正確な中心座標を返します。推奨される方法です。
  2. screenshot { annotate: true } + tap_element { element: N } — 画像上に描かれた番号でタップします。対応付けは元の PNG 上で解決されるため、クライアント側の拡大・縮小でずれることはありません。
  3. 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 ツールチェーンを中心に独自に実装しています。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。