🚀 TestingBot MCP Server
TestingBotの公式Model Context Protocol (MCP) サーバーの実装です。このサーバーにより、AIアシスタントがTestingBotのテストインフラストラクチャと対話できるようになり、会話型インターフェースを通じてテスト、ブラウザ、デバイスなどを管理できます。
✨ 主な機能
- 🖥️ ライブテスト - 実際のブラウザとデバイスで対話型の手動テストセッションを開始します。
- 🌐 ブラウザとデバイス管理 - 利用可能なブラウザと実デバイスを照会します。
- 🧪 テスト管理 - 包括的な詳細を持つテストの作成、取得、更新、削除を行います。
- 📦 ストレージ管理 - モバイルアプリファイル (APK、IPA、ZIP) のアップロードと管理を行います。
- 📸 スクリーンショットテスト - クロスブラウザのスクリーンショットを撮影します。
- 🏗️ ビルド管理 - テストをビルドにまとめます。
- 👤 ユーザーアカウント - アカウント情報の表示と更新を行います。
- 👥 チーム管理 - チーム設定とチームメンバーの管理を行います。
- 🔌 Chrome DevTools Protocol - 高度なブラウザ自動化のためのCDPセッションを作成します。
- 🚇 トンネル管理 - ローカルテスト用のTestingBotトンネルを管理します。
📦 インストール
クイックセットアップ
MCPサーバーをグローバルにインストールします。
npm install -g @testingbot/mcp-server
または、プロジェクトに追加します。
npm install @testingbot/mcp-server
設定
環境変数
TestingBotの資格情報を環境変数として設定します。
export TESTINGBOT_KEY="your-api-key"
export TESTINGBOT_SECRET="your-api-secret"
または、プロジェクトに.envファイルを作成します。
TESTINGBOT_KEY=your-api-key
TESTINGBOT_SECRET=your-api-secret
Claude Desktop
~/Library/Application Support/Claude/claude_desktop_config.json (macOS) または %APPDATA%/Claude/claude_desktop_config.json (Windows) に追加します。
{
"mcpServers": {
"testingbot": {
"command": "npx",
"args": ["-y", "@testingbot/mcp-server"],
"env": {
"TESTINGBOT_KEY": "your-api-key",
"TESTINGBOT_SECRET": "your-api-secret"
}
}
}
}
VS Code (Continue拡張機能付き)
.continue/config.json に追加します。
{
"mcpServers": [
{
"name": "testingbot",
"command": "npx",
"args": ["-y", "@testingbot/mcp-server"],
"env": {
"TESTINGBOT_KEY": "your-api-key",
"TESTINGBOT_SECRET": "your-api-secret"
}
}
]
}
Cursor
.cursor/mcp.json に追加します。
{
"mcpServers": {
"testingbot": {
"command": "npx",
"args": ["-y", "@testingbot/mcp-server"],
"env": {
"TESTINGBOT_KEY": "your-api-key",
"TESTINGBOT_SECRET": "your-api-secret"
}
}
}
}
利用可能なツール
ライブテスト
startLiveSession
TestingBotで対話型のライブテストセッションを開始します。手動テスト用の実際のブラウザまたはモバイルデバイスを開きます。
パラメーター:
platformType: "desktop" または "mobile"
desiredURL: 開くURL
desiredOS: オペレーティングシステム (デスクトップの場合はWindows、Mac、Linux;モバイルの場合はandroid、ios)
desiredOSVersion: OSバージョン
desiredBrowser (デスクトップのみ): ブラウザ名 (chrome、firefox、safari、edge、ie)
desiredBrowserVersion (デスクトップのみ): ブラウザバージョンまたは "latest"
desiredDevice (モバイルのみ): デバイス名 (例: "iPhone 14"、"Galaxy S23")
例のプロンプト:
"Start a live testing session on Chrome latest with Windows 11 for https://example.com"
"Open https://myapp.com on iPhone 14 with iOS 16 for manual testing"
startDesktopLiveSession
デスクトップブラウザのライブテストセッションを開始する便利なツールです。
パラメーター:
desiredURL: 開くURL
desiredOS: Windows、Mac、またはLinux
desiredOSVersion: OSバージョン
desiredBrowser: chrome、firefox、safari、edge、またはie
desiredBrowserVersion (オプション): ブラウザバージョンまたは "latest" (デフォルト: latest)
例のプロンプト:
"Start desktop live session on Firefox 120 with Mac Monterey for https://example.com"
startMobileLiveSession
モバイルデバイスのライブテストセッションを開始する便利なツールです。
パラメーター:
desiredURL: 開くURL
desiredOS: androidまたはios
desiredOSVersion: OSバージョン
desiredDevice: デバイス名
例のプロンプト:
"Start mobile live session on Galaxy S23 with Android 13 for https://example.com"
ブラウザとデバイス管理
getBrowsers
テスト用の利用可能なブラウザとプラットフォームのリストを取得します。
パラメーター:
type (オプション): "web" または "mobile" でフィルタリングします。
例のプロンプト:
"Show me all available browsers for testing"
"What mobile browsers are available?"
getDevices
利用可能なモバイルデバイス (実デバイスとシミュレーター) のリストを取得します。
例のプロンプト:
"List all available iOS devices"
"Show me Android devices for testing"
テスト管理
getTests
ページネーション付きで最近のテストのリストを取得します。
パラメーター:
offset (オプション): ページネーションのオフセット (デフォルト: 0)
limit (オプション): 取得するテストの数 (デフォルト: 10、最大: 100)
例のプロンプト:
"Show me my last 20 tests"
"Get recent test results"
getTestDetails
特定のテストに関する包括的な詳細を取得します。
- テストのステータス、ブラウザ、プラットフォーム、およびタイミング情報
- ビデオ録画のURLとスクリーンショットのURL
- Selenium、ブラウザ、およびAppiumのログ
- コマンドとタイムスタンプ付きのテスト実行手順
- ネットワークログ、例外ログ、およびJSエラー
パラメーター:
例のプロンプト:
"Get details for test session abc123"
"Show me the video and logs for test xyz789"
"Show execution steps for test abc123"
updateTest
テストのメタデータ (名前、ステータス、またはビルドなど) を更新します。
パラメーター:
sessionId: テストのセッションID
name (オプション): テストの新しい名前
status (オプション): "passed" または "failed"
build (オプション): ビルド識別子
extra (オプション): 追加のメタデータ (JSON文字列)
例のプロンプト:
"Mark test abc123 as passed"
"Update test xyz789 with name 'Login Flow Test'"
deleteTest
セッションIDでテストを削除します。
パラメーター:
sessionId: 削除するテストのセッションID
例のプロンプト:
"Delete test abc123"
stopTest
セッションIDで実行中のテストを停止します。
パラメーター:
sessionId: 停止するテストのセッションID
例のプロンプト:
"Stop test abc123"
ビルド管理
getBuilds
ページネーション付きでビルドのリストを取得します。
パラメーター:
offset (オプション): ページネーションのオフセット (デフォルト: 0)
limit (オプション): 取得するビルドの数 (デフォルト: 10、最大: 100)
例のプロンプト:
"Show me my recent builds"
getTestsForBuild
特定のビルドIDに関連付けられたすべてのテストを取得します。
パラメーター:
例のプロンプト:
"Show all tests for build 12345"
deleteBuild
ビルドとそれに関連付けられたすべてのテストを削除します。
パラメーター:
例のプロンプト:
"Delete build 12345"
ストレージ管理
uploadFile
ローカルファイル (APK、IPA、またはZIP) をTestingBotストレージにアップロードします。
パラメーター:
localFilePath: アップロードするファイルのパス
例のプロンプト:
"Upload /path/to/app.apk to TestingBot"
uploadRemoteFile
リモートURLからのファイルをTestingBotストレージにアップロードします。
パラメーター:
remoteUrl: アップロードするファイルのURL
例のプロンプト:
"Upload https://example.com/app.ipa to TestingBot"
getStorageFiles
TestingBotストレージ内のすべてのファイルのリストを取得します。
パラメーター:
offset (オプション): ページネーションのオフセット (デフォルト: 0)
limit (オプション): 取得するファイルの数 (デフォルト: 10、最大: 100)
例のプロンプト:
"Show me all uploaded apps"
deleteStorageFile
TestingBotストレージからファイルを削除します。
パラメーター:
例のプロンプト:
"Delete app tb://app123 from storage"
スクリーンショットテスト
takeScreenshot
複数のブラウザとプラットフォームでURLのスクリーンショットを撮影します。
パラメーター:
url: スクリーンショットを撮影するURL
browsers: ブラウザ構成の配列
browserName: ブラウザ名 (chrome、firefox、safariなど)
version (オプション): ブラウザバージョンまたは "latest"
os: オペレーティングシステム (WIN11、MACなど)
resolution (オプション): 画面解像度 (デフォルト: "1920x1080")
waitTime (オプション): スクリーンショットを撮影する前に待つ秒数 (デフォルト: 5、最大: 60)
fullPage (オプション): 全ページまたはビューポートをキャプチャする (デフォルト: false)
例のプロンプト:
"Take a screenshot of https://example.com on Chrome and Firefox"
"Screenshot my homepage on mobile devices"
retrieveScreenshots
スクリーンショットIDでスクリーンショットの結果を取得します。
パラメーター:
screenshotId: takeScreenshotからのスクリーンショットID
例のプロンプト:
"Get screenshots for job abc123"
getScreenshotList
すべてのスクリーンショットジョブのリストを取得します。
パラメーター:
offset (オプション): ページネーションのオフセット (デフォルト: 0)
limit (オプション): 取得するジョブの数 (デフォルト: 10、最大: 100)
例のプロンプト:
"Show me my recent screenshot jobs"
ユーザー管理
getUserInfo
現在のユーザーアカウント情報 (使用した分、プランの詳細、制限など) を取得します。
例のプロンプト:
"Show my account information"
"How many minutes have I used?"
updateUserInfo
ユーザーアカウント情報を更新します。
パラメーター:
firstName (オプション): 名
lastName (オプション): 姓
email (オプション): メールアドレス
例のプロンプト:
"Update my email to newemail@example.com"
チーム管理
getTeam
チーム情報 (同時実行数の制限、許可された並列VM、モバイルの同時実行数など) を取得します。
例のプロンプト:
"Show my team information"
"What are my team's concurrency limits?"
getUsersInTeam
チーム内のすべてのユーザーをその役割とアクセスレベルとともにリスト表示します。
パラメーター:
offset (オプション): ページネーションのオフセット (デフォルト: 0)
limit (オプション): 取得するユーザーの数 (デフォルト: 10、最大: 100)
例のプロンプト:
"Show me all team members"
"List users in my team"
getUserFromTeam
ユーザーIDで特定のチームメンバーに関する詳細情報を取得します。
パラメーター:
例のプロンプト:
"Show details for user 12345"
Chrome DevTools Protocol (CDP)
createCdpSession
高度なブラウザ自動化のためのChrome DevTools Protocolセッションを作成します。ブラウザに接続するためのWebSocket URLを返します。
パラメーター:
browserName: ブラウザ名 (chrome、firefox、safari、edgeなど)
browserVersion (オプション): ブラウザバージョンまたは "latest" (デフォルト: latest)
platform: オペレーティングシステムプラットフォーム
screenResolution (オプション): 画面解像度 (例: "1920x1080")
name (オプション): セッション名
build (オプション): ビルド識別子
例のプロンプト:
"Create a CDP session on Chrome latest with Windows 11"
"Start a CDP session on Firefox 120 for automation"
トンネル管理
getTunnelList
すべてのアクティブなTestingBotトンネルのリストを取得します。トンネルを使用すると、ファイアウォールの後ろにあるウェブサイトやローカルマシン上のウェブサイトをテストできます。
例のプロンプト:
"Show me all active tunnels"
"List my TestingBot tunnels"
deleteTunnel
IDでアクティブなTestingBotトンネルを削除します。これにより、トンネル接続が終了します。
パラメーター:
例のプロンプト:
"Delete tunnel 12345"
💻 使用例
例1: クロスブラウザテストの実行
User: "Show me all available browsers for web testing"
Assistant: [Lists all web browsers]
User: "Take a screenshot of https://myapp.com on Chrome latest and Firefox latest on Windows 11"
Assistant: [Creates screenshot job and returns ID]
User: "Get the screenshots for job abc123"
Assistant: [Returns screenshot URLs]
例2: モバイルアプリテストの管理
User: "Upload my app from https://example.com/app.apk"
Assistant: [Uploads app and returns tb://app123]
User: "Show me all my uploaded apps"
Assistant: [Lists storage files]
User: "Show me the last 10 tests"
Assistant: [Shows recent test results]
例3: ビルド管理
User: "Show me my recent builds"
Assistant: [Lists recent builds]
User: "Show all tests for build 12345"
Assistant: [Lists tests in that build]
User: "Mark test xyz789 as passed with build name 'Release 1.0'"
Assistant: [Updates test]
例4: チームとトンネル管理
User: "Show me my team information"
Assistant: [Shows team concurrency limits and settings]
User: "List all team members"
Assistant: [Lists all users in the team]
User: "Show me all active tunnels"
Assistant: [Lists active TestingBot tunnels]
例5: CDP自動化
User: "Create a CDP session on Chrome latest with Windows 11"
Assistant: [Creates session and returns WebSocket URL]
User: "Show me test execution steps for session abc123"
Assistant: [Shows detailed command history with timestamps]
開発
セットアップ
git clone https://github.com/testingbot/mcp-server.git
cd testingbot-mcp-server
npm install
cp .env.example .env
コマンド
npm run build
npm run dev
npm test
npm run lint
npm run format
ローカルでの実行
npm run dev
npm start
MCPインスペクターでのテスト
開発中にツールをテストするには、MCPインスペクターを使用します。
npx @modelcontextprotocol/inspector node dist/index.js
その後、ブラウザでhttp://localhost:5173 を開きます。
プロジェクト構造
testingbot-mcp-server/
├── src/
│ ├── index.ts # エントリーポイント
│ ├── server-factory.ts # MCPサーバーのセットアップ
│ ├── config.ts # 構成管理
│ ├── lib/
│ │ ├── types.ts # TypeScriptの型
│ │ ├── constants.ts # 定数と列挙型
│ │ ├── error.ts # エラークラス
│ │ ├── logger.ts # ロギングのセットアップ
│ │ ├── utils.ts # ユーティリティ関数
│ │ └── get-auth.ts # 認証ヘルパー
│ └── tools/
│ ├── browsers.ts # ブラウザとデバイスツール
│ ├── tests.ts # テスト管理ツール
│ ├── builds.ts # ビルド管理ツール
│ ├── storage.ts # ストレージツール
│ ├── screenshots.ts # スクリーンショットツール
│ ├── user.ts # ユーザー管理ツール
│ ├── team.ts # チーム管理ツール
│ ├── cdp.ts # Chrome DevTools Protocolツール
│ ├── tunnels.ts # トンネル管理ツール
│ └── live.ts # ライブテストセッションツール
├── tests/
│ └── tools/ # 単体テスト
├── dist/ # コンパイルされた出力
└── package.json
トラブルシューティング
認証エラー
認証エラーが表示された場合は、次のことを行います。
- https://testingbot.com/members/user/edit であなたの資格情報を確認します。
- 環境変数が正しく設定されていることを確認します。
- 資格情報に余分な空白がないことを確認します。
接続問題
MCPサーバーが接続できない場合は、次のことを行います。
- MCPクライアント (Claude Desktop、VS Codeなど) を再起動します。
- MCPクライアントのログを確認してエラーをチェックします。
- Node.jsのバージョンが >= 18であることを確認します。
ツール実行エラー
ツールが実行できない場合は、次のことを行います。
- サーバーのログを確認して詳細なエラーメッセージをチェックします。
- TestingBotアカウントに十分な権限/クォータがあることを確認します。
- すべての必須パラメーターが提供されていることを確認します。
デバッグロギング
デバッグロギングを有効にするには、LOG_LEVEL環境変数を設定します。
export LOG_LEVEL=debug
または、MCPクライアントの構成で設定します。
{
"mcpServers": {
"testingbot": {
"command": "npx",
"args": ["-y", "@testingbot/mcp-server"],
"env": {
"TESTINGBOT_KEY": "your-api-key",
"TESTINGBOT_SECRET": "your-api-secret",
"LOG_LEVEL": "debug"
}
}
}
}
コントリビューション
コントリビューションは歓迎されます!プルリクエストを自由に送信してください。
- リポジトリをフォークします。
- あなたの機能ブランチを作成します (
git checkout -b feature/amazing-feature)
- 変更をコミットします (
git commit -m 'Add some amazing feature')
- ブランチにプッシュします (
git push origin feature/amazing-feature)
- プルリクエストを開きます。
📄 ライセンス
このプロジェクトはMITライセンスの下でライセンスされています。詳細については、LICENSE ファイルを参照してください。
サポート
関連リンク