Atlas / MCP servers / browserstack / BrowserStack MCP Server

BrowserStack MCP ServerCAUTION

mcp/browserstack/mcp-server

BrowserStack's Official MCP Server

Verdict
CAUTION
Grade
B
Trust score
84 /100
Exposed tools
55 43r · 12w · 0d
Transport
stdio · streamable-http
License
AGPL-3.0
Stars
154
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

Comprehensive Test Platform

Manage test cases, execute manual or automated tests, debug issues, and even fix code—directly within tools like Cursor, Claude, or any MCP-enabled client, using plain English.

Test from anywhere:

Easily connect the BrowserStack Test Platform to your favourite AI tools, such as IDEs, LLMs, or agentic workflows.

Test with natural language:

Manage, execute, debug tests, and even fix code using plain English prompts.

Reduced context switching:

Stay in flow—keep all project context in one place and trigger actions directly from your IDE or LLM.

⚡️ One Click MCP Setup

Click on the buttons below to install MCP in your respective IDE:

Note: The hosted Remote MCP server (mcp.browserstack.com) is now fully stateless over Streamable HTTP — any Streamable-HTTP client (Claude,
Read from source at commit 06b0e342956fOBSERVED · 2026-10-12
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code (npm)
claude mcp add mcp-server --env BROWSERSTACK_ACCESS_KEY=${BROWSERSTACK_ACCESS_KEY} -- npx -y @browserstack/[email protected]
03

Exposed tools (55)

43 read · 12 write · 0 destructive.

ToolRiskDescription
HomepagereadButton color changed
Preadd
accessibilityExpertreadAnswer accessibility, a11y, and WCAG questions using BrowserStack
addPercySnapshotCommandsread
addTestResultwriteAdd a test result to a specific test run via BrowserStack Test Management API.
askBrowserStackAIread
createAccessibilityAuthConfigwriteCreate an authentication configuration for accessibility scans. Supports both form-based and basic authentication.
createLCAStepsreadGenerate Low Code Automation (LCA) steps for a test case in BrowserStack Test Management using the Low Code Automation Agent.
createProjectOrFolderwriteCreate a project and/or folder in BrowserStack Test Management.
createTestCasewriteUse this tool to create a test case in BrowserStack Test Management.
createTestCasesFromFilereadGenerate test cases from a file in BrowserStack Test Management using the Test Case Generator AI Agent.
createTestRunwriteCreate a test run in BrowserStack Test Management.
describeCapabilityreadThe full contract for ONE capability you picked from searchCapability: its
describeEntityreadDescribe one entity: what it is, what identifies it, what it relates to, and the
expandPercyVisualTestingread
fetchAccessibilityIssuesreadFetch accessibility issues from a completed scan with pagination support. Use cursor parameter to get subsequent pages of results.
fetchAutomationScreenshotsreadFetch screenshots captured during an Automate/App Automate session.
fetchBuildInsightsreadFetch build details and quality gate results. Includes hashed_id and session_type for listSessions.
fetchPercyChangesreadRetrieves and summarizes all visual changes detected by Percy AI between the latest and previous builds, helping quickly review what has changed in your project.
fetchRCAreadFetch AI Root Cause Analysis for the current user
fetchSelfHealedSelectorsreadFetch BrowserStack self-healed selectors plus the test source code for
getAccessibilityAuthConfigreadRetrieve an existing authentication configuration by ID.
getBuildIdreadGet the BrowserStack build ID for a given project and build name, scoped to the current user
getFailureLogsreadFetch logs, or the session video URL, for an Automate/App Automate session.
getFailuresInLastRunwriteUse this tool to debug failures in the last run of the test suite on BrowserStack. Use only when browserstack.yml file is present in the project root.
getSubTestPlanreadFetch a sub-test-plan (STP-*) under a parent plan (TP-*). Returns metadata and linked test runs.
getTestPlanreadFetch a test plan by identifier (TP-*) from BrowserStack Test Management. Returns plan metadata, the full list of linked test runs, total test-case count across runs, and a status summary — suitable for generating test documentation or QA status reports.
invokeCapabilityreadCall a capability whose contract you have from describeCapability. Pass
listBuildIdreadGet the latest build ID for a project and build name, across all users (no user filter).
listFoldersreadList folders in a BrowserStack Test Management project, returning each folder
listProductsreadList the BrowserStack products this surface can reach: what each one does, the
listSessionsreadList sessions for a hashed Automate/App Automate build: session IDs, status, OS, browser/device, dashboard URL.
listSubTestPlansreadList sub-test-plans under a parent test plan (TP-*) in a Test Management project. Supports pagination.
listTestCaseTemplatesreadList test-case templates with their numeric template_id. Use the id with createTestCase to apply a custom template (the
listTestCasesreadList test cases in a project, optionally scoped to a specific folder. Omit folder_id to list all test cases in the project; provide folder_id (discoverable via listFolders) to list only that folder
listTestFilesread
listTestIdsreadList all tests of a BrowserStack build (each with its status and session id); optional status filter.
listTestPlansreadList test plans in a BrowserStack Test Management project. Returns each plan
listTestRunsreadList test runs in a project with optional filters (date ranges, assignee, state, etc.)
managePercyBuildApprovalreadApprove or reject a Percy build
percyVisualTestIntegrationAgentread
prepareSelfHealingPlanwriteBuild a self-healing edit plan that bundles locator pairs with test
runAppLiveSessionreadUse this tool when user wants to manually check their app on a particular mobile device using BrowserStack
runAppTestsOnBrowserStackread
runBrowserLiveSessionreadLaunch a BrowserStack Live session (desktop or mobile).
runPercyScanwriteRun a Percy visual test scan. Example prompts : Run this Percy build/scan. Never run percy scan/build without this tool
searchCapabilityreadFind endpoints this surface can call, by plain language, within ONE product.
setupBrowserStackAppAutomateTestsread
setupBrowserStackAutomateTestsread
startAccessibilityScanwriteStart an accessibility scan via BrowserStack and retrieve a local CSV report path.
takeAppScreenshotreadUse this tool to take a screenshot of an app running on a BrowserStack device. This is useful for visual testing and debugging.
updateTestCasewriteUpdate an existing test case in BrowserStack Test Management. Any subset of the following fields may be changed: name, description, preconditions, test_case_steps, owner, priority, case_type, automation_status, status, tags, issues, custom_fields. Only the supplied fields are modified.
updateTestRunwriteUpdate a test run
uploadProductRequirementFilewriteUpload files (e.g., PDRs, PDFs) to BrowserStack Test Management and retrieve a file mapping ID. This is utilized for generating test cases from files and is part of the Test Case Generator AI Agent in BrowserStack.
wfreadd
04

Trust audit

CAUTIONgrade B · trust 84/100 Install with care. The audit found things worth knowing before you trust its output.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeWARN
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (5 observation(s))
Network
declared (5 observation(s))
Shell
declared (5 observation(s))
Dependencies
not all pinned
Secrets in source
found

Findings (21)

MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
tests/tools/accessibility.test.ts:45
password: "super-secret-site-password",
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
tests/tools/accessibility.test.ts:56
password: "super-secret-site-password",
LOWInventory / provenance · inv.binary · CWE-1104
tests/tools/capabilityRegistrySearchEval.test.ts
capabilityRegistrySearchEval.test.ts
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
LOWFilesystem / path · fs.credential_store · CWE-22, CWE-59
tests/tools/upload-validator.test.ts:109
it("rejects a file inside a hidden directory (e.g. ~/.ssh/key.txt)", () => {
Why it matters. touches a credential store
LOWFilesystem / path · fs.credential_store · CWE-22, CWE-59
tests/tools/upload-validator.test.ts:112
const file = path.join(hidden, "id_rsa.txt");
Why it matters. touches a credential store
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/lib/instrumentation.ts:6
const packageJson = require("../../package.json");
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/tools/accessiblity-utils/accessibility-rag.ts:1
import { apiClient } from "../../lib/apiClient.js";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/tools/accessiblity-utils/accessibility-rag.ts:2
import { wrapUntrusted } from "../../lib/untrusted-content.js";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/tools/accessiblity-utils/accessibility-rag.ts:9
import { getBrowserStackAuth } from "../../lib/get-auth.js";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/tools/accessiblity-utils/accessibility-rag.ts:10
import { BrowserStackConfig } from "../../lib/types.js";
LOWNetwork egress · net.metadata_ip · CWE-200, CWE-319
tests/tools/testmanagement.test.ts:1092
links: { test_runs: 'http://169.254.169.254/latest/meta-data/' },
Why it matters. cloud metadata endpoint: the classic SSRF credential grab
LOWNetwork egress · net.metadata_ip · CWE-200, CWE-319
tests/tools/testmanagement.test.ts:1109
expect(enrichmentCall.url).not.toContain('169.254.169.254');
Why it matters. cloud metadata endpoint: the classic SSRF credential grab
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
CONTRIBUTING.md:86
[http://127.0.0.1:6274](http://127.0.0.1:6274)
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
tests/tools/capabilityRegistryEgress.test.ts:266
it.each(["http://localhost:3000", "http://127.0.0.1:8080"])(
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
tests/tools/failurelogs-size-cap.test.ts:47
base = `http://127.0.0.1:${(server.address() as AddressInfo).port}`;
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
tests/tools/testmanagement.test.ts:1092
links: { test_runs: 'http://169.254.169.254/latest/meta-data/' },
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
package.json
@modelcontextprotocol/sdk, @types/form-data, axios, browserstack-local, csv-parse, dotenv, form-data, pino
Why it matters. 24 dependency range(s) float
Fix. pin exact versions or ship a lockfile
INFOInventory / provenance · inv.oversize · CWE-1104
capability/tm.capability-index.json
capability/tm.capability-index.json
Why it matters. 2181310 bytes not read
INFOInventory / provenance · inv.oversize · CWE-1104
capability/tra.capability-index.json
capability/tra.capability-index.json
Why it matters. 1230951 bytes not read
INFOInventory / provenance · inv.oversize · CWE-1104
tests/fixtures/capability/tm.capability-index.json
tests/fixtures/capability/tm.capability-index.json
Why it matters. 1875611 bytes not read
INFOInventory / provenance · inv.oversize · CWE-1104
tests/fixtures/capability/tra.capability-index.json
tests/fixtures/capability/tra.capability-index.json
Why it matters. 1230951 bytes not read

Gates applied: no_behavioural_pass.

Audited 2026-10-12 · audit v0.4.1 · source sha 06b0e342956ffull audit observations/trust-audit/mcp-server/browserstack__mcp-server.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-1206b0e342956fCAUTIONB84first audit
06

Questions

What is the @browserstack/mcp-server MCP server?

BrowserStack's Official MCP Server

What tools does @browserstack/mcp-server expose?

55 in total: 43 read-only, 12 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.

Is @browserstack/mcp-server safe to connect to an agent?

With care. The audit graded it B (84/100) and found 21 things worth knowing before you trust this server, listed below with the exact line each was found on.

What credentials does @browserstack/mcp-server need?

It reads ASK_BROWSERSTACK_AUTH_TOKEN_URL, BROWSERSTACK_ACCESS_KEY and CAPABILITY_REGISTRY_AUTH_TOKEN_URL from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How does @browserstack/mcp-server run?

It speaks stdio and streamable-http, so it runs as a local process your client starts. It is published on npm as @browserstack/mcp-server at 2.2.1.

How current is this page?

The grade is for one exact copy of the source (06b0e342956f), read on 2026-10-12. The repository is watched and re-audited when it changes.

Advertisement