Testingbot Mcp Server
About
TestingBot MCP Server is the official Model Context Protocol (MCP) implementation from TestingBot. It enables AI assistants to interact with TestingBot’s testing infrastructure, allowing users to manage tests, browsers, devices, and more through conversational interfaces…
Details
- Author
- testingbot
- GitHub stars
- 2
- Downloads
- 389
- Categories
- Other, Developer Tools
Jump to
- Live Testing on real browsers and mobile devices
- Query and manage available browsers and devices
- Create, retrieve, update, delete tests with detailed logs
- Upload and manage mobile app files (APK, IPA, ZIP)
- Take cross-browser screenshots
- Organize tests into builds and manage builds
- View and update account and team information
- Drive remote browsers/devices via automation tools (bundled)
- Manage TestingBot tunnels for local testing
Setting up with Highlight
This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:
- Download and install Highlight from highlightai.com/download
- Navigate to the plugins tab and select "Add Custom Plugin"
-
Configure the plugin with the settings below
Plugin Name
Testingbot Mcp ServerCommand (node, npx, python, etc.)Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.
- Enable "Start Automatically" if you want the plugin to start when Highlight launches
From the repository
Install the server globally with npm install -g @testingbot/mcp-server or add it to a project. Authenticate by either running the tb_login tool (OAuth-style browser or device code flow) or by setting TESTINGBOT_KEY and TESTINGBOT_SECRET environment variables. Configure the server in your MCP client (e.g., Claude Desktop, VS Code with Continue, Cursor) using the npx -y @testingbot/mcp-server command and your credentials.
Claude Desktop / Cursor
Paste into your MCP client config file to install this server.
{
"mcpServers": {
"testingbot mcp server": {
"testingbot": {
"command": "npx",
"args": [
"-y",
"@testingbot/mcp-server"
],
"env": {
"TESTINGBOT_KEY": "your-api-key",
"TESTINGBOT_SECRET": "your-api-secret"
}
}
}
}
}
McpServers
{
"testingbot": {
"command": "npx",
"args": [
"-y",
"@testingbot/mcp-server"
],
"env": {
"TESTINGBOT_KEY": "your-api-key",
"TESTINGBOT_SECRET": "your-api-secret"
}
}
}
TestingBot MCP Server
TestingBot's official Model Context Protocol (MCP) server implementation. This server enables AI assistants to interact with TestingBot's testing infrastructure, allowing you to manage tests, browsers, devices, and more through conversational interfaces.
⚡ One-Click Install
Claude Desktop: download mcp-server.mcpb from the releases page and double-click it. Claude will set up the TestingBot MCP server automatically.
After install, set your credentials from TestingBot account settings.
Features
- 🖥️ Live Testing - Start interactive manual testing sessions on real browsers and devices
- 🌐 Browser & Device Management - Query available browsers and real devices
- 🧪 Test Management - Create, retrieve, update, and delete tests with comprehensive details
- 📦 Storage Management - Upload and manage mobile app files (APK, IPA, ZIP)
- 📸 Screenshot Testing - Take cross-browser screenshots
- 🏗️ Build Management - Organize tests into builds
- 👤 User Account - View and update account information
- 👥 Team Management - Manage team settings and team members
- 🔌 Chrome DevTools Protocol - Create CDP sessions for advanced browser automation
- 🚇 Tunnel Management - Manage TestingBot tunnels for local testing
Prerequisites
- Node.js >= 18 (recommended: 22.15.0 or later)
- TestingBot Account with API credentials
- An MCP-compatible client (Claude Desktop, VS Code with Continue, Cursor, etc.)
Installation
Quick Setup
Install the MCP server globally:
npm install -g @testingbot/mcp-server
Or add to your project:
npm install @testingbot/mcp-server
Configuration
Recommended: log in with tb_login (no key/secret to copy)
You don't have to find and paste API credentials. Install the server, leave the
credentials blank, and just ask the agent:
> Log me in to TestingBot.
The agent calls the tb_login tool. It uses OAuth-style browser
authentication — no secret ever leaves the browser — and picks the right
mechanism for your environment automatically:
- Browser (loopback, the default on a desktop): your browser opens to a
TestingBot authorization page. Sign in if needed and click Authorize; the
credentials are captured on a local callback and the agent finishes the
sign-in. Nothing to type. (RFC 8252.)
- Device code (automatic fallback on SSH / remote / dev containers / web):
the tool prints a short URL and code instead:
1. Open the URL in your browser (e.g. https://testingbot.com/device).
2. Enter the code, sign in if needed, and click Authorize.
3. Tell the agent you've authorized — it calls tb_login again to finish.
(RFC 8628.)
You can force a mechanism by passing mode: "loopback" or mode: "device" to
tb_login (the default is "auto").
Your credentials are written to ~/.testingbot/credentials (mode 0600) and
used by every subsequent tool call — no restart and no JSON editing. This works
in any MCP client (VS Code, Cursor, Cline, Claude Desktop, …). To use a different
account, set TESTINGBOT_PROFILE; to relocate the file, set
TESTINGBOT_CONFIG_DIR.
Environment Variables
Alternatively (or for CI, where env vars take precedence over the file), set your
TestingBot credentials as environment variables:
export TESTINGBOT_KEY="your-api-key"
export TESTINGBOT_SECRET="your-api-secret"
Or create a .env file in your project:
TESTINGBOT_KEY=your-api-key
TESTINGBOT_SECRET=your-api-secret
The key also accepts the aliases TB_KEY / TESTINGBOT_USERNAME, and the secret
accepts TB_SECRET / TESTINGBOT_ACCESS_KEY.
How credentials are resolved
Credentials are resolved in this order, highest priority first:
1. Environment variables (above) — both a key and a secret must be set. This
lets CI and per-client config override everything else.
2. The ~/.testingbot/credentials file written by tb_login, for the active
profile (default, or TESTINGBOT_PROFILE).
3. Neither set: the server starts in a degraded mode where every tool except
tb_login reports "Run tb_login to authenticate" — so first run is
self-healing rather than a hard error.
Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %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 (with Continue extension)
Add to .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
Add to .cursor/mcp.json:
{
"mcpServers": {
"testingbot": {
"command": "npx",
"args": ["-y", "@testingbot/mcp-server"],
"env": {
"TESTINGBOT_KEY": "your-api-key",
"TESTINGBOT_SECRET": "your-api-secret"
}
}
}
}
🤖 Let an AI Agent Drive a Remote Browser or Device
This server already includes the automation tools from @testingbot/automation-mcp — installing this package gives the agent the ability to actually drive a remote browser or real mobile device on TestingBot's grid, not just manage resources.
Just ask:
> Open Safari 17 on macOS on TestingBot. Navigate to example.com and click the "More information" link.
The agent will call tb_openBrowser, tb_navigate, tb_snapshot, tb_click — and surface a live-view URL so you can watch it in real time. For real iOS / Android devices, the bundled appium-mcp child gives the agent the full appium_* toolbelt (appium_session_management, appium_gesture, appium_set_value, appium_screenshot, ~30 more) — no separate install or config required. Just ask: _"Open an iPhone 15 Pro on iOS 17 on TestingBot, tap the login button, take a screenshot."_ See the @testingbot/automation-mcp README for the full tool list, caveats (sessions are metered), and configuration options.
Available Tools
Live Testing
startLiveSession
Start an interactive live testing session on TestingBot. Opens a real browser or mobile device for manual testing.
Parameters:
- platformType: "desktop" or "mobile"
- desiredURL: The URL to open
- desiredOS: Operating system (Windows, Mac, Linux for desktop; android, ios for mobile)
- desiredOSVersion: OS version
- desiredBrowser (desktop only): Browser name (chrome, firefox, safari, edge, ie)
- desiredBrowserVersion (desktop only): Browser version or "latest"
- desiredDevice (mobile only): Device name (e.g., "iPhone 14", "Galaxy S23")
Example prompts:
> "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
Convenience tool to start a desktop browser live testing session.
Parameters:
- desiredURL: The URL to open
- desiredOS: Windows, Mac, or Linux
- desiredOSVersion: OS version
- desiredBrowser: chrome, firefox, safari, edge, or ie
- desiredBrowserVersion (optional): Browser version or "latest" (default: latest)
Example prompt:
> "Start desktop live session on Firefox 120 with Mac Monterey for https://example.com"
startMobileLiveSession
Convenience tool to start a mobile device live testing session.
Parameters:
- desiredURL: The URL to open
- desiredOS: android or ios
- desiredOSVersion: OS version
- desiredDevice: Device name
Example prompt:
> "Start mobile live session on Galaxy S23 with Android 13 for https://example.com"
Browser & Device Management
getBrowsers
Get list of available browsers and platforms for testing.
Parameters:
- type (optional): Filter by "web" or "mobile"
Example prompt:
> "Show me all available browsers for testing"
> "What mobile browsers are available?"
getDevices
Get list of available mobile devices (real devices and simulators).
Example prompt:
> "List all available iOS devices"
> "Show me Android devices for testing"
Test Management
getTests
Retrieve a list of recent tests with pagination.
Parameters:
- offset (optional): Pagination offset (default: 0)
- limit (optional): Number of tests to retrieve (default: 10, max: 100)
Example prompt:
> "Show me my last 20 tests"
> "Get recent test results"
getTestDetails
Get comprehensive details about a specific test including:
- Test status, browser, platform, and timing information
- Video recording URL and screenshot URLs
- Selenium, browser, and Appium logs
- Test execution steps with commands and timestamps
- Network logs, exception logs, and JS errors
Parameters:
- sessionId: The session ID of the test
Example prompt:
> "Get details for test session abc123"
> "Show me the video and logs for test xyz789"
> "Show execution steps for test abc123"
updateTest
Update test metadata such as name, status, or build.
Parameters:
- sessionId: The session ID of the test
- name (optional): New name for the test
- status (optional): "passed" or "failed"
- build (optional): Build identifier
- extra (optional): Additional metadata (JSON string)
Example prompt:
> "Mark test abc123 as passed"
> "Update test xyz789 with name 'Login Flow Test'"
deleteTest
Delete a test by session ID.
Parameters:
- sessionId: The session ID of the test to delete
Example prompt:
> "Delete test abc123"
stopTest
Stop a running test by session ID.
Parameters:
- sessionId: The session ID of the test to stop
Example prompt:
> "Stop test abc123"
Build Management
getBuilds
Get a list of builds with pagination.
Parameters:
- offset (optional): Pagination offset (default: 0)
- limit (optional): Number of builds to retrieve (default: 10, max: 100)
Example prompt:
> "Show me my recent builds"
getTestsForBuild
Get all tests associated with a specific build ID.
Parameters:
- buildId: The build ID
Example prompt:
> "Show all tests for build 12345"
deleteBuild
Delete a build and all its associated tests.
Parameters:
- buildId: The build ID to delete
Example prompt:
> "Delete build 12345"
Storage Management
uploadFile
Upload a local file (APK, IPA, or ZIP) to TestingBot storage.
Parameters:
- localFilePath: Path to the file to upload
Example prompt:
> "Upload /path/to/app.apk to TestingBot"
uploadRemoteFile
Upload a file from a remote URL to TestingBot storage.
Parameters:
- remoteUrl: URL of the file to upload
Example prompt:
> "Upload https://example.com/app.ipa to TestingBot"
getStorageFiles
List all files in TestingBot storage.
Parameters:
- offset (optional): Pagination offset (default: 0)
- limit (optional): Number of files to retrieve (default: 10, max: 100)
Example prompt:
> "Show me all uploaded apps"
deleteStorageFile
Delete a file from TestingBot storage.
Parameters:
- appUrl: The app_url of the file to delete
Example prompt:
> "Delete app tb://app123 from storage"
Screenshot Testing
takeScreenshot
Take screenshots of a URL across multiple browsers and platforms.
Parameters:
- url: The URL to screenshot
- browsers: Array of browser configurations
- browserName: Browser name (chrome, firefox, safari, etc.)
- version (optional): Browser version or "latest"
- os: Operating system (WIN11, MAC, etc.)
- resolution (optional): Screen resolution (default: "1920x1080")
- waitTime (optional): Seconds to wait before screenshot (default: 5, max: 60)
- fullPage (optional): Capture full page or viewport (default: false)
Example prompt:
> "Take a screenshot of https://example.com on Chrome and Firefox"
> "Screenshot my homepage on mobile devices"
retrieveScreenshots
Retrieve screenshot results by screenshot ID.
Parameters:
- screenshotId: The screenshot ID from takeScreenshot
Example prompt:
> "Get screenshots for job abc123"
getScreenshotList
Get a list of all screenshot jobs.
Parameters:
- offset (optional): Pagination offset (default: 0)
- limit (optional): Number of jobs to retrieve (default: 10, max: 100)
Example prompt:
> "Show me my recent screenshot jobs"
User Management
getUserInfo
Get current user account information including minutes used, plan details, and limits.
Example prompt:
> "Show my account information"
> "How many minutes have I used?"
updateUserInfo
Update user account information.
Parameters:
- firstName (optional): First name
- lastName (optional): Last name
- email (optional): Email address
Example prompt:
> "Update my email to newemail@example.com"
Team Management
getTeam
Get team information including concurrency limits, allowed parallel VMs, and mobile concurrency.
Example prompt:
> "Show my team information"
> "What are my team's concurrency limits?"
getUsersInTeam
List all users in your team with their roles and access levels.
Parameters:
- offset (optional): Pagination offset (default: 0)
- limit (optional): Number of users to retrieve (default: 10, max: 100)
Example prompt:
> "Show me all team members"
> "List users in my team"
getUserFromTeam
Get detailed information about a specific team member by user ID.
Parameters:
- userId: The user ID to retrieve
Example prompt:
> "Show details for user 12345"
Chrome DevTools Protocol (CDP)
createCdpSession
Create a Chrome DevTools Protocol session for advanced browser automation. Returns a WebSocket URL to connect to the browser.
Parameters:
- browserName: Browser name (chrome, firefox, safari, edge, etc.)
- browserVersion (optional): Browser version or "latest" (default: latest)
- platform: Operating system platform
- screenResolution (optional): Screen resolution (e.g., "1920x1080")
- name (optional): Session name
- build (optional): Build identifier
Example prompt:
> "Create a CDP session on Chrome latest with Windows 11"
> "Start a CDP session on Firefox 120 for automation"
Tunnel Management
getTunnelList
Get a list of all active TestingBot tunnels. Tunnels allow testing websites behind firewalls or on your local machine.
Example prompt:
> "Show me all active tunnels"
> "List my TestingBot tunnels"
deleteTunnel
Delete an active TestingBot tunnel by ID. This terminates the tunnel connection.
Parameters:
- tunnelId: The tunnel ID to delete
Example prompt:
> "Delete tunnel 12345"
Usage Examples
Example 1: Running Cross-Browser Tests
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]
Example 2: Managing Mobile App Tests
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]
Example 3: Build Management
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]
Example 4: Team & Tunnel Management
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]
Example 5: CDP Automation
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]
Development
Setup
```bash
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.





