Install
$ agentstack add mcp-testingbot-mcp-server ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ● Network access Used
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ● Environment & secrets Used
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
TestingBot MCP Server
[](https://www.npmjs.com/package/@testingbot/mcp-server) [](https://opensource.org/licenses/MIT) [](https://lobehub.com/mcp/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
[](https://testingbot.com/mcp/install?client=vscode) [](https://testingbot.com/mcp/install?client=cursor)
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:
- Open the URL in your browser (e.g.
https://testingbot.com/device). - Enter the code, sign in if needed, and click Authorize.
- Tell the agent you've authorized — it calls
tb_loginagain 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:
- Environment variables (above) — both a key and a secret must be set. This
lets CI and per-client config override everything else.
- The
~/.testingbot/credentialsfile written bytb_login, for the active
profile (default, or TESTINGBOT_PROFILE).
- 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 opendesiredOS: Operating system (Windows, Mac, Linux for desktop; android, ios for mobile)desiredOSVersion: OS versiondesiredBrowser(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 opendesiredOS: Windows, Mac, or LinuxdesiredOSVersion: OS versiondesiredBrowser: chrome, firefox, safari, edge, or iedesiredBrowserVersion(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 opendesiredOS: android or iosdesiredOSVersion: OS versiondesiredDevice: 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 testname(optional): New name for the teststatus(optional): "passed" or "failed"build(optional): Build identifierextra(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 screenshotbrowsers: Array of browser configurationsbrowserName: 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 namelastName(optional): Last nameemail(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 platformscreenResolution(optional): Screen resolution (e.g., "1920x1080")name(optional): Session namebuild(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: [U
…
## Source & license
This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.
- **Author:** [testingbot](https://github.com/testingbot)
- **Source:** [testingbot/mcp-server](https://github.com/testingbot/mcp-server)
- **License:** MIT
- **Homepage:** https://testingbot.com
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.