mcpField
S
sauce-api-mcp

sauce-api-mcp

ローカル
github.com/saucelabs開発ツール10今日更新

sauce-api-mcp について

sauce-api-mcpは、デバイスクラウドテストを管理するチーム向けにSauce LabsのテストサービスへMCP経由でアクセスするサーバーです。コアAPIサーバーと、公式OpenAPI仕様からツールを動的生成するRDCサーバーを含みます。

主な機能

  1. 01アカウント、チーム、権限の確認
  2. 02デバイスの検索と利用状況の確認
  3. 03ジョブ、ビルド、ログ、テスト資産の調査
  4. 04アップロード済みアプリとトンネルの管理
  5. 05OpenAPI仕様からRDCツールを生成
  6. 06大きなリストレスポンスの制限

活用シーン

  1. 01最近のテスト失敗の調査
  2. 02利用可能な実機の検索
  3. 03ビルド性能とジョブ成果物の確認
  4. 04Sauce Connectトンネルの監視

MCP 対応

2つのMCPサーバーを提供します。コアサーバーはSauce Labsのアカウント、デバイス、ジョブ、ビルド、ストレージ、トンネルAPIに対応し、RDCサーバーはAPIツールを動的に生成します。どちらもMCPクライアントに設定できます。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"saucelabs-sample-test-frameworks-sauce-api": {
"command": "uvx",
"args": [
"sauce-api-mcp"
],
"env": {
"SAUCE_USERNAME": "<SAUCE_USERNAME>",
"SAUCE_ACCESS_KEY": "<SAUCE_ACCESS_KEY>"
}
}
}
}
起動コマンドuvx sauce-api-mcp
設定が必要な環境変数
SAUCE_USERNAME
SAUCE_ACCESS_KEYシークレット

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

パッケージ
pypisauce-api-mcp1.0.1

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Sauce Labs MCP サーバー

Sauce Labs のテストプラットフォームと包括的に統合する Model Context Protocol(MCP)サーバーです。この パッケージには、AI アシスタントが自然言語での会話を通じて Sauce Labs のデバイスクラウドを操作し、テストジョブを管理し、 ビルドを分析し、テストインフラストラクチャを監視できる、相互に補完する 2 つの MCP サーバーが含まれています。

ヒント

ホスト型で、より多機能なオプションをお求めですか? Sauce MCP は、 Sauce Labs が https://mcp.saucelabs.com でホストする公式 MCP サーバーです。インストールや更新は不要で、 このパッケージより幅広いツールを提供します。これには、実デバイスのライブ制御(タップ、入力、スクリーンショット、アプリの インストール/起動)、ネットワークキャプチャ、AI を活用したテストケースの作成、実行、スケジュール設定が含まれます。設定手順については、 AI クライアントを接続するをご覧ください。

サーバー

このパッケージには、用途に合わせて最適化された 2 つの独立した MCP サーバーが含まれています。

sauce-api-mcp(コアサーバー) — アカウント管理、デバイス検索、ジョブ分析、ビルド、ストレージ、トンネルに対応した Sauce Labs API の完全な統合です。

sauce-api-mcp-rdc(RDC サーバー) — Real Device Cloud(RDC)に特化したサーバーです。起動時に、公式 Sauce Labs OpenAPI 仕様から FastMCP の OpenAPIProvider を使って MCP ツールを動的に生成するため、コードを変更せずにツールセットを常に最新の状態に保てます。バイナリペイロード、セッションのライフサイクル、アプリのインストール状況のポーリングなど、特別な処理が必要なエンドポイント向けに、手書きのツールも少数含まれています。

LLM クライアントで両方のサーバーを同時に設定すると、Sauce Labs の全機能を利用できます。

機能

🚀 主な機能
  • アカウント管理:アカウントの詳細、チーム情報、ユーザー権限を確認できます
  • デバイスクラウドへのアクセス:300 台以上の実デバイス(iOS、Android)と仮想マシンを閲覧できます
  • テストジョブ管理:最近のジョブを取得し、テスト結果を分析して、失敗をデバッグできます
  • ビルドの監視:ビルドのステータスを追跡し、ジョブの一覧を確認して、テストスイートを分析できます
  • ストレージ管理:アップロードしたアプリやテスト成果物を管理できます
  • トンネルの監視:Sauce Connect トンネルのステータスと設定を確認できます
🔧 高度な機能
  • リアルタイムのデバイスステータス:データセンター全体のデバイスの空き状況と使用状況を監視できます
  • クロスプラットフォームテスト:Virtual Device Cloud(VDC)と Real Device Cloud(RDC)の両方に対応しています
  • テスト分析:ログ、動画、パフォーマンス指標など、ジョブの詳細情報を確認できます
  • チームでの共同作業:適切なアクセス制御を備えた複数チームのサポート
  • 動的な RDC API:sauce-api-mcp-rdc は起動時に OpenAPI 仕様から最新の RDC v2 エンドポイントを自動検出します。 ネットワークに接続できない場合は、キャッシュされた仕様をフォールバックとして使用します
  • レスポンスの整形:大きな API のリストレスポンスは自動的に切り詰められ、LLM のコンテキスト予算を抑えます( SAUCE_MCP_MAX_RESPONSE_ITEMS で設定可能)
  • ファイルの安全性:デバイスとのファイルの送受信は ~/.sauce-mcp/files/ 内に制限され、パストラバーサルを防ぎます

前提条件

  • Python 3.10+
  • pip
  • API アクセスが可能な Sauce Labs アカウント
  • Claude Desktop、Gemini CLI、Goose、またはその他の MCP 対応 LLM クライアント

インストール

PyPI からパッケージをインストールします。

pip install sauce-api-mcp

これにより、両方のサーバーがインストールされ、コマンドラインのエントリーポイントが登録されます。

  • sauce-api-mcp — コアサーバー
  • sauce-api-mcp-rdc — RDC OpenAPI サーバー

インストールを確認します。

which sauce-api-mcp
which sauce-api-mcp-rdc

LLM クライアントの設定

Claude Desktop(Mac / Linux / Windows)
  1. Claude Desktop の設定ファイルを確認します:

    • macOS:~/Library/Application Support/Claude/claude_desktop_config.json
    • Windows:%APPDATA%\Claude\claude_desktop_config.json
    • Linux:~/.config/Claude/claude_desktop_config.json
  2. Python のインストール先にある bin ディレクトリを確認します:

    python3 -c "import sys; print(sys.prefix + '/bin')"
    
  3. 両方のサーバーを設定に追加します:

    {
      "mcpServers": {
        "sauce-api-mcp-core": {
          "command": "/path/to/bin/sauce-api-mcp",
          "env": {
            "SAUCE_USERNAME": "your-sauce-username",
            "SAUCE_ACCESS_KEY": "your-sauce-access-key"
          }
        },
        "sauce-api-mcp-rdc": {
          "command": "/path/to/bin/sauce-api-mcp-rdc",
          "env": {
            "SAUCE_USERNAME": "your-sauce-username",
            "SAUCE_ACCESS_KEY": "your-sauce-access-key"
          }
        }
      }
    }
    
  4. Claude Desktop を再起動して、サーバーを読み込みます。

Gemini CLI

~/.gemini/settings.json に追加します:

{
  "mcpServers": {
    "sauce-api-mcp-core": {
      "command": "/path/to/bin/sauce-api-mcp",
      "env": {
        "SAUCE_USERNAME": "your-sauce-username",
        "SAUCE_ACCESS_KEY": "your-sauce-access-key"
      }
    },
    "sauce-api-mcp-rdc": {
      "command": "/path/to/bin/sauce-api-mcp-rdc",
      "env": {
        "SAUCE_USERNAME": "your-sauce-username",
        "SAUCE_ACCESS_KEY": "your-sauce-access-key"
      }
    }
  }
}
Goose

~/.config/goose/config.yaml に追加します:

sauce-api-mcp-core:
  cmd: /path/to/bin/sauce-api-mcp
  description: Sauce Labs MCP (Core)
  enabled: true
  envs:
    SAUCE_USERNAME: your-sauce-username
    SAUCE_ACCESS_KEY: your-sauce-access-key
  type: stdio

sauce-api-mcp-rdc:
  cmd: /path/to/bin/sauce-api-mcp-rdc
  description: Sauce Labs MCP (RDC)
  enabled: true
  envs:
    SAUCE_USERNAME: your-sauce-username
    SAUCE_ACCESS_KEY: your-sauce-access-key
  type: stdio
環境変数(代替方法)

認証情報を設定ファイルに追加する代わりに、環境変数としてエクスポートできます:

export SAUCE_USERNAME="your-sauce-username"
export SAUCE_ACCESS_KEY="your-sauce-access-key"

その後、設定から env ブロックを省略します。両方のサーバーが自動的に環境変数を読み込みます。

設定

必須の環境変数
変数説明
SAUCE_USERNAMESauce Labs のユーザー名
SAUCE_ACCESS_KEYSauce Labs のアクセスキー(アカウント設定にあります)
オプションの環境変数
変数デフォルト説明
SAUCE_REGIONUS_WESTデータセンターのリージョン:US_WEST、US_EAST、EU_CENTRAL
SAUCE_MCP_MAX_RESPONSE_ITEMS100切り捨て前に返されるリスト項目の最大数(RDC サーバー)
Sauce Labs の認証情報を取得する
  1. Sauce Labs アカウントにログインします
  2. Account → User Settings に移動します
  3. Username と Access Key をコピーします

インストールのトラブルシューティング

「Command not found: sauce-api-mcp」

エントリポイントスクリプトが PATH にありません。フルパスを指定する方法を使用します:

python3 -m pip list | grep sauce-api-mcp
python3 -c "import sys; print(sys.prefix + '/bin/sauce-api-mcp')"
MCP クライアントでの「ENOENT: no such file or directory」

MCP クライアントが別の Python 環境を使用しています。解決方法:

  1. 絶対フルパスを使用する(推奨) — which sauce-api-mcp ではなく、python3 -c "import sys; print(sys.prefix + '/bin/sauce-api-mcp')" で表示されたパスを設定に指定します
  2. モジュール呼び出し(代替方法):
    "command": "python3",
    "args": ["-m", "sauce_api_mcp.main"]
    

プロンプトの例

  • 「最近のテスト失敗を表示して」
  • 「利用可能な iPhone 16 デバイスを探して」
  • 「最新のビルドのパフォーマンスを分析して」
  • 「Samsung デバイスでセッションを開始して、アプリをインストールして」
  • 「現在、どのトンネルが実行中?」

利用可能なツール

コアサーバー(sauce-api-mcp)
アカウントと組織
ツール説明
get_account_info現在のユーザーアカウント情報を取得します
lookup_users組織内のユーザーを検索します
get_userユーザーの詳細情報を取得します
lookup_teams組織内のチームを検索します
get_teamチームの詳細を取得します
list_team_members特定のチームのメンバー全員を一覧表示します
lookup_service_accountsサービスアカウントを一覧表示します
get_service_accountサービスアカウントの詳細を取得します
get_my_active_team認証済みユーザーのアクティブなチームを取得します
デバイス管理
ツール説明
get_devices_statusすべてのデバイスと現在のステータスを一覧表示します
get_specific_device特定のデバイスの詳細情報を取得します
get_private_devicesアカウントで利用可能なプライベートデバイスを一覧表示します
テストジョブ
ツール説明
get_recent_jobs最近のテストジョブを取得します
get_job_details特定のジョブに関する詳細情報を取得します
get_real_device_jobs実機上のアクティブなジョブを一覧表示します
get_specific_real_device_job特定の実機ジョブの詳細を取得します
get_specific_real_device_job_assetジョブのアセット(ログ、動画、スクリーンショット)をダウンロードします
ビルド
ツール説明
lookup_buildsフィルターを指定してビルドを検索します
get_build特定のビルドに関する詳細情報を取得します
get_build_for_jobジョブに関連付けられたビルドを取得します
lookup_jobs_in_buildビルド内のすべてのジョブを一覧表示します
ストレージ
ツール説明
get_storage_filesアップロード済みのアプリケーションファイルを一覧表示します
get_storage_groupsアプリのストレージグループを一覧表示します
get_storage_groups_settingsストレージグループの設定を取得します
upload_file_to_storageアプリファイルをSauce Storageにアップロードします
update_storage_group_settingsアプリグループの設定(再署名、インストルメンテーションなど)を更新します
トンネル
ツール説明
get_tunnels_for_userアクティブなSauce Connectトンネルを一覧表示します
get_tunnel_information特定のトンネルの詳細を取得します
get_current_jobs_for_tunnelトンネルを使用しているジョブ数を確認します
get_tunnel_version_downloadsSauce Connectの各バージョンのダウンロードURLを取得します
テストアセットとログ
ツール説明
get_test_assetsVDCジョブのテスト成果物を取得します
get_log_json_fileVDCジョブのテスト実行ログを構造化形式で取得します
get_network_har_fileフィルタリングしたHARネットワークキャプチャーデータを取得します
filter_har_dataキャッシュ済みのHARデータを効率的にフィルタリングします(再ダウンロードを回避)
RDC サーバー(sauce-api-mcp-rdc)

RDC サーバーは、Sauce Labs RDC v2 OpenAPI仕様からツールを自動生成します。仕様の進化に伴い、ツールの全リストは変化しますが、以下のカテゴリは常に含まれます。

セッション管理
ツール説明
createSession実機を割り当て、ACTIVEセッションを返します。ACTIVEになるかタイムアウトするまでポーリングします(約55秒)
listSessionsオプションのフィルタリングを指定して、現在のデバイスセッションを一覧表示します
deleteSessionセッションを終了し、デバイスをプールに返却します
get_session_details特定のセッションの詳細情報をすべて取得します
デバイスの検出
ツール説明
listDevicesOS/モデルで絞り込んで、デバイスカタログ全体を閲覧します
list_device_statusデバイスのリアルタイムの利用可能状況を取得します
アプリ管理
ツール説明
installAppデバイスでアプリのインストールを開始します(インストール ID を返します)
waitForAppInstallationインストール状況をポーリングします。FINISHED になるまで繰り返し呼び出します
launchAppインストール済みのアプリを起動します
uninstallAppデバイスからアプリを削除します
list_app_installations進行中または最近のアプリのインストールを一覧表示します
install_app_from_storageSauce Storage からアプリをインストールします
デバイス操作
ツール説明
take_screenshot現在のデバイス画面をキャプチャします
open_url_or_deeplinkデバイスで URL またはディープリンクを開きます
execute_shell_commandadb シェルコマンドを実行します(Android)
applyDeviceSettingsデバイス設定(向き、ロケールなど)を変更します
ファイル操作
ツール説明
push_file_to_deviceローカルファイルをデバイスにアップロードします(~/.sauce-mcp/files/ のみに制限)
pull_file_from_deviceデバイスからファイルをダウンロードします
listFilesデバイスのディレクトリ内のファイルを一覧表示します
removeFileデバイスからファイルを削除します
statFileデバイス上のファイルまたはディレクトリのメタデータを取得します
ネットワークとプロキシ
ツール説明
proxy_httpデバイスのプロキシ経由で HTTP リクエストを転送します
startNetworkCapture / stopNetworkCaptureネットワークトラフィックをキャプチャします
setNetworkProfile / setNetworkConditionsネットワーク状況をシミュレートします
listNetworkProfiles利用可能なネットワークプロファイルを一覧表示します
resetNetworkConditions通常の接続状態に戻します
Appium
ツール説明
startAppiumServerデバイスと同じ場所でホストされる Appium サーバーを起動します
getAppiumServerStatusAppium の実行状況を確認し、エンドポイント URL を取得します
listAppiumVersions利用可能な Appium のバージョンを一覧表示します
launchWebDriverAgentiOS デバイスで WDA を起動します
getWebDriverAgentStatusWDA のステータスを確認します

開発環境のセットアップ

前提条件
  • Python 3.10+
  • uv パッケージマネージャー
  • Git
クローンとセットアップ
git clone https://github.com/saucelabs/sauce-api-mcp.git
cd sauce-api-mcp
uv sync

これにより、仮想環境を作成し、すべての依存関係(テスト用の追加依存関係を含む)を編集可能モードでインストールします。

プロジェクト構成
sauce-api-mcp/
├── src/sauce_api_mcp/
│   ├── main.py              # Core server — hand-written MCP tools
│   ├── rdc_dynamic.py       # RDC server — OpenAPIProvider + hand-written tools
│   ├── models.py            # Pydantic response models
│   └── shared/              # Shared utilities
├── tests/                   # Test suite
├── server.json              # MCP Registry manifest
├── pyproject.toml           # Package config, entry points, PSR release config
└── uv.lock                  # Locked dependencies
サーバーをローカルで実行する
uv run sauce-api-mcp
uv run sauce-api-mcp-rdc

どちらも Error: This server is not meant to be run interactively と表示します。これは想定どおりです(ターミナルではなく、MCP クライアントと標準入出力経由で通信します)。

ローカルの開発チェックアウトを MCP クライアントに指定するには、次のようにします。

{
  "command": "/path/to/sauce-api-mcp/.venv/bin/sauce-api-mcp"
}
テストの実行

テストは次の3つのグループに分かれています。

# Integration tests (no live credentials required)
uv run pytest -m "not live and not slow"

# Live tests (require SAUCE_USERNAME + SAUCE_ACCESS_KEY)
uv run pytest -m "live and not slow"

# Slow tests (allocate real devices — takes minutes)
uv run pytest -m "slow"

# Full suite
uv run pytest
依存関係の追加
uv add httpx
uv add --dev pytest-asyncio

CI/リリースワークフロー

継続的インテグレーション

main を対象とするすべてのプルリクエストでは、build.yml を介して3つのジョブが順番に実行されます。

  1. test — Python 3.10、3.11、3.12 での統合テスト(並列実行)
  2. test-live — Python 3.12 でのライブテスト(test の後に実行)
  3. test-slow — Python 3.12 での低速テスト(test-live の後に実行)
リリース

GitHub Actions の Release ワークフロー(publish.yml)から手動でリリースを実行します。

  1. Actions → Release → Run workflow に移動します
  2. リリースの種類として patch、minor、major、prerelease のいずれかを選択します
  3. プレリリースの場合は、必要に応じてトークン(alpha、beta、rc)を設定します

その後、ワークフローによって次の処理が行われます。

  • python-semantic-release を使用して、pyproject.toml と server.json のバージョンを更新します
  • v* の Git タグと、自動生成された変更履歴を含む GitHub リリースを作成します
  • 安定版リリースを PyPI と MCP Registry に公開します
  • プレリリース(alpha/beta/rc)は TestPyPI のみに公開します

コントリビューション

コントリビューションを歓迎します!ガイドラインについては、CONTRIBUTING.md をご覧ください。

ヘルプ

変更履歴

リリースと変更の全履歴については、 GitHub Releases ページをご覧ください。

v1.1.0
  • sauce-api-mcp と sauce-labs-mcp(RDC OpenAPI)を統合し、単一のモノレポパッケージにしました
  • RDC に特化したサーバー用に sauce-api-mcp-rdc エントリーポイントを追加しました
  • RDC サーバーを非推奨の FastMCPOpenAPI から OpenAPIProvider + FastMCP(fastmcp 3.x)に移行しました
  • workflow_dispatch と python-semantic-release によるリリースワークフローを自動化しました。リリースの種類は作成者が選択します( patch/minor/major/prerelease)
  • CI を3つの順次実行ステージに分割しました:統合テスト(マトリックス 3.10–3.12)→ ライブテスト → 低速テスト
  • 再現性のあるインストールのため、依存関係を uv.lock で固定しました
v1.0.3
  • Apache License 2.0 に更新しました(以前は MIT)
v1.0.2
  • 公式 MCP Registry に登録しました
  • Python 3.9 のサポートを追加しました
v1.0.1
  • インストール手順を改善し、README を全面的に改訂しました
v1.0.0
  • Sauce Labs API との完全な統合を備えた初回リリース

テストコミュニティのために ❤️ を込めて作成

ライセンス

Apache 2.0(バージョン 1.1.0 以降)

1.0.3 より前のバージョンは MIT License の下でリリースされました。

保証の免責

本ソフトウェアは「現状有姿」で提供され、明示的か黙示的かを問わず、商品性、特定目的への適合性、および権利侵害がないことの保証を含みますが、これらに限定されない、いかなる種類の保証も伴いません。いかなる場合も、作者または著作権者は、本ソフトウェアまたは本ソフトウェアの使用その他の取引に起因する、または関連する、契約、不法行為その他の理由によるあらゆる請求、損害その他の責任について、一切責任を負いません。

責任の制限

いかなる場合においても、SAUCE LABS, INC.は、本ソフトウェアの使用に起因するいかなる損害(代替の商品またはサービスの調達、使用、データもしくは利益の損失、または事業の中断を含みますが、これらに限定されません)について、その発生原因や責任の法理(契約、厳格責任、不法行為(過失その他を含みます)を含みますが、これらに限定されません)を問わず、またそのような損害の可能性について知らされていた場合であっても、直接的、間接的、付随的、特別、懲罰的、または結果的な損害に対して一切責任を負いません。

一般的な使用

MCP サーバーは、一般に公開されている API との連携を促進するための、無料のオープンソースツールとして提供されています。ユーザーは、Apache License 2.0 の条件に従って、ソフトウェアを自由に変更および配布できます。

本ソフトウェアを使用することで、お客様は自己の責任において使用していること、および適用されるすべての法令を遵守する責任を負うことを認めるものとします。

補償

お客様は、本ソフトウェアへのアクセスまたは使用に起因する、あるいは何らかの形で関連する、あらゆる請求、責任、損害、損失、または費用(合理的な弁護士費用および訴訟費用を含みます)について、Sauce Labs, Inc.(「Sauce Labs」)、その役員、取締役、従業員、および代理人を補償し、損害を与えないことに同意するものとします。

これには、以下が含まれますが、これらに限定されません。

  • サードパーティの LLM プロバイダーとのやり取り: 本ソフトウェアが、LLM とのやり取りに一般公開されている API を利用していることを認めるものとします。お客様は、サードパーティの LLM サービスの利用について単独で責任を負います。これには、LLM プロバイダーの利用規約の遵守、およびトークン料金などの利用に伴う費用が含まれます。Sauce Labs は、サードパーティの LLM プロバイダーのコンテンツ、プライバシーポリシー、または慣行を管理せず、それらについて一切責任を負いません。

  • LLM が生成するコンテンツ: MCP サーバーおよびその基盤となる LLM の使用を通じて生成、受信、または送信されるコンテンツについて、お客様が単独で責任を負います。Sauce Labs は、お客様または第三者がサーバーを通じて行う通信の内容を承認せず、管理もしません。

  • お客様のコードおよび変更: MCP サーバーを基にお客様が作成する変更、機能強化、または派生物はお客様自身のものであり、それらの性能および使用により生じる可能性のあるあらゆる責任について、お客様が単独で責任を負います。

コメント

MCP は初めてですか?

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

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