espresso-mcp について
espresso-mcpは、Android端末やエミュレーターの操作をMCPサーバー経由で提供する、Androidアプリのテストに取り組む開発者向けのプロジェクトです。エミュレーター管理、アプリ操作、UI操作のツールを備えています。
主な機能
- 01AVDと稼働中エミュレーターの一覧表示
- 02エミュレーターの起動と停止
- 03アプリのインストールと管理
- 04UI階層と現在のActivityの確認
- 05タップ、スワイプ、テキスト入力の再現
- 06スクリーンショットと画面録画
活用シーン
- 01アプリテスト用のAndroidエミュレーターを準備
- 02端末へのAPKのインストールと起動
- 03テスト中に画面のUI階層を確認
- 04ジェスチャーとテキスト入力を自動化
MCP 対応
espresso-mcpは、Androidエミュレーターと接続端末の操作をツールとして公開し、設定および挨拶のリソースも提供するMCPサーバーです。stdioまたはSSEモードで実行できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ツール一覧はまだ取得されていません
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
espresso-mcp
Espresso Android Test Framework 向けの MCP サーバーです。テスト機能の強化と開発ワークフローの最適化を目的に作られています。
インストール
- Python 3.x
- uv:
pip install uv
# Run in stdio mode
uvx espresso-mcp
# Run in sse mode
uvx espresso-mcp --sse
使用方法
- Github Copilot の場合:以下の JSON 設定を
.vscode/mcp.jsonファイルに追加します。
{
"servers": {
"espresso-mcp": {
"command": "uvx",
"args": ["espresso-mcp"],
"env": {}
}
}
}
- Claude の場合:以下の JSON 設定を
claude_desktop_config.jsonファイルに追加します。
{
"mcpServers": {
"terminal": {
"command": "uvx",
"args": ["espresso-mcp", "--timeout-ms", "30000"]
}
}
}
- OpenAI SDK を使用する場合
from openai import OpenAI
client = OpenAI()
resp = client.responses.create(
model="gpt-4.1",
tools=[
{
"type": "mcp",
"server_label": "espresso-mcp",
"server_url": "http://localhost:8000/sse",
"require_approval": "never",
},
],
input="Open Teams App",
)
print(resp.output_text)
利用可能なツール
espresso-mcp プロジェクトでは、以下のツールを利用できます。
- list_avds:利用可能なすべての Android Virtual Devices(AVD)を一覧表示します。
- list_emulators:実行中のすべての Android エミュレーターを一覧表示します。
- start_emulator:名前を指定して Android エミュレーターを起動します。
- kill_emulator:指定した Android エミュレーターを終了します。
- dump_ui_hierarchy:接続された Android デバイスの UI 階層を取得します。
- open_uri:接続された Android デバイスで URI を開きます。
- list_apps:接続された Android デバイスにインストールされているアプリを一覧表示します。
- install_app:接続された Android デバイスに APK をインストールします。
- start_app:接続された Android デバイスで指定したアプリを起動します。
- stop_app:接続された Android デバイスで指定したアプリを停止します。
- uninstall_app:接続された Android デバイスからアプリをアンインストールします。
- clear_app_data:接続された Android デバイス上の指定したアプリのデータを消去します。
- take_screenshot:接続された Android デバイスのスクリーンショットを撮影します。
- record_screen:指定した時間、接続された Android デバイスの画面を録画します。
- press_button:接続された Android デバイスでボタンの押下をシミュレートします。
- type_text:接続された Android デバイスにテキストを入力します。
- clear_and_type_text:接続された Android デバイス上のテキストをすべて消去し、新しいテキストを入力します。
- replace_text:接続された Android デバイス上の現在のテキストを消去して新しいテキストを入力し、置き換えます。
- tap:接続された Android デバイス上の指定した座標でタップをシミュレートします。
- swipe:接続された Android デバイス上で指定した方向へのスワイプ操作を実行します。
- dump_current_activity:接続された Android デバイスの現在のアクティビティ名を取得します。
リソース
以下のリソースを利用できます。
- config://app:静的な設定データを取得します。
- greeting://{name}:名前に合わせた挨拶を取得します。
ローカルセットアップ
- Python 3.x
- uv:
pip install uv
# Install dependencies
uv sync
# OR
uv sync --frozen --all-extras --dev
# Run Server
uv run espresso-mcp
# Run in Dev Mode
uv run mcp dev src/espresso_mcp/server.py
デバッグ
- MCP Inspector を使用します。
# Install MCP Inspector
yarn global add @modelcontextprotocol/inspector
# Test MCP Server
yarn run @modelcontextprotocol/inspector python server.py
リントとテスト
# Lint
uv run ruff check
# Tests
uv run pytest
公開
# Build the package
uv build
uv build --wheel
uv build --no-sources
# Upload to PyPI
uv publish
開発メモ
uv tool install espresso-mcp
# OR
uvx espresso-mcp
uv init espresso-mcp
uv add "mcp[cli]"
uv run mcp dev server.py
uv tool run espresso-mcp
uv run pre-commit install
pre-commit run --all-files
コメント
Markdown 対応
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。