brave-mcp 1.6.0 → 1.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +329 -250
- package/build/src/HeapSnapshotManager.js +62 -23
- package/build/src/McpContext.js +77 -23
- package/build/src/McpPage.js +228 -12
- package/build/src/McpResponse.js +195 -282
- package/build/src/PageCollector.js +11 -6
- package/build/src/SlimMcpResponse.js +1 -1
- package/build/src/TextSnapshot.js +80 -19
- package/build/src/ToolHandler.js +24 -10
- package/build/src/WaitForHelper.js +204 -105
- package/build/src/bin/brave-devtools-cli-options.js +122 -6
- package/build/src/bin/brave-devtools-mcp-cli-options.js +26 -16
- package/build/src/bin/brave-devtools-mcp-main.js +5 -3
- package/build/src/bin/brave-devtools.js +20 -13
- package/build/src/browser.js +7 -12
- package/build/src/daemon/client.js +23 -1
- package/build/src/daemon/daemon.js +16 -13
- package/build/src/daemon/utils.js +18 -3
- package/build/src/devtools/DevtoolsUtils.js +7 -2
- package/build/src/formatters/ConsoleFormatter.js +42 -9
- package/build/src/formatters/HeapSnapshotFormatter.js +50 -13
- package/build/src/formatters/IssueFormatter.js +1 -1
- package/build/src/formatters/NetworkFormatter.js +7 -7
- package/build/src/index.js +11 -9
- package/build/src/telemetry/ClearcutLogger.js +3 -0
- package/build/src/telemetry/flagUtils.js +4 -3
- package/build/src/telemetry/transformation.js +30 -0
- package/build/src/third_party/THIRD_PARTY_NOTICES +234 -53
- package/build/src/third_party/bundled-packages.json +5 -5
- package/build/src/third_party/devtools-formatter-worker.js +60 -19
- package/build/src/third_party/devtools-heap-snapshot-worker.js +579 -204
- package/build/src/third_party/index.js +29210 -9795
- package/build/src/third_party/issue-descriptions/CoepCorpNotSameOrigin.md +2 -2
- package/build/src/third_party/issue-descriptions/CoepCorpNotSameOriginAfterDefaultedToSameOriginByCoep.md +3 -3
- package/build/src/third_party/issue-descriptions/CoepCorpNotSameSite.md +2 -2
- package/build/src/third_party/issue-descriptions/CoepFrameResourceNeedsCoepHeader.md +1 -1
- package/build/src/third_party/issue-descriptions/CompatibilityModeQuirks.md +1 -1
- package/build/src/third_party/issue-descriptions/CookieAttributeValueExceedsMaxSize.md +2 -2
- package/build/src/third_party/issue-descriptions/LowTextContrast.md +1 -1
- package/build/src/third_party/issue-descriptions/SameSiteNoneInsecureErrorRead.md +1 -1
- package/build/src/third_party/issue-descriptions/SameSiteNoneInsecureErrorSet.md +1 -1
- package/build/src/third_party/issue-descriptions/SameSiteNoneInsecureWarnRead.md +1 -1
- package/build/src/third_party/issue-descriptions/SameSiteNoneInsecureWarnSet.md +1 -1
- package/build/src/third_party/issue-descriptions/SameSiteUnspecifiedLaxAllowUnsafeRead.md +3 -3
- package/build/src/third_party/issue-descriptions/SameSiteUnspecifiedLaxAllowUnsafeSet.md +3 -3
- package/build/src/third_party/issue-descriptions/bounceTrackingMitigations.md +1 -1
- package/build/src/third_party/issue-descriptions/connectionAllowlistEmbeddingRequirementNotSatisfied.md +26 -0
- package/build/src/third_party/issue-descriptions/connectionAllowlistIFrameAttributeLoosensEmbeddingRequirement.md +19 -0
- package/build/src/third_party/issue-descriptions/connectionAllowlistInvalidAllowConnectionAllowlistFrom.md +21 -0
- package/build/src/third_party/issue-descriptions/connectionAllowlistInvalidAllowlistItemType.md +2 -2
- package/build/src/third_party/issue-descriptions/connectionAllowlistInvalidHeader.md +2 -2
- package/build/src/third_party/issue-descriptions/connectionAllowlistInvalidUrlPattern.md +3 -3
- package/build/src/third_party/issue-descriptions/connectionAllowlistItemNotInnerList.md +2 -2
- package/build/src/third_party/issue-descriptions/connectionAllowlistMoreThanOneList.md +2 -2
- package/build/src/third_party/issue-descriptions/connectionAllowlistReportingEndpointNotToken.md +1 -1
- package/build/src/third_party/issue-descriptions/cookieCrossSiteRedirectDowngrade.md +3 -3
- package/build/src/third_party/issue-descriptions/cookieExcludeBlockedWithinRelatedWebsiteSet.md +1 -1
- package/build/src/third_party/issue-descriptions/cookieExcludePortMismatch.md +1 -1
- package/build/src/third_party/issue-descriptions/cookieExcludeSchemeMismatch.md +1 -1
- package/build/src/third_party/issue-descriptions/cookieExcludeThirdPartyPhaseoutSet.md +1 -1
- package/build/src/third_party/issue-descriptions/cookieWarnThirdPartyPhaseoutRead.md +1 -1
- package/build/src/third_party/issue-descriptions/corsAllowCredentialsRequired.md +1 -1
- package/build/src/third_party/issue-descriptions/corsDisabledScheme.md +2 -2
- package/build/src/third_party/issue-descriptions/corsDisallowedByMode.md +2 -2
- package/build/src/third_party/issue-descriptions/corsHeaderDisallowedByPreflightResponse.md +1 -1
- package/build/src/third_party/issue-descriptions/corsInvalidHeaderValues.md +3 -3
- package/build/src/third_party/issue-descriptions/corsLocalNetworkAccessPermissionDenied.md +1 -1
- package/build/src/third_party/issue-descriptions/corsMethodDisallowedByPreflightResponse.md +1 -1
- package/build/src/third_party/issue-descriptions/corsNoCorsRedirectModeNotFollow.md +1 -1
- package/build/src/third_party/issue-descriptions/corsOriginMismatch.md +3 -3
- package/build/src/third_party/issue-descriptions/corsPreflightResponseInvalid.md +2 -2
- package/build/src/third_party/issue-descriptions/corsRedirectContainsCredentials.md +3 -3
- package/build/src/third_party/issue-descriptions/corsWildcardOriginNotAllowed.md +4 -3
- package/build/src/third_party/issue-descriptions/cspEvalViolation.md +4 -4
- package/build/src/third_party/issue-descriptions/cspInlineViolation.md +2 -2
- package/build/src/third_party/issue-descriptions/cspTrustedTypesPolicyViolation.md +2 -2
- package/build/src/third_party/issue-descriptions/cspTrustedTypesSinkViolation.md +4 -4
- package/build/src/third_party/issue-descriptions/cspURLViolation.md +4 -4
- package/build/src/third_party/issue-descriptions/emailVerificationRequestAccountsEmptyList.md +1 -1
- package/build/src/third_party/issue-descriptions/emailVerificationRequestAccountsHttpNotFound.md +1 -1
- package/build/src/third_party/issue-descriptions/emailVerificationRequestAccountsInvalidContentType.md +1 -1
- package/build/src/third_party/issue-descriptions/emailVerificationRequestAccountsInvalidResponse.md +1 -1
- package/build/src/third_party/issue-descriptions/emailVerificationRequestAccountsNoResponse.md +1 -1
- package/build/src/third_party/issue-descriptions/emailVerificationRequestDnsFetchFailed.md +1 -1
- package/build/src/third_party/issue-descriptions/emailVerificationRequestDnsInvalidRecord.md +1 -1
- package/build/src/third_party/issue-descriptions/emailVerificationRequestEmailVerificationWellKnownHttpNotFound.md +1 -1
- package/build/src/third_party/issue-descriptions/emailVerificationRequestEmailVerificationWellKnownInvalidContentType.md +1 -1
- package/build/src/third_party/issue-descriptions/emailVerificationRequestEmailVerificationWellKnownInvalidResponse.md +1 -1
- package/build/src/third_party/issue-descriptions/emailVerificationRequestEmailVerificationWellKnownNoResponse.md +1 -1
- package/build/src/third_party/issue-descriptions/emailVerificationRequestInvalidEmail.md +1 -1
- package/build/src/third_party/issue-descriptions/emailVerificationRequestJwksHttpNotFound.md +1 -1
- package/build/src/third_party/issue-descriptions/emailVerificationRequestJwksInvalidResponse.md +1 -1
- package/build/src/third_party/issue-descriptions/emailVerificationRequestKeyBindingSigningFailed.md +1 -1
- package/build/src/third_party/issue-descriptions/emailVerificationRequestRpOriginIsOpaque.md +1 -1
- package/build/src/third_party/issue-descriptions/emailVerificationRequestTokenHttpNotFound.md +1 -1
- package/build/src/third_party/issue-descriptions/emailVerificationRequestTokenInvalidContentType.md +1 -1
- package/build/src/third_party/issue-descriptions/emailVerificationRequestTokenInvalidResponse.md +1 -1
- package/build/src/third_party/issue-descriptions/emailVerificationRequestTokenInvalidSdJwt.md +1 -1
- package/build/src/third_party/issue-descriptions/emailVerificationRequestTokenMalformedSdJwt.md +1 -1
- package/build/src/third_party/issue-descriptions/emailVerificationRequestTokenNoResponse.md +1 -1
- package/build/src/third_party/issue-descriptions/emailVerificationRequestTokenVerificationKbInvalidAudience.md +1 -1
- package/build/src/third_party/issue-descriptions/emailVerificationRequestTokenVerificationKbInvalidIssuedAt.md +1 -1
- package/build/src/third_party/issue-descriptions/emailVerificationRequestTokenVerificationKbInvalidNonce.md +1 -1
- package/build/src/third_party/issue-descriptions/emailVerificationRequestTokenVerificationKbInvalidSdHash.md +1 -1
- package/build/src/third_party/issue-descriptions/emailVerificationRequestTokenVerificationKbInvalidTyp.md +1 -1
- package/build/src/third_party/issue-descriptions/emailVerificationRequestTokenVerificationKbMissingAud.md +1 -1
- package/build/src/third_party/issue-descriptions/emailVerificationRequestTokenVerificationKbMissingCnf.md +1 -1
- package/build/src/third_party/issue-descriptions/emailVerificationRequestTokenVerificationKbMissingIat.md +1 -1
- package/build/src/third_party/issue-descriptions/emailVerificationRequestTokenVerificationKbMissingNonce.md +1 -1
- package/build/src/third_party/issue-descriptions/emailVerificationRequestTokenVerificationKbMissingSdHash.md +1 -1
- package/build/src/third_party/issue-descriptions/emailVerificationRequestTokenVerificationKbSignatureFailed.md +1 -1
- package/build/src/third_party/issue-descriptions/emailVerificationRequestTokenVerificationSdJwtInvalidEmail.md +1 -1
- package/build/src/third_party/issue-descriptions/emailVerificationRequestTokenVerificationSdJwtInvalidEmailVerified.md +1 -1
- package/build/src/third_party/issue-descriptions/emailVerificationRequestTokenVerificationSdJwtInvalidHolderKey.md +1 -1
- package/build/src/third_party/issue-descriptions/emailVerificationRequestTokenVerificationSdJwtInvalidIssuedAt.md +1 -1
- package/build/src/third_party/issue-descriptions/emailVerificationRequestTokenVerificationSdJwtInvalidIssuer.md +1 -1
- package/build/src/third_party/issue-descriptions/emailVerificationRequestTokenVerificationSdJwtJwksMissingKeys.md +1 -1
- package/build/src/third_party/issue-descriptions/emailVerificationRequestTokenVerificationSdJwtMissingCnf.md +1 -1
- package/build/src/third_party/issue-descriptions/emailVerificationRequestTokenVerificationSdJwtMissingEmail.md +1 -1
- package/build/src/third_party/issue-descriptions/emailVerificationRequestTokenVerificationSdJwtMissingIat.md +1 -1
- package/build/src/third_party/issue-descriptions/emailVerificationRequestTokenVerificationSdJwtMissingIss.md +1 -1
- package/build/src/third_party/issue-descriptions/emailVerificationRequestTokenVerificationSdJwtSignatureFailed.md +1 -1
- package/build/src/third_party/issue-descriptions/emailVerificationRequestTokenVerificationSdJwtUnsupportedHeaderAlg.md +1 -1
- package/build/src/third_party/issue-descriptions/emailVerificationRequestUserLoggedOut.md +1 -1
- package/build/src/third_party/issue-descriptions/emailVerificationRequestWellKnownAccountsEndpointCrossOrigin.md +1 -1
- package/build/src/third_party/issue-descriptions/emailVerificationRequestWellKnownHttpNotFound.md +1 -1
- package/build/src/third_party/issue-descriptions/emailVerificationRequestWellKnownInvalidContentType.md +1 -1
- package/build/src/third_party/issue-descriptions/emailVerificationRequestWellKnownInvalidResponse.md +1 -1
- package/build/src/third_party/issue-descriptions/emailVerificationRequestWellKnownIssuanceEndpointCrossOrigin.md +1 -1
- package/build/src/third_party/issue-descriptions/emailVerificationRequestWellKnownListEmpty.md +1 -1
- package/build/src/third_party/issue-descriptions/emailVerificationRequestWellKnownMissingAccountsEndpoint.md +1 -1
- package/build/src/third_party/issue-descriptions/emailVerificationRequestWellKnownMissingIssuanceEndpoint.md +1 -1
- package/build/src/third_party/issue-descriptions/emailVerificationRequestWellKnownNoResponse.md +1 -1
- package/build/src/third_party/issue-descriptions/emailVerificationRequestWellKnownUnsupportedSigningAlgorithm.md +1 -1
- package/build/src/third_party/issue-descriptions/federatedAuthRequestAccountsHttpNotFound.md +1 -1
- package/build/src/third_party/issue-descriptions/federatedAuthRequestAccountsInvalidResponse.md +1 -1
- package/build/src/third_party/issue-descriptions/federatedAuthRequestAccountsNoResponse.md +1 -1
- package/build/src/third_party/issue-descriptions/federatedAuthRequestApprovalDeclined.md +1 -1
- package/build/src/third_party/issue-descriptions/federatedAuthRequestCanceled.md +1 -1
- package/build/src/third_party/issue-descriptions/federatedAuthRequestErrorFetchingSignin.md +1 -1
- package/build/src/third_party/issue-descriptions/federatedAuthRequestErrorIdToken.md +1 -1
- package/build/src/third_party/issue-descriptions/federatedAuthRequestIdTokenHttpNotFound.md +1 -1
- package/build/src/third_party/issue-descriptions/federatedAuthRequestIdTokenInvalidRequest.md +1 -1
- package/build/src/third_party/issue-descriptions/federatedAuthRequestIdTokenInvalidResponse.md +1 -1
- package/build/src/third_party/issue-descriptions/federatedAuthRequestIdTokenNoResponse.md +1 -1
- package/build/src/third_party/issue-descriptions/federatedAuthRequestInvalidSigninResponse.md +1 -1
- package/build/src/third_party/issue-descriptions/federatedAuthRequestManifestHttpNotFound.md +1 -1
- package/build/src/third_party/issue-descriptions/federatedAuthRequestManifestInvalidResponse.md +1 -1
- package/build/src/third_party/issue-descriptions/federatedAuthRequestManifestNoResponse.md +1 -1
- package/build/src/third_party/issue-descriptions/federatedAuthRequestTooManyRequests.md +1 -1
- package/build/src/third_party/issue-descriptions/federatedAuthUserInfoRequestInvalidAccountsResponse.md +1 -1
- package/build/src/third_party/issue-descriptions/federatedAuthUserInfoRequestInvalidConfigOrWellKnown.md +1 -1
- package/build/src/third_party/issue-descriptions/federatedAuthUserInfoRequestNoAccountSharingPermission.md +1 -1
- package/build/src/third_party/issue-descriptions/federatedAuthUserInfoRequestNoApiPermission.md +1 -1
- package/build/src/third_party/issue-descriptions/federatedAuthUserInfoRequestNoReturningUserFromFetchedAccounts.md +1 -1
- package/build/src/third_party/issue-descriptions/federatedAuthUserInfoRequestNotIframe.md +1 -1
- package/build/src/third_party/issue-descriptions/federatedAuthUserInfoRequestNotPotentiallyTrustworthy.md +1 -1
- package/build/src/third_party/issue-descriptions/federatedAuthUserInfoRequestNotSameOrigin.md +1 -1
- package/build/src/third_party/issue-descriptions/federatedAuthUserInfoRequestNotSignedInWithIdp.md +1 -1
- package/build/src/third_party/issue-descriptions/fetchingPartitionedBlobURL.md +2 -2
- package/build/src/third_party/issue-descriptions/genericFormAriaLabelledByToNonExistingIdError.md +2 -2
- package/build/src/third_party/issue-descriptions/genericFormAutocompleteAttributeEmptyError.md +1 -1
- package/build/src/third_party/issue-descriptions/genericFormDuplicateIdForInputError.md +1 -1
- package/build/src/third_party/issue-descriptions/genericFormEmptyIdAndNameAttributesForInputError.md +2 -2
- package/build/src/third_party/issue-descriptions/genericFormInputAssignedAutocompleteValueToIdOrNameAttributeError.md +2 -2
- package/build/src/third_party/issue-descriptions/genericFormInputHasWrongButWellIntendedAutocompleteValueError.md +1 -1
- package/build/src/third_party/issue-descriptions/genericFormInputWithNoLabelError.md +1 -1
- package/build/src/third_party/issue-descriptions/genericFormLabelForMatchesNonExistingIdError.md +2 -2
- package/build/src/third_party/issue-descriptions/genericFormLabelForNameError.md +1 -1
- package/build/src/third_party/issue-descriptions/genericFormLabelHasNeitherForNorNestedInputError.md +1 -1
- package/build/src/third_party/issue-descriptions/genericFormModelContextMissingToolName.md +1 -1
- package/build/src/third_party/issue-descriptions/genericFormModelContextParameterMissingName.md +1 -1
- package/build/src/third_party/issue-descriptions/genericFormModelContextRequiredParameterMissingName.md +1 -1
- package/build/src/third_party/issue-descriptions/genericNavigationEntryMarkedSkippable.md +2 -2
- package/build/src/third_party/issue-descriptions/heavyAd.md +1 -1
- package/build/src/third_party/issue-descriptions/lazyLoadImageZeroSize.md +7 -0
- package/build/src/third_party/issue-descriptions/navigatingPartitionedBlobURL.md +3 -3
- package/build/src/third_party/issue-descriptions/permissionElementActivationDisabled.md +1 -1
- package/build/src/third_party/issue-descriptions/permissionElementActivationDisabledWithOccluder.md +1 -1
- package/build/src/third_party/issue-descriptions/permissionElementActivationDisabledWithOccluderParent.md +1 -1
- package/build/src/third_party/issue-descriptions/permissionElementFencedFrameDisallowed.md +2 -2
- package/build/src/third_party/issue-descriptions/permissionElementFontSizeTooLarge.md +2 -2
- package/build/src/third_party/issue-descriptions/permissionElementFontSizeTooSmall.md +2 -2
- package/build/src/third_party/issue-descriptions/permissionElementInsetBoxShadowUnsupported.md +1 -1
- package/build/src/third_party/issue-descriptions/permissionElementInvalidDisplayStyle.md +2 -2
- package/build/src/third_party/issue-descriptions/permissionElementInvalidSizeValue.md +2 -2
- package/build/src/third_party/issue-descriptions/permissionElementInvalidType.md +2 -2
- package/build/src/third_party/issue-descriptions/permissionElementInvalidTypeActivation.md +2 -2
- package/build/src/third_party/issue-descriptions/permissionElementNonOpaqueColor.md +1 -1
- package/build/src/third_party/issue-descriptions/permissionElementPaddingBottomUnsupported.md +2 -2
- package/build/src/third_party/issue-descriptions/permissionElementPaddingRightUnsupported.md +2 -2
- package/build/src/third_party/issue-descriptions/permissionElementRequestInProgress.md +2 -2
- package/build/src/third_party/issue-descriptions/permissionElementSecurityChecksFailed.md +1 -1
- package/build/src/third_party/issue-descriptions/permissionElementTypeNotSupported.md +2 -2
- package/build/src/third_party/issue-descriptions/permissionElementUntrustedEvent.md +1 -1
- package/build/src/third_party/issue-descriptions/placeholderDescriptionForInvisibleIssues.md +1 -1
- package/build/src/third_party/issue-descriptions/selectElementAccessibilityDisallowedOptGroupChild.md +1 -1
- package/build/src/third_party/issue-descriptions/selectElementAccessibilityDisallowedSelectChild.md +1 -1
- package/build/src/third_party/issue-descriptions/selectElementAccessibilityInteractiveContentAttributesSelectDescendant.md +1 -1
- package/build/src/third_party/issue-descriptions/selectElementAccessibilityInteractiveContentLegendChild.md +1 -1
- package/build/src/third_party/issue-descriptions/selectElementAccessibilityInteractiveContentOptionChild.md +1 -1
- package/build/src/third_party/issue-descriptions/selectElementAccessibilityNonPhrasingContentOptionChild.md +1 -1
- package/build/src/third_party/issue-descriptions/selectivePermissionsIntervention.md +3 -3
- package/build/src/third_party/issue-descriptions/sharedArrayBuffer.md +1 -1
- package/build/src/third_party/issue-descriptions/sharedDictionaryUseErrorCrossOriginNoCorsRequest.md +1 -1
- package/build/src/third_party/issue-descriptions/sharedDictionaryUseErrorMatchingDictionaryNotUsed.md +1 -1
- package/build/src/third_party/issue-descriptions/sharedDictionaryUseErrorUnexpectedContentDictionaryHeader.md +1 -1
- package/build/src/third_party/issue-descriptions/sharedDictionaryWriteErrorCossOriginNoCorsRequest.md +1 -1
- package/build/src/third_party/issue-descriptions/sharedDictionaryWriteErrorDisallowedBySettings.md +1 -1
- package/build/src/third_party/issue-descriptions/sharedDictionaryWriteErrorExpiredResponse.md +1 -1
- package/build/src/third_party/issue-descriptions/sharedDictionaryWriteErrorFeatureDisabled.md +2 -2
- package/build/src/third_party/issue-descriptions/sharedDictionaryWriteErrorInvalidStructuredHeader.md +1 -1
- package/build/src/third_party/issue-descriptions/sharedDictionaryWriteErrorNavigationRequest.md +2 -2
- package/build/src/third_party/issue-descriptions/sriInvalidSignatureHeader.md +4 -4
- package/build/src/third_party/issue-descriptions/sriInvalidSignatureInputHeader.md +4 -4
- package/build/src/third_party/issue-descriptions/sriMissingSignatureHeader.md +1 -1
- package/build/src/third_party/issue-descriptions/sriMissingSignatureInputHeader.md +2 -2
- package/build/src/third_party/issue-descriptions/sriSignatureHeaderValueIsIncorrectLength.md +2 -2
- package/build/src/third_party/issue-descriptions/sriSignatureHeaderValueIsNotByteSequence.md +4 -4
- package/build/src/third_party/issue-descriptions/sriSignatureHeaderValueIsParameterized.md +4 -4
- package/build/src/third_party/issue-descriptions/sriSignatureInputHeaderInvalidComponentName.md +1 -1
- package/build/src/third_party/issue-descriptions/sriSignatureInputHeaderInvalidComponentType.md +2 -2
- package/build/src/third_party/issue-descriptions/sriSignatureInputHeaderInvalidDerivedComponentParameter.md +1 -1
- package/build/src/third_party/issue-descriptions/sriSignatureInputHeaderInvalidHeaderComponentParameter.md +1 -1
- package/build/src/third_party/issue-descriptions/sriSignatureInputHeaderInvalidParameter.md +2 -2
- package/build/src/third_party/issue-descriptions/sriSignatureInputHeaderKeyIdLength.md +5 -5
- package/build/src/third_party/issue-descriptions/sriSignatureInputHeaderMissingLabel.md +3 -3
- package/build/src/third_party/issue-descriptions/sriSignatureInputHeaderMissingRequiredParameters.md +2 -2
- package/build/src/third_party/issue-descriptions/sriSignatureInputHeaderValueMissingComponents.md +2 -2
- package/build/src/third_party/issue-descriptions/sriSignatureInputHeaderValueNotInnerList.md +2 -2
- package/build/src/third_party/issue-descriptions/sriValidationFailedIntegrityMismatch.md +4 -4
- package/build/src/third_party/issue-descriptions/sriValidationFailedInvalidLength.md +3 -3
- package/build/src/third_party/issue-descriptions/sriValidationFailedSignatureExpired.md +2 -2
- package/build/src/third_party/issue-descriptions/sriValidationFailedSignatureMismatch.md +2 -2
- package/build/src/third_party/issue-descriptions/stylesheetLateImport.md +1 -1
- package/build/src/third_party/issue-descriptions/summaryElementAccessibilityInteractiveContentSummaryDescendant.md +1 -1
- package/build/src/third_party/issue-descriptions/unencodedDigestIncorrectDigestLength.md +2 -2
- package/build/src/third_party/issue-descriptions/unencodedDigestIncorrectDigestType.md +3 -3
- package/build/src/third_party/issue-descriptions/unencodedDigestMalformedDictionary.md +2 -2
- package/build/src/third_party/issue-descriptions/unencodedDigestUnknownAlgorithm.md +1 -1
- package/build/src/third_party/lighthouse-devtools-mcp-bundle.js +1125 -1027
- package/build/src/tools/categories.js +3 -0
- package/build/src/tools/console.js +6 -0
- package/build/src/tools/input.js +207 -112
- package/build/src/tools/memory.js +35 -4
- package/build/src/tools/network.js +1 -1
- package/build/src/tools/pages.js +1 -0
- package/build/src/tools/performance.js +59 -39
- package/build/src/tools/pwa.js +130 -0
- package/build/src/tools/screenshot.js +152 -77
- package/build/src/tools/script.js +102 -32
- package/build/src/tools/tools.js +2 -0
- package/build/src/utils/check-for-updates.js +1 -1
- package/build/src/utils/polyfill.js +6 -3
- package/build/src/utils/url.js +43 -0
- package/build/src/version.js +1 -1
- package/package.json +30 -23
- package/skills/a11y-debugging/SKILL.md +2 -2
- package/skills/{chrome-devtools → brave-devtools}/SKILL.md +7 -7
- package/skills/brave-devtools-cli/SKILL.md +153 -0
- package/skills/brave-devtools-cli/references/installation.md +14 -0
- package/skills/debug-optimize-lcp/SKILL.md +1 -1
- package/skills/memory-leak-debugging/SKILL.md +16 -20
- package/skills/memory-leak-debugging/references/common-leaks.md +1 -1
- package/skills/troubleshooting/SKILL.md +17 -17
- package/build/src/devtools/DevToolsConnectionAdapter.js +0 -70
- package/build/src/third_party/issue-descriptions/SameSiteExcludeContextDowngradeRead.md +0 -8
- package/build/src/third_party/issue-descriptions/SameSiteExcludeContextDowngradeSet.md +0 -8
- package/build/src/third_party/issue-descriptions/SameSiteExcludeNavigationContextDowngrade.md +0 -8
- package/build/src/third_party/issue-descriptions/SameSiteWarnCrossDowngradeRead.md +0 -8
- package/build/src/third_party/issue-descriptions/SameSiteWarnCrossDowngradeSet.md +0 -8
- package/build/src/third_party/issue-descriptions/SameSiteWarnStrictLaxDowngradeStrict.md +0 -8
- package/build/src/third_party/issue-descriptions/arInsecureContext.md +0 -7
- package/build/src/third_party/issue-descriptions/arInvalidInfoHeader.md +0 -5
- package/build/src/third_party/issue-descriptions/arInvalidRegisterOsSourceHeader.md +0 -5
- package/build/src/third_party/issue-descriptions/arInvalidRegisterOsTriggerHeader.md +0 -5
- package/build/src/third_party/issue-descriptions/arInvalidRegisterSourceHeader.md +0 -5
- package/build/src/third_party/issue-descriptions/arInvalidRegisterTriggerHeader.md +0 -5
- package/build/src/third_party/issue-descriptions/arNavigationRegistrationUniqueScopeAlreadySet.md +0 -5
- package/build/src/third_party/issue-descriptions/arNavigationRegistrationWithoutTransientUserActivation.md +0 -6
- package/build/src/third_party/issue-descriptions/arNoRegisterOsSourceHeader.md +0 -5
- package/build/src/third_party/issue-descriptions/arNoRegisterOsTriggerHeader.md +0 -5
- package/build/src/third_party/issue-descriptions/arNoRegisterSourceHeader.md +0 -5
- package/build/src/third_party/issue-descriptions/arNoRegisterTriggerHeader.md +0 -5
- package/build/src/third_party/issue-descriptions/arNoWebOrOsSupport.md +0 -4
- package/build/src/third_party/issue-descriptions/arOsSourceIgnored.md +0 -18
- package/build/src/third_party/issue-descriptions/arOsTriggerIgnored.md +0 -19
- package/build/src/third_party/issue-descriptions/arPermissionPolicyDisabled.md +0 -8
- package/build/src/third_party/issue-descriptions/arSourceAndTriggerHeaders.md +0 -9
- package/build/src/third_party/issue-descriptions/arSourceIgnored.md +0 -13
- package/build/src/third_party/issue-descriptions/arTriggerIgnored.md +0 -12
- package/build/src/third_party/issue-descriptions/arUntrustworthyReportingOrigin.md +0 -10
- package/build/src/third_party/issue-descriptions/arWebAndOsHeaders.md +0 -11
- package/build/src/utils/Mutex.js +0 -38
- package/build/src/utils/string.js +0 -37
- package/skills/chrome-devtools-cli/SKILL.md +0 -153
- package/skills/chrome-devtools-cli/references/installation.md +0 -14
- package/skills/memory-leak-debugging/references/compare_snapshots.js +0 -109
- package/skills/memory-leak-debugging/references/memlab.md +0 -29
package/README.md
CHANGED
|
@@ -1,256 +1,198 @@
|
|
|
1
|
-
# Brave
|
|
1
|
+
# Brave DevTools for agents
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
>
|
|
5
|
-
> npm: `brave-mcp` · repo: `triuzzi/brave-devtools-mcp`
|
|
3
|
+
**Full Chrome DevTools MCP parity, rebuilt for Brave.**
|
|
6
4
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
(
|
|
10
|
-
|
|
11
|
-
|
|
5
|
+
[](https://github.com/triuzzi/brave-devtools-mcp/actions/workflows/run-tests.yml)
|
|
6
|
+
[](https://www.npmjs.com/package/brave-mcp)
|
|
7
|
+
[](https://www.npmjs.com/package/brave-mcp)
|
|
8
|
+
[](https://registry.modelcontextprotocol.io/v0.1/servers?search=io.github.triuzzi%2Fbrave-mcp)
|
|
9
|
+
[](https://registry.npmjs.org/-/npm/v1/attestations/brave-mcp@1.7.1)
|
|
10
|
+
[](https://github.com/triuzzi/brave-devtools-mcp/compare/ChromeDevTools:main...main)
|
|
11
|
+
[](./LICENSE)
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+

|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
- **Get performance insights**: Uses [Chrome
|
|
18
|
-
DevTools](https://github.com/ChromeDevTools/devtools-frontend) to record
|
|
19
|
-
traces and extract actionable performance insights.
|
|
20
|
-
- **Advanced browser debugging**: Analyze network requests, take screenshots and
|
|
21
|
-
check browser console messages (with source-mapped stack traces).
|
|
22
|
-
- **Reliable automation**. Uses
|
|
23
|
-
[puppeteer](https://github.com/puppeteer/puppeteer) to automate actions in
|
|
24
|
-
Brave and automatically wait for action results.
|
|
15
|
+
`brave-mcp` gives Claude Code, Codex, Cursor, OpenCode, and other MCP clients direct access to Brave for browser automation, network and console debugging, performance analysis, screenshots, accessibility inspection, and memory profiling. A standalone [`brave-devtools`](docs/cli.md) CLI is included too.
|
|
25
16
|
|
|
26
|
-
##
|
|
27
|
-
|
|
28
|
-
`brave-devtools-mcp` exposes content of the browser instance to the MCP clients
|
|
29
|
-
allowing them to inspect, debug, and modify any data in the browser or DevTools.
|
|
30
|
-
Avoid sharing sensitive or personal information that you don't want to share with
|
|
31
|
-
MCP clients.
|
|
17
|
+
## Install in one command
|
|
32
18
|
|
|
33
|
-
|
|
34
|
-
experience data. To disable this, run with the `--no-performance-crux` flag.
|
|
19
|
+
### Claude Code
|
|
35
20
|
|
|
36
|
-
|
|
37
|
-
|
|
21
|
+
```bash
|
|
22
|
+
claude mcp add brave-devtools --scope user -- npx -y brave-mcp@latest
|
|
23
|
+
```
|
|
38
24
|
|
|
39
|
-
|
|
25
|
+
### Cursor
|
|
40
26
|
|
|
41
|
-
|
|
42
|
-
- [
|
|
43
|
-
|
|
27
|
+
```bash
|
|
28
|
+
cursor --add-mcp '{"name":"brave-devtools","command":"npx","args":["-y","brave-mcp@latest"]}'
|
|
29
|
+
```
|
|
44
30
|
|
|
45
|
-
|
|
31
|
+
### Codex
|
|
46
32
|
|
|
47
|
-
|
|
33
|
+
```bash
|
|
34
|
+
codex mcp add brave-devtools -- npx -y brave-mcp@latest
|
|
35
|
+
```
|
|
48
36
|
|
|
49
|
-
###
|
|
37
|
+
### OpenCode
|
|
50
38
|
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
"mcpServers": {
|
|
54
|
-
"brave-devtools": {
|
|
55
|
-
"command": "npx",
|
|
56
|
-
"args": ["-y", "brave-mcp@latest"]
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
}
|
|
39
|
+
```bash
|
|
40
|
+
opencode mcp add brave-devtools -- npx -y brave-mcp@latest
|
|
60
41
|
```
|
|
61
42
|
|
|
62
|
-
|
|
43
|
+
Restart your client, then try this prompt:
|
|
63
44
|
|
|
64
|
-
|
|
45
|
+
> Open my app in Brave. Find console errors and failed network requests, inspect the accessibility tree, run Lighthouse, and explain the highest-impact issue.
|
|
65
46
|
|
|
66
|
-
|
|
67
|
-
git clone https://github.com/triuzzi/brave-devtools-mcp.git
|
|
68
|
-
cd brave-devtools-mcp
|
|
69
|
-
npm install
|
|
70
|
-
npm run build
|
|
71
|
-
```
|
|
47
|
+
## Why use this instead of Chrome DevTools MCP?
|
|
72
48
|
|
|
73
|
-
|
|
49
|
+
| Capability | `brave-mcp` | `chrome-devtools-mcp` |
|
|
50
|
+
| ---------------------------------------- | --------------------------------------- | ------------------------------------ |
|
|
51
|
+
| Browser launched and discovered natively | Brave Release, Beta, and Nightly | Chrome Stable, Beta, Dev, and Canary |
|
|
52
|
+
| Attach to an existing browser | Brave profiles, HTTP, or WebSocket | Chrome profiles, HTTP, or WebSocket |
|
|
53
|
+
| Upstream DevTools features | Full parity; currently 0 commits behind | Source implementation |
|
|
54
|
+
| Usage telemetry | Disabled by default | Enabled by default |
|
|
55
|
+
| Standalone CLI | `brave-devtools` | `chrome-devtools` |
|
|
74
56
|
|
|
75
|
-
|
|
57
|
+
Use [Chrome DevTools MCP](https://github.com/ChromeDevTools/chrome-devtools-mcp) when your target browser is Chrome. Use `brave-mcp` when your target browser is Brave and you want Brave-native discovery, profiles, channels, naming, and privacy defaults without giving up upstream features.
|
|
76
58
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
"brave-devtools": {
|
|
81
|
-
"command": "node",
|
|
82
|
-
"args": [
|
|
83
|
-
"/absolute/path/to/brave-devtools-mcp/build/src/bin/brave-devtools-mcp.js"
|
|
84
|
-
]
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
```
|
|
59
|
+
## [Tool reference](./docs/tool-reference.md) | [Changelog](./CHANGELOG.md) | [Contributing](./CONTRIBUTING.md) | [Troubleshooting](./docs/troubleshooting.md) | [Design principles](./docs/design-principles.md)
|
|
60
|
+
|
|
61
|
+
## Key features
|
|
89
62
|
|
|
90
|
-
|
|
63
|
+
- **Get performance insights**: Uses [Chrome
|
|
64
|
+
DevTools](https://github.com/ChromeDevTools/devtools-frontend) to record
|
|
65
|
+
traces and extract actionable performance insights.
|
|
66
|
+
- **Advanced browser debugging**: Analyze network requests, take screenshots and
|
|
67
|
+
check browser console messages (with source-mapped stack traces).
|
|
68
|
+
- **Reliable automation**. Uses
|
|
69
|
+
[puppeteer](https://github.com/puppeteer/puppeteer) to automate actions in
|
|
70
|
+
Brave and automatically wait for action results.
|
|
91
71
|
|
|
92
|
-
|
|
72
|
+
## Disclaimers
|
|
93
73
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
"command": "node",
|
|
99
|
-
"args": [
|
|
100
|
-
"/absolute/path/to/brave-devtools-mcp/build/src/bin/brave-devtools-mcp.js"
|
|
101
|
-
],
|
|
102
|
-
"env": {
|
|
103
|
-
"BRAVE_PATH": "/Applications/Brave Browser.app/Contents/MacOS/Brave Browser"
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
```
|
|
74
|
+
`brave-mcp` exposes content of the browser instance to the MCP clients
|
|
75
|
+
allowing them to inspect, debug, and modify any data in the browser or DevTools.
|
|
76
|
+
Avoid sharing sensitive or personal information that you don't want to share with
|
|
77
|
+
MCP clients.
|
|
109
78
|
|
|
110
|
-
|
|
79
|
+
`brave-mcp` officially supports the current Brave release. Beta and Nightly channels can be selected explicitly.
|
|
111
80
|
|
|
112
|
-
|
|
81
|
+
Performance tools may send trace URLs to the Google CrUX API to fetch real-user
|
|
82
|
+
experience data. This helps provide a holistic performance picture by
|
|
83
|
+
presenting field data alongside lab data. This data is collected by the [Chrome
|
|
84
|
+
User Experience Report (CrUX)](https://developer.chrome.com/docs/crux). To disable
|
|
85
|
+
this, run with the `--no-performance-crux` flag.
|
|
113
86
|
|
|
114
|
-
|
|
87
|
+
## **Usage statistics**
|
|
115
88
|
|
|
116
|
-
|
|
89
|
+
Usage statistics collection is **disabled by default** in this fork. It can be enabled explicitly with `--usage-statistics`, which uses the upstream Google Clearcut implementation:
|
|
117
90
|
|
|
118
|
-
|
|
91
|
+
```json
|
|
92
|
+
"args": ["-y", "brave-mcp@latest", "--usage-statistics"]
|
|
93
|
+
```
|
|
119
94
|
|
|
120
|
-
|
|
95
|
+
When enabled, Google handles this data in accordance with the [Google Privacy Policy](https://policies.google.com/privacy). Collection remains disabled if `BRAVE_DEVTOOLS_MCP_NO_USAGE_STATISTICS` or `CI` is set.
|
|
121
96
|
|
|
122
|
-
|
|
97
|
+
## Update checks
|
|
123
98
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
open -a "Brave Browser" --args --remote-debugging-port=9222
|
|
99
|
+
By default, the server periodically checks the npm registry for updates and logs a notification when a newer version is available.
|
|
100
|
+
You can disable these update checks by setting `BRAVE_DEVTOOLS_MCP_NO_UPDATE_CHECKS`.
|
|
127
101
|
|
|
128
|
-
|
|
129
|
-
brave-browser --remote-debugging-port=9222
|
|
102
|
+
## Requirements
|
|
130
103
|
|
|
131
|
-
#
|
|
132
|
-
|
|
133
|
-
|
|
104
|
+
- [Node.js](https://nodejs.org/) [LTS](https://github.com/nodejs/Release#release-schedule) version.
|
|
105
|
+
- [Brave](https://brave.com/download/) current release or newer.
|
|
106
|
+
- [npm](https://www.npmjs.com/)
|
|
134
107
|
|
|
135
|
-
|
|
108
|
+
## Getting started
|
|
136
109
|
|
|
137
|
-
|
|
110
|
+
Add the following config to your MCP client:
|
|
138
111
|
|
|
139
112
|
```json
|
|
140
113
|
{
|
|
141
114
|
"mcpServers": {
|
|
142
115
|
"brave-devtools": {
|
|
143
116
|
"command": "npx",
|
|
144
|
-
"args": [
|
|
145
|
-
"-y",
|
|
146
|
-
"brave-mcp@latest",
|
|
147
|
-
"--browserUrl",
|
|
148
|
-
"http://localhost:9222"
|
|
149
|
-
]
|
|
117
|
+
"args": ["-y", "brave-mcp@latest"]
|
|
150
118
|
}
|
|
151
119
|
}
|
|
152
120
|
}
|
|
153
121
|
```
|
|
154
122
|
|
|
155
|
-
|
|
123
|
+
> [!NOTE]
|
|
124
|
+
> Using `brave-mcp@latest` ensures that your MCP client will always use the latest version of the Brave DevTools MCP server.
|
|
125
|
+
|
|
126
|
+
If you are interested in doing only basic browser tasks, use the `--slim` mode:
|
|
156
127
|
|
|
157
128
|
```json
|
|
158
129
|
{
|
|
159
130
|
"mcpServers": {
|
|
160
131
|
"brave-devtools": {
|
|
161
|
-
"command": "
|
|
162
|
-
"args": [
|
|
163
|
-
"/absolute/path/to/brave-devtools-mcp/build/src/bin/brave-devtools-mcp.js",
|
|
164
|
-
"--browserUrl",
|
|
165
|
-
"http://localhost:9222"
|
|
166
|
-
]
|
|
132
|
+
"command": "npx",
|
|
133
|
+
"args": ["-y", "brave-mcp@latest", "--slim", "--headless"]
|
|
167
134
|
}
|
|
168
135
|
}
|
|
169
136
|
}
|
|
170
137
|
```
|
|
171
138
|
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
> **Warning:** The remote debugging port lets any application on your machine control the browser. Be mindful of sensitive websites while it's open.
|
|
175
|
-
|
|
176
|
-
### All CLI options
|
|
177
|
-
|
|
178
|
-
Run `--help` to see every flag:
|
|
179
|
-
|
|
180
|
-
```sh
|
|
181
|
-
node /absolute/path/to/brave-devtools-mcp/build/src/bin/brave-devtools-mcp.js --help
|
|
182
|
-
```
|
|
183
|
-
|
|
184
|
-
## Testing
|
|
139
|
+
See [Slim tool reference](./docs/slim-tool-reference.md).
|
|
185
140
|
|
|
186
|
-
|
|
141
|
+
### MCP Client configuration
|
|
187
142
|
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
143
|
+
<details>
|
|
144
|
+
<summary>Amp</summary>
|
|
145
|
+
Follow https://ampcode.com/manual#mcp and use the config provided above. You can also install the Brave DevTools MCP server using the CLI:
|
|
191
146
|
|
|
192
|
-
|
|
193
|
-
|
|
147
|
+
```bash
|
|
148
|
+
amp mcp add brave-devtools -- npx brave-mcp@latest
|
|
194
149
|
```
|
|
195
150
|
|
|
196
|
-
|
|
151
|
+
</details>
|
|
197
152
|
|
|
198
|
-
|
|
153
|
+
<details>
|
|
154
|
+
<summary>Antigravity</summary>
|
|
199
155
|
|
|
200
|
-
|
|
156
|
+
To use the Brave DevTools MCP server follow the instructions from <a href="https://antigravity.google/docs/mcp">Antigravity's docs</a> to install a custom MCP server. Add the following config to the MCP servers config:
|
|
201
157
|
|
|
202
|
-
```
|
|
158
|
+
```bash
|
|
203
159
|
{
|
|
204
160
|
"mcpServers": {
|
|
205
161
|
"brave-devtools": {
|
|
206
|
-
"command": "
|
|
162
|
+
"command": "npx",
|
|
207
163
|
"args": [
|
|
208
|
-
"
|
|
209
|
-
"
|
|
210
|
-
"--
|
|
164
|
+
"-y",
|
|
165
|
+
"brave-mcp@latest",
|
|
166
|
+
"--browser-url=http://127.0.0.1:9222"
|
|
211
167
|
]
|
|
212
168
|
}
|
|
213
169
|
}
|
|
214
170
|
}
|
|
215
171
|
```
|
|
216
172
|
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
### MCP Client configuration
|
|
220
|
-
|
|
221
|
-
<details>
|
|
222
|
-
<summary>Amp</summary>
|
|
223
|
-
Follow https://ampcode.com/manual#mcp and use the config provided above. You can also install the Chrome DevTools MCP server using the CLI:
|
|
173
|
+
This will make the Brave DevTools MCP server automatically connect to the browser that Antigravity is using. If you are not using port 9222, make sure to adjust accordingly.
|
|
224
174
|
|
|
225
|
-
|
|
226
|
-
amp mcp add chrome-devtools -- npx chrome-devtools-mcp@latest
|
|
227
|
-
```
|
|
175
|
+
Brave DevTools MCP will not start the browser instance automatically using this approach because the Brave DevTools MCP server connects to Antigravity's built-in browser. If the browser is not already running, you have to start it first by clicking the Chrome icon at the top right corner.
|
|
228
176
|
|
|
229
177
|
</details>
|
|
230
178
|
|
|
231
179
|
<details>
|
|
232
|
-
<summary>
|
|
180
|
+
<summary>Bob</summary>
|
|
233
181
|
|
|
234
|
-
|
|
182
|
+
Follow the <a href="https://bob.ibm.com/docs/ide/configuration/mcp/mcp-in-bob">IBM Bob MCP guide</a> and add the Brave DevTools MCP server to your Bob MCP configuration. Use the global config (`~/.bob/mcp.json`) to apply it across all workspaces, or a project config (`.bob/mcp.json`) to scope it to one project:
|
|
235
183
|
|
|
236
|
-
```
|
|
184
|
+
```json
|
|
237
185
|
{
|
|
238
186
|
"mcpServers": {
|
|
239
|
-
"
|
|
187
|
+
"brave-devtools": {
|
|
240
188
|
"command": "npx",
|
|
241
|
-
"args": [
|
|
242
|
-
"-y",
|
|
243
|
-
"chrome-devtools-mcp@latest",
|
|
244
|
-
"--browser-url=http://127.0.0.1:9222"
|
|
245
|
-
]
|
|
189
|
+
"args": ["-y", "brave-mcp@latest"]
|
|
246
190
|
}
|
|
247
191
|
}
|
|
248
192
|
}
|
|
249
193
|
```
|
|
250
194
|
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
Chrome DevTools MCP will not start the browser instance automatically using this approach because the Chrome DevTools MCP server connects to Antigravity's built-in browser. If the browser is not already running, you have to start it first by clicking the Chrome icon at the top right corner.
|
|
195
|
+
You can edit these files from **Bob panel → Settings → MCP → Edit Global MCP** (or **Edit Project MCP**). Bob hot-reloads on save. Once the server appears in the MCP tab, switch to the **🌎 Browser Dev** mode to get guided browser debugging directly in Bob.
|
|
254
196
|
|
|
255
197
|
</details>
|
|
256
198
|
|
|
@@ -259,27 +201,27 @@ Chrome DevTools MCP will not start the browser instance automatically using this
|
|
|
259
201
|
|
|
260
202
|
**Install via CLI (MCP only)**
|
|
261
203
|
|
|
262
|
-
Use the Claude Code CLI to add the
|
|
204
|
+
Use the Claude Code CLI to add the Brave DevTools MCP server (<a href="https://code.claude.com/docs/en/mcp">guide</a>):
|
|
263
205
|
|
|
264
206
|
```bash
|
|
265
|
-
claude mcp add
|
|
207
|
+
claude mcp add brave-devtools --scope user npx brave-mcp@latest
|
|
266
208
|
```
|
|
267
209
|
|
|
268
210
|
**Install as a Plugin (MCP + Skills)**
|
|
269
211
|
|
|
270
212
|
> [!NOTE]
|
|
271
|
-
> If you already had
|
|
213
|
+
> If you already had Brave DevTools MCP installed previously for Claude Code, make sure to remove it first from your installation and configuration files.
|
|
272
214
|
|
|
273
|
-
To install
|
|
215
|
+
To install Brave DevTools MCP with skills, add the marketplace registry in Claude Code:
|
|
274
216
|
|
|
275
217
|
```sh
|
|
276
|
-
/plugin marketplace add
|
|
218
|
+
/plugin marketplace add triuzzi/brave-devtools-mcp
|
|
277
219
|
```
|
|
278
220
|
|
|
279
221
|
Then, install the plugin:
|
|
280
222
|
|
|
281
223
|
```sh
|
|
282
|
-
/plugin install
|
|
224
|
+
/plugin install brave-devtools-mcp@brave-devtools-plugins
|
|
283
225
|
```
|
|
284
226
|
|
|
285
227
|
Restart Claude Code to have the MCP server and skills load (check with `/skills`).
|
|
@@ -297,24 +239,24 @@ Restart Claude Code to have the MCP server and skills load (check with `/skills`
|
|
|
297
239
|
<details>
|
|
298
240
|
<summary>Codex</summary>
|
|
299
241
|
Follow the <a href="https://developers.openai.com/codex/mcp/#configure-with-the-cli">configure MCP guide</a>
|
|
300
|
-
using the standard config from above. You can also install the
|
|
242
|
+
using the standard config from above. You can also install the Brave DevTools MCP server using the Codex CLI:
|
|
301
243
|
|
|
302
244
|
```bash
|
|
303
|
-
codex mcp add
|
|
245
|
+
codex mcp add brave-devtools -- npx brave-mcp@latest
|
|
304
246
|
```
|
|
305
247
|
|
|
306
248
|
**On Windows 11**
|
|
307
249
|
|
|
308
|
-
Configure the
|
|
250
|
+
Configure the Brave install location and increase the startup timeout by updating `.codex/config.toml` and adding the following `env` and `startup_timeout_ms` parameters:
|
|
309
251
|
|
|
310
252
|
```
|
|
311
|
-
[mcp_servers.
|
|
253
|
+
[mcp_servers.brave-devtools]
|
|
312
254
|
command = "cmd"
|
|
313
255
|
args = [
|
|
314
256
|
"/c",
|
|
315
257
|
"npx",
|
|
316
258
|
"-y",
|
|
317
|
-
"
|
|
259
|
+
"brave-mcp@latest",
|
|
318
260
|
]
|
|
319
261
|
env = { SystemRoot="C:\\Windows", PROGRAMFILES="C:\\Program Files" }
|
|
320
262
|
startup_timeout_ms = 20_000
|
|
@@ -325,10 +267,10 @@ startup_timeout_ms = 20_000
|
|
|
325
267
|
<details>
|
|
326
268
|
<summary>Command Code</summary>
|
|
327
269
|
|
|
328
|
-
Use the Command Code CLI to add the
|
|
270
|
+
Use the Command Code CLI to add the Brave DevTools MCP server (<a href="https://commandcode.ai/docs/mcp">MCP guide</a>):
|
|
329
271
|
|
|
330
272
|
```bash
|
|
331
|
-
cmd mcp add
|
|
273
|
+
cmd mcp add brave-devtools --scope user npx brave-mcp@latest
|
|
332
274
|
```
|
|
333
275
|
|
|
334
276
|
</details>
|
|
@@ -350,9 +292,9 @@ Start the dialog to add a new MCP server by running:
|
|
|
350
292
|
|
|
351
293
|
Configure the following fields and press `CTRL+S` to save the configuration:
|
|
352
294
|
|
|
353
|
-
- **Server name:** `
|
|
295
|
+
- **Server name:** `brave-devtools`
|
|
354
296
|
- **Server Type:** `[1] Local`
|
|
355
|
-
- **Command:** `npx -y
|
|
297
|
+
- **Command:** `npx -y brave-mcp@latest`
|
|
356
298
|
|
|
357
299
|
</details>
|
|
358
300
|
|
|
@@ -361,15 +303,15 @@ Configure the following fields and press `CTRL+S` to save the configuration:
|
|
|
361
303
|
|
|
362
304
|
**Install as a Plugin (Recommended)**
|
|
363
305
|
|
|
364
|
-
The easiest way to get up and running is to install `
|
|
306
|
+
The easiest way to get up and running is to install `brave-mcp` as an agent plugin.
|
|
365
307
|
This bundles the **MCP server** and all **skills** together, so your agent gets both the tools
|
|
366
308
|
and the expert guidance it needs to use them effectively.
|
|
367
309
|
|
|
368
310
|
1. Open the **Command Palette** (`Cmd+Shift+P` on macOS or `Ctrl+Shift+P` on Windows/Linux).
|
|
369
311
|
2. Search for and run the **Chat: Install Plugin From Source** command.
|
|
370
|
-
3. Paste in our repository name: `
|
|
312
|
+
3. Paste in our repository name: `triuzzi/brave-devtools-mcp`.
|
|
371
313
|
|
|
372
|
-
That's it! Your agent is now supercharged with
|
|
314
|
+
That's it! Your agent is now supercharged with Brave DevTools capabilities.
|
|
373
315
|
|
|
374
316
|
---
|
|
375
317
|
|
|
@@ -377,9 +319,9 @@ That's it! Your agent is now supercharged with Chrome DevTools capabilities.
|
|
|
377
319
|
|
|
378
320
|
**Click the button to install:**
|
|
379
321
|
|
|
380
|
-
[<img src="https://img.shields.io/badge/VS_Code-VS_Code?style=flat-square&label=Install%20Server&color=0098FF" alt="Install in VS Code">](https://vscode.dev/redirect/mcp/install?name=io.github.
|
|
322
|
+
[<img src="https://img.shields.io/badge/VS_Code-VS_Code?style=flat-square&label=Install%20Server&color=0098FF" alt="Install in VS Code">](https://vscode.dev/redirect/mcp/install?name=io.github.triuzzi%2Fbrave-mcp&config=%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22brave-mcp%22%5D%2C%22env%22%3A%7B%7D%7D)
|
|
381
323
|
|
|
382
|
-
[<img src="https://img.shields.io/badge/VS_Code_Insiders-VS_Code_Insiders?style=flat-square&label=Install%20Server&color=24bfa5" alt="Install in VS Code Insiders">](https://insiders.vscode.dev/redirect?url=vscode-insiders%3Amcp%2Finstall%3F%257B%2522name%2522%253A%2522io.github.
|
|
324
|
+
[<img src="https://img.shields.io/badge/VS_Code_Insiders-VS_Code_Insiders?style=flat-square&label=Install%20Server&color=24bfa5" alt="Install in VS Code Insiders">](https://insiders.vscode.dev/redirect?url=vscode-insiders%3Amcp%2Finstall%3F%257B%2522name%2522%253A%2522io.github.triuzzi%252Fbrave-mcp%2522%252C%2522config%2522%253A%257B%2522command%2522%253A%2522npx%2522%252C%2522args%2522%253A%255B%2522-y%2522%252C%2522brave-mcp%2522%255D%252C%2522env%2522%253A%257B%257D%257D%257D)
|
|
383
325
|
|
|
384
326
|
**Or install manually:**
|
|
385
327
|
|
|
@@ -388,13 +330,13 @@ Follow the VS Code [MCP configuration guide](https://code.visualstudio.com/docs/
|
|
|
388
330
|
For macOS and Linux:
|
|
389
331
|
|
|
390
332
|
```bash
|
|
391
|
-
code --add-mcp '{"name":"io.github.
|
|
333
|
+
code --add-mcp '{"name":"io.github.triuzzi/brave-devtools-mcp","command":"npx","args":["-y","brave-mcp"],"env":{}}'
|
|
392
334
|
```
|
|
393
335
|
|
|
394
336
|
For Windows (PowerShell):
|
|
395
337
|
|
|
396
338
|
```powershell
|
|
397
|
-
code --add-mcp '{"""name""":"""io.github.
|
|
339
|
+
code --add-mcp '{"""name""":"""io.github.triuzzi/brave-devtools-mcp""","""command""":"""npx""","""args""":["""-y""","""brave-mcp"""]}'
|
|
398
340
|
```
|
|
399
341
|
|
|
400
342
|
</details>
|
|
@@ -404,7 +346,7 @@ code --add-mcp '{"""name""":"""io.github.ChromeDevTools/chrome-devtools-mcp""","
|
|
|
404
346
|
|
|
405
347
|
**Click the button to install:**
|
|
406
348
|
|
|
407
|
-
[<img src="https://cursor.com/deeplink/mcp-install-dark.svg" alt="Install in Cursor">](https://cursor.com/en/install-mcp?name=
|
|
349
|
+
[<img src="https://cursor.com/deeplink/mcp-install-dark.svg" alt="Install in Cursor">](https://cursor.com/en/install-mcp?name=brave-devtools&config=eyJjb21tYW5kIjoibnB4IC15IGJyYXZlLW1jcEBsYXRlc3QifQ%3D%3D)
|
|
408
350
|
|
|
409
351
|
**Or install manually:**
|
|
410
352
|
|
|
@@ -412,33 +354,46 @@ Go to `Cursor Settings` -> `MCP` -> `New MCP Server`. Use the config provided ab
|
|
|
412
354
|
|
|
413
355
|
</details>
|
|
414
356
|
|
|
357
|
+
<details>
|
|
358
|
+
<summary>Devin CLI</summary>
|
|
359
|
+
|
|
360
|
+
**Install via CLI (MCP only)**
|
|
361
|
+
|
|
362
|
+
Use the Devin CLI to add the Brave DevTools MCP server (<a href="https://docs.devin.ai/cli/extensibility/mcp/configuration">guide</a>):
|
|
363
|
+
|
|
364
|
+
```bash
|
|
365
|
+
devin mcp add brave-devtools -- npx brave-mcp@latest
|
|
366
|
+
```
|
|
367
|
+
|
|
368
|
+
</details>
|
|
369
|
+
|
|
415
370
|
<details>
|
|
416
371
|
<summary>Factory CLI</summary>
|
|
417
|
-
Use the Factory CLI to add the
|
|
372
|
+
Use the Factory CLI to add the Brave DevTools MCP server (<a href="https://docs.factory.ai/cli/configuration/mcp">guide</a>):
|
|
418
373
|
|
|
419
374
|
```bash
|
|
420
|
-
droid mcp add
|
|
375
|
+
droid mcp add brave-devtools "npx -y brave-mcp@latest"
|
|
421
376
|
```
|
|
422
377
|
|
|
423
378
|
</details>
|
|
424
379
|
|
|
425
380
|
<details>
|
|
426
381
|
<summary>Gemini CLI</summary>
|
|
427
|
-
Install the
|
|
382
|
+
Install the Brave DevTools MCP server using the Gemini CLI.
|
|
428
383
|
|
|
429
384
|
**Project wide:**
|
|
430
385
|
|
|
431
386
|
```bash
|
|
432
387
|
# Either MCP only:
|
|
433
|
-
gemini mcp add
|
|
388
|
+
gemini mcp add brave-devtools npx brave-mcp@latest
|
|
434
389
|
# Or as a Gemini extension (MCP+Skills):
|
|
435
|
-
gemini extensions install --auto-update https://github.com/
|
|
390
|
+
gemini extensions install --auto-update https://github.com/triuzzi/brave-devtools-mcp
|
|
436
391
|
```
|
|
437
392
|
|
|
438
393
|
**Globally:**
|
|
439
394
|
|
|
440
395
|
```bash
|
|
441
|
-
gemini mcp add -s user
|
|
396
|
+
gemini mcp add -s user brave-devtools npx brave-mcp@latest
|
|
442
397
|
```
|
|
443
398
|
|
|
444
399
|
Alternatively, follow the <a href="https://github.com/google-gemini/gemini-cli/blob/main/docs/tools/mcp-server.md#how-to-set-up-your-mcp-server">MCP guide</a> and use the standard config from above.
|
|
@@ -455,7 +410,7 @@ Alternatively, follow the <a href="https://github.com/google-gemini/gemini-cli/b
|
|
|
455
410
|
<summary>Grok Build CLI</summary>
|
|
456
411
|
|
|
457
412
|
```bash
|
|
458
|
-
grok mcp add
|
|
413
|
+
grok mcp add brave-devtools npx brave-mcp@latest
|
|
459
414
|
```
|
|
460
415
|
|
|
461
416
|
See the <a href="https://docs.x.ai/build/features/skills-plugins-marketplaces">docs</a> for more options
|
|
@@ -465,7 +420,7 @@ See the <a href="https://docs.x.ai/build/features/skills-plugins-marketplaces">d
|
|
|
465
420
|
<summary>JetBrains AI Assistant & Junie</summary>
|
|
466
421
|
|
|
467
422
|
Go to `Settings | Tools | AI Assistant | Model Context Protocol (MCP)` -> `Add`. Use the config provided above.
|
|
468
|
-
The same way
|
|
423
|
+
The same way brave-mcp can be configured for JetBrains Junie in `Settings | Tools | Junie | MCP Settings` -> `Add`. Use the config provided above.
|
|
469
424
|
|
|
470
425
|
</details>
|
|
471
426
|
|
|
@@ -481,14 +436,14 @@ Or, from the IDE **Activity Bar** > `Kiro` > `MCP Servers` > `Click Open MCP Con
|
|
|
481
436
|
<details>
|
|
482
437
|
<summary>Katalon Studio</summary>
|
|
483
438
|
|
|
484
|
-
The
|
|
439
|
+
The Brave DevTools MCP server can be used with Katalon StudioAssist via an MCP proxy.
|
|
485
440
|
|
|
486
441
|
**Step 1:** Install the MCP proxy by following the <a href="https://docs.katalon.com/katalon-studio/studioassist/mcp-servers/setting-up-mcp-proxy-for-stdio-mcp-servers">MCP proxy setup guide</a>.
|
|
487
442
|
|
|
488
|
-
**Step 2:** Start the
|
|
443
|
+
**Step 2:** Start the Brave DevTools MCP server with the proxy:
|
|
489
444
|
|
|
490
445
|
```bash
|
|
491
|
-
mcp-proxy --transport streamablehttp --port 8080 -- npx -y
|
|
446
|
+
mcp-proxy --transport streamablehttp --port 8080 -- npx -y brave-mcp@latest
|
|
492
447
|
```
|
|
493
448
|
|
|
494
449
|
**Note:** You may need to pick another port if 8080 is already in use.
|
|
@@ -498,7 +453,7 @@ mcp-proxy --transport streamablehttp --port 8080 -- npx -y chrome-devtools-mcp@l
|
|
|
498
453
|
- **Connection URL:** `http://127.0.0.1:8080/mcp`
|
|
499
454
|
- **Transport type:** `HTTP`
|
|
500
455
|
|
|
501
|
-
Once connected, the
|
|
456
|
+
Once connected, the Brave DevTools MCP tools will be available in StudioAssist.
|
|
502
457
|
|
|
503
458
|
</details>
|
|
504
459
|
|
|
@@ -509,10 +464,10 @@ Add in ~/.vibe/config.toml:
|
|
|
509
464
|
|
|
510
465
|
```toml
|
|
511
466
|
[[mcp_servers]]
|
|
512
|
-
name = "
|
|
467
|
+
name = "brave-devtools"
|
|
513
468
|
transport = "stdio"
|
|
514
469
|
command = "npx"
|
|
515
|
-
args = ["
|
|
470
|
+
args = ["brave-mcp@latest"]
|
|
516
471
|
```
|
|
517
472
|
|
|
518
473
|
</details>
|
|
@@ -526,9 +481,9 @@ Add the following configuration to your `opencode.json` file. If you don't have
|
|
|
526
481
|
{
|
|
527
482
|
"$schema": "https://opencode.ai/config.json",
|
|
528
483
|
"mcp": {
|
|
529
|
-
"
|
|
484
|
+
"brave-devtools": {
|
|
530
485
|
"type": "local",
|
|
531
|
-
"command": ["npx", "-y", "
|
|
486
|
+
"command": ["npx", "-y", "brave-mcp@latest"]
|
|
532
487
|
}
|
|
533
488
|
}
|
|
534
489
|
}
|
|
@@ -548,18 +503,18 @@ Alternatively, follow the <a href="https://docs.qoder.com/user-guide/chat/model-
|
|
|
548
503
|
<details>
|
|
549
504
|
<summary>Qoder CLI</summary>
|
|
550
505
|
|
|
551
|
-
Install the
|
|
506
|
+
Install the Brave DevTools MCP server using the Qoder CLI (<a href="https://docs.qoder.com/cli/using-cli#mcp-servers">guide</a>):
|
|
552
507
|
|
|
553
508
|
**Project wide:**
|
|
554
509
|
|
|
555
510
|
```bash
|
|
556
|
-
qodercli mcp add
|
|
511
|
+
qodercli mcp add brave-devtools -- npx brave-mcp@latest
|
|
557
512
|
```
|
|
558
513
|
|
|
559
514
|
**Globally:**
|
|
560
515
|
|
|
561
516
|
```bash
|
|
562
|
-
qodercli mcp add -s user
|
|
517
|
+
qodercli mcp add -s user brave-devtools -- npx brave-mcp@latest
|
|
563
518
|
```
|
|
564
519
|
|
|
565
520
|
</details>
|
|
@@ -569,7 +524,7 @@ qodercli mcp add -s user chrome-devtools -- npx chrome-devtools-mcp@latest
|
|
|
569
524
|
|
|
570
525
|
**Click the button to install:**
|
|
571
526
|
|
|
572
|
-
[<img src="https://img.shields.io/badge/Visual_Studio-Install-C16FDE?logo=visualstudio&logoColor=white" alt="Install in Visual Studio">](https://vs-open.link/mcp-install?%7B%22name%22%3A%
|
|
527
|
+
[<img src="https://img.shields.io/badge/Visual_Studio-Install-C16FDE?logo=visualstudio&logoColor=white" alt="Install in Visual Studio">](https://vs-open.link/mcp-install?%7B%22name%22%3A%22brave-devtools%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22brave-mcp%40latest%22%5D%7D)
|
|
573
528
|
|
|
574
529
|
</details>
|
|
575
530
|
|
|
@@ -591,10 +546,10 @@ Go to `Settings | AI | Manage MCP Servers` -> `+ Add` to [add an MCP Server](htt
|
|
|
591
546
|
Enter the following prompt in your MCP Client to check if everything is working:
|
|
592
547
|
|
|
593
548
|
```
|
|
594
|
-
Check the performance of https://
|
|
549
|
+
Check the performance of https://developers.chrome.com
|
|
595
550
|
```
|
|
596
551
|
|
|
597
|
-
Your MCP client should open
|
|
552
|
+
Your MCP client should open the browser and record a performance trace.
|
|
598
553
|
|
|
599
554
|
> [!NOTE]
|
|
600
555
|
> The MCP server will start the browser automatically once the MCP client uses a tool that requires a running browser instance. Connecting to the Brave DevTools MCP server on its own will not automatically start the browser.
|
|
@@ -642,7 +597,7 @@ If you run into any issues, checkout our [troubleshooting guide](./docs/troubles
|
|
|
642
597
|
- [`take_snapshot`](docs/tool-reference.md#take_snapshot)
|
|
643
598
|
- [`screencast_start`](docs/tool-reference.md#screencast_start)
|
|
644
599
|
- [`screencast_stop`](docs/tool-reference.md#screencast_stop)
|
|
645
|
-
- **Memory** (
|
|
600
|
+
- **Memory** (12 tools)
|
|
646
601
|
- [`take_heapsnapshot`](docs/tool-reference.md#take_heapsnapshot)
|
|
647
602
|
- [`close_heapsnapshot`](docs/tool-reference.md#close_heapsnapshot)
|
|
648
603
|
- [`compare_heapsnapshots`](docs/tool-reference.md#compare_heapsnapshots)
|
|
@@ -651,6 +606,7 @@ If you run into any issues, checkout our [troubleshooting guide](./docs/troubles
|
|
|
651
606
|
- [`get_heapsnapshot_dominators`](docs/tool-reference.md#get_heapsnapshot_dominators)
|
|
652
607
|
- [`get_heapsnapshot_duplicate_strings`](docs/tool-reference.md#get_heapsnapshot_duplicate_strings)
|
|
653
608
|
- [`get_heapsnapshot_edges`](docs/tool-reference.md#get_heapsnapshot_edges)
|
|
609
|
+
- [`get_heapsnapshot_object_details`](docs/tool-reference.md#get_heapsnapshot_object_details)
|
|
654
610
|
- [`get_heapsnapshot_retainers`](docs/tool-reference.md#get_heapsnapshot_retainers)
|
|
655
611
|
- [`get_heapsnapshot_retaining_paths`](docs/tool-reference.md#get_heapsnapshot_retaining_paths)
|
|
656
612
|
- [`get_heapsnapshot_summary`](docs/tool-reference.md#get_heapsnapshot_summary)
|
|
@@ -666,22 +622,27 @@ If you run into any issues, checkout our [troubleshooting guide](./docs/troubles
|
|
|
666
622
|
- **WebMCP** (2 tools)
|
|
667
623
|
- [`execute_webmcp_tool`](docs/tool-reference.md#execute_webmcp_tool)
|
|
668
624
|
- [`list_webmcp_tools`](docs/tool-reference.md#list_webmcp_tools)
|
|
625
|
+
- **Progressive Web Apps** (4 tools)
|
|
626
|
+
- [`get_os_app_state`](docs/tool-reference.md#get_os_app_state)
|
|
627
|
+
- [`install_pwa`](docs/tool-reference.md#install_pwa)
|
|
628
|
+
- [`launch_pwa`](docs/tool-reference.md#launch_pwa)
|
|
629
|
+
- [`uninstall_pwa`](docs/tool-reference.md#uninstall_pwa)
|
|
669
630
|
|
|
670
631
|
<!-- END AUTO GENERATED TOOLS -->
|
|
671
632
|
|
|
672
633
|
## Configuration
|
|
673
634
|
|
|
674
|
-
The Brave DevTools MCP server supports the following configuration
|
|
635
|
+
The Brave DevTools MCP server supports the following configuration option:
|
|
675
636
|
|
|
676
637
|
<!-- BEGIN AUTO GENERATED OPTIONS -->
|
|
677
638
|
|
|
678
639
|
- **`--autoConnect`/ `--auto-connect`**
|
|
679
|
-
If specified, automatically connects to a Brave instance running locally from the user data directory identified by the channel
|
|
640
|
+
If specified, automatically connects to a Brave instance running locally from the user data directory identified by the channel parameter (default channel is release). Requires remote debugging to be enabled via brave://inspect/#remote-debugging.
|
|
680
641
|
- **Type:** boolean
|
|
681
642
|
- **Default:** `false`
|
|
682
643
|
|
|
683
644
|
- **`--browserUrl`/ `--browser-url`, `-u`**
|
|
684
|
-
Connect to a running, debuggable Brave instance (e.g. `http://127.0.0.1:9222`).
|
|
645
|
+
Connect to a running, debuggable Brave instance (e.g. `http://127.0.0.1:9222`). For more details see: https://github.com/triuzzi/brave-devtools-mcp#connecting-to-a-running-brave-instance.
|
|
685
646
|
- **Type:** string
|
|
686
647
|
- **Default:** `false`
|
|
687
648
|
|
|
@@ -701,7 +662,7 @@ The Brave DevTools MCP server supports the following configuration options:
|
|
|
701
662
|
- **Default:** `false`
|
|
702
663
|
|
|
703
664
|
- **`--executablePath`/ `--executable-path`, `-e`**
|
|
704
|
-
Path to custom Brave executable. Can also be set via BRAVE_PATH
|
|
665
|
+
Path to a custom Brave executable. Can also be set via BRAVE_PATH.
|
|
705
666
|
- **Type:** string
|
|
706
667
|
- **Default:** `false`
|
|
707
668
|
|
|
@@ -716,9 +677,9 @@ The Brave DevTools MCP server supports the following configuration options:
|
|
|
716
677
|
- **Default:** `false`
|
|
717
678
|
|
|
718
679
|
- **`--channel`**
|
|
719
|
-
Specify a different Brave channel
|
|
680
|
+
Specify a different Brave channel. The default is the release channel.
|
|
720
681
|
- **Type:** string
|
|
721
|
-
- **Choices:** `release`, `beta`, `nightly
|
|
682
|
+
- **Choices:** `release`, `beta`, `nightly`
|
|
722
683
|
- **Default:** `false`
|
|
723
684
|
|
|
724
685
|
- **`--logFile`/ `--log-file`**
|
|
@@ -727,7 +688,7 @@ The Brave DevTools MCP server supports the following configuration options:
|
|
|
727
688
|
- **Default:** `false`
|
|
728
689
|
|
|
729
690
|
- **`--viewport`**
|
|
730
|
-
Initial viewport size for
|
|
691
|
+
Initial viewport size for Brave instances started by the server. For example, `1280x720`. In headless mode, max size is 3840x2160px.
|
|
731
692
|
- **Type:** string
|
|
732
693
|
- **Default:** `false`
|
|
733
694
|
|
|
@@ -782,7 +743,7 @@ The Brave DevTools MCP server supports the following configuration options:
|
|
|
782
743
|
- **Default:** `false`
|
|
783
744
|
|
|
784
745
|
- **`--categoryExperimentalWebmcp`/ `--category-experimental-webmcp`**
|
|
785
|
-
Set to true to enable debugging WebMCP tools. Requires Brave with the following flags: `--enable-features=WebMCP,DevToolsWebMCPSupport`
|
|
746
|
+
Set to true to enable debugging WebMCP tools. Requires a recent Brave version with the following flags: `--enable-features=WebMCP,DevToolsWebMCPSupport`
|
|
786
747
|
- **Type:** boolean
|
|
787
748
|
- **Default:** `false`
|
|
788
749
|
|
|
@@ -797,7 +758,7 @@ The Brave DevTools MCP server supports the following configuration options:
|
|
|
797
758
|
- **Default:** `false`
|
|
798
759
|
|
|
799
760
|
- **`--allowedUrlPattern`/ `--allowed-url-pattern`**
|
|
800
|
-
Restricts browser's network access by allowing only specified URL patterns (uses https://urlpattern.spec.whatwg.org/). Requires
|
|
761
|
+
Restricts browser's network access by allowing only specified URL patterns (uses https://urlpattern.spec.whatwg.org/). Requires a recent Brave version. Silently detaches from targets with unallowed URLs upon connection, and blocks runtime requests (including navigations and subresources). Accepts an array of patterns.
|
|
801
762
|
- **Type:** array
|
|
802
763
|
- **Default:** `false`
|
|
803
764
|
|
|
@@ -822,7 +783,7 @@ The Brave DevTools MCP server supports the following configuration options:
|
|
|
822
783
|
- **Default:** `true`
|
|
823
784
|
|
|
824
785
|
- **`--categoryExtensions`/ `--category-extensions`**
|
|
825
|
-
Set to true to include tools related to extensions.
|
|
786
|
+
Set to true to include tools related to extensions. This feature is only supported with a pipe connection; autoConnect, browserUrl, and wsEndpoint are not supported.
|
|
826
787
|
- **Type:** boolean
|
|
827
788
|
- **Default:** `false`
|
|
828
789
|
|
|
@@ -831,13 +792,18 @@ The Brave DevTools MCP server supports the following configuration options:
|
|
|
831
792
|
- **Type:** boolean
|
|
832
793
|
- **Default:** `false`
|
|
833
794
|
|
|
795
|
+
- **`--categoryPwa`/ `--category-pwa`**
|
|
796
|
+
Set to true to include tools for automating Progressive Web Apps (install, launch, uninstall, and OS state). This feature is only supported with a pipe connection; autoConnect, browserUrl, and wsEndpoint are not supported.
|
|
797
|
+
- **Type:** boolean
|
|
798
|
+
- **Default:** `false`
|
|
799
|
+
|
|
834
800
|
- **`--performanceCrux`/ `--performance-crux`**
|
|
835
801
|
Set to false to disable sending URLs from performance traces to CrUX API to get field performance data.
|
|
836
802
|
- **Type:** boolean
|
|
837
803
|
- **Default:** `true`
|
|
838
804
|
|
|
839
805
|
- **`--usageStatistics`/ `--usage-statistics`**
|
|
840
|
-
Usage statistics collection
|
|
806
|
+
Usage statistics collection is disabled by default in this fork.
|
|
841
807
|
- **Type:** boolean
|
|
842
808
|
- **Default:** `false`
|
|
843
809
|
|
|
@@ -884,11 +850,11 @@ Pass them via the `args` property in the JSON configuration. For example:
|
|
|
884
850
|
```json
|
|
885
851
|
{
|
|
886
852
|
"mcpServers": {
|
|
887
|
-
"
|
|
853
|
+
"brave-devtools": {
|
|
888
854
|
"command": "npx",
|
|
889
855
|
"args": [
|
|
890
|
-
"
|
|
891
|
-
"--channel=
|
|
856
|
+
"brave-mcp@latest",
|
|
857
|
+
"--channel=nightly",
|
|
892
858
|
"--headless=true",
|
|
893
859
|
"--isolated=true"
|
|
894
860
|
]
|
|
@@ -899,15 +865,15 @@ Pass them via the `args` property in the JSON configuration. For example:
|
|
|
899
865
|
|
|
900
866
|
### Connecting via WebSocket with custom headers
|
|
901
867
|
|
|
902
|
-
You can connect directly to a
|
|
868
|
+
You can connect directly to a Brave WebSocket endpoint and include custom headers (e.g., for authentication):
|
|
903
869
|
|
|
904
870
|
```json
|
|
905
871
|
{
|
|
906
872
|
"mcpServers": {
|
|
907
|
-
"
|
|
873
|
+
"brave-devtools": {
|
|
908
874
|
"command": "npx",
|
|
909
875
|
"args": [
|
|
910
|
-
"
|
|
876
|
+
"brave-mcp@latest",
|
|
911
877
|
"--wsEndpoint=ws://127.0.0.1:9222/devtools/browser/<id>",
|
|
912
878
|
"--wsHeaders={\"Authorization\":\"Bearer YOUR_TOKEN\"}"
|
|
913
879
|
]
|
|
@@ -916,15 +882,15 @@ You can connect directly to a Chrome WebSocket endpoint and include custom heade
|
|
|
916
882
|
}
|
|
917
883
|
```
|
|
918
884
|
|
|
919
|
-
To get the WebSocket endpoint from a running
|
|
885
|
+
To get the WebSocket endpoint from a running Brave instance, visit `http://127.0.0.1:9222/json/version` and look for the `webSocketDebuggerUrl` field.
|
|
920
886
|
|
|
921
|
-
You can also run `npx
|
|
887
|
+
You can also run `npx brave-mcp@latest --help` to see all available configuration options.
|
|
922
888
|
|
|
923
889
|
## Concepts
|
|
924
890
|
|
|
925
891
|
### Concurrent sessions
|
|
926
892
|
|
|
927
|
-
Most MCP clients start one
|
|
893
|
+
Most MCP clients start one Brave DevTools MCP server per conversation. If your
|
|
928
894
|
client shares a single server instance across concurrent agents or subagents,
|
|
929
895
|
start the server with `--experimentalPageIdRouting`. This exposes `pageId` on
|
|
930
896
|
page-scoped tools so each agent can route tool calls to the tab it is working
|
|
@@ -933,45 +899,158 @@ with.
|
|
|
933
899
|
```json
|
|
934
900
|
{
|
|
935
901
|
"mcpServers": {
|
|
936
|
-
"
|
|
902
|
+
"brave-devtools": {
|
|
937
903
|
"command": "npx",
|
|
938
|
-
"args": [
|
|
939
|
-
"-y",
|
|
940
|
-
"chrome-devtools-mcp@latest",
|
|
941
|
-
"--experimentalPageIdRouting"
|
|
942
|
-
]
|
|
904
|
+
"args": ["-y", "brave-mcp@latest", "--experimentalPageIdRouting"]
|
|
943
905
|
}
|
|
944
906
|
}
|
|
945
907
|
}
|
|
946
908
|
```
|
|
947
909
|
|
|
948
910
|
If you run multiple independent MCP client sessions and want each session to
|
|
949
|
-
launch its own temporary
|
|
950
|
-
sharing the default
|
|
911
|
+
launch its own temporary Brave profile, also pass `--isolated`. This avoids
|
|
912
|
+
sharing the default Brave DevTools MCP user data directory between those
|
|
951
913
|
server instances.
|
|
952
914
|
|
|
953
915
|
### User data directory
|
|
954
916
|
|
|
955
|
-
`brave-
|
|
917
|
+
By default, `brave-mcp` starts the Brave release channel using the following user
|
|
956
918
|
data directory:
|
|
957
919
|
|
|
958
|
-
- Linux / macOS: `$HOME/.cache/brave-devtools-mcp/brave-profile
|
|
959
|
-
- Windows: `%
|
|
920
|
+
- Linux / macOS: `$HOME/.cache/brave-devtools-mcp/brave-profile`
|
|
921
|
+
- Windows: `%USERPROFILE%\.cache\brave-devtools-mcp\brave-profile`
|
|
960
922
|
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
923
|
+
For non-release channels, the channel name is appended to the directory name, for example
|
|
924
|
+
`brave-profile-nightly`.
|
|
925
|
+
|
|
926
|
+
The user data directory is not cleared between runs and is reused for subsequent
|
|
927
|
+
runs with the same channel. Only one browser can use it at a time. Set the `isolated`
|
|
928
|
+
option to `true` to use a temporary user data directory instead which will be cleared
|
|
929
|
+
automatically after the browser is closed.
|
|
965
930
|
|
|
966
931
|
### Connecting to a running Brave instance
|
|
967
932
|
|
|
968
|
-
|
|
933
|
+
By default, the Brave DevTools MCP server will start a new Brave instance with a dedicated profile. This might not be ideal in all situations:
|
|
934
|
+
|
|
935
|
+
- If you would like to maintain the same application state when alternating between manual site testing and agent-driven testing.
|
|
936
|
+
- When the MCP needs to sign into a website. Some accounts may prevent sign-in when the browser is controlled via WebDriver (the default launch mechanism for the Brave DevTools MCP server).
|
|
937
|
+
- If you're running your LLM inside a sandboxed environment, but you would like to connect to a Brave instance that runs outside the sandbox.
|
|
938
|
+
|
|
939
|
+
In these cases, start Brave first and let the Brave DevTools MCP server connect to it. There are two ways to do so:
|
|
940
|
+
|
|
941
|
+
- **Automatic connection**: best for sharing state between manual and agent-driven testing.
|
|
942
|
+
- **Manual connection via remote debugging port**: best when running inside a sandboxed environment.
|
|
943
|
+
|
|
944
|
+
#### Automatically connecting to a running Brave instance
|
|
945
|
+
|
|
946
|
+
**Step 1:** Set up remote debugging in Brave
|
|
947
|
+
|
|
948
|
+
In Brave, do the following to set up remote debugging:
|
|
949
|
+
|
|
950
|
+
1. Navigate to `brave://inspect/#remote-debugging` to enable remote debugging.
|
|
951
|
+
2. Follow the dialog UI to allow or disallow incoming debugging connections.
|
|
952
|
+
|
|
953
|
+
**Step 2:** Configure Brave DevTools MCP server to automatically connect to a running Brave instance
|
|
954
|
+
|
|
955
|
+
To connect the `brave-mcp` server to the running Brave instance, use
|
|
956
|
+
`--autoConnect` command line argument for the MCP server.
|
|
957
|
+
|
|
958
|
+
The following code snippet is an example configuration for gemini-cli:
|
|
959
|
+
|
|
960
|
+
```json
|
|
961
|
+
{
|
|
962
|
+
"mcpServers": {
|
|
963
|
+
"brave-devtools": {
|
|
964
|
+
"command": "npx",
|
|
965
|
+
"args": ["brave-mcp@latest", "--autoConnect"]
|
|
966
|
+
}
|
|
967
|
+
}
|
|
968
|
+
}
|
|
969
|
+
```
|
|
970
|
+
|
|
971
|
+
**Step 3:** Test your setup
|
|
972
|
+
|
|
973
|
+
Make sure your browser is running. Open gemini-cli and run the following prompt:
|
|
974
|
+
|
|
975
|
+
```none
|
|
976
|
+
Check the performance of https://developers.chrome.com
|
|
977
|
+
```
|
|
978
|
+
|
|
979
|
+
> [!NOTE]
|
|
980
|
+
> The <code>autoConnect</code> option requires the user to start Brave. If the user has multiple active profiles, the MCP server connects to Brave's default profile and can access all open windows for that profile.
|
|
981
|
+
|
|
982
|
+
The Brave DevTools MCP server will try to connect to your running Brave
|
|
983
|
+
instance. It shows a dialog asking for user permission.
|
|
984
|
+
|
|
985
|
+
Clicking **Allow** results in the Brave DevTools MCP server opening
|
|
986
|
+
[developers.chrome.com](http://developers.chrome.com) and taking a performance
|
|
987
|
+
trace.
|
|
988
|
+
|
|
989
|
+
#### Manual connection using port forwarding
|
|
990
|
+
|
|
991
|
+
You can connect to a running Brave instance by using the `--browser-url` option. This is useful if you are running the MCP server in a sandboxed environment that does not allow starting a new Brave instance.
|
|
992
|
+
|
|
993
|
+
Here is a step-by-step guide on how to connect to a running Brave instance:
|
|
994
|
+
|
|
995
|
+
**Step 1: Configure the MCP client**
|
|
996
|
+
|
|
997
|
+
Add the `--browser-url` option to your MCP client configuration. The value of this option should be the URL of the running Brave instance. `http://127.0.0.1:9222` is a common default.
|
|
998
|
+
|
|
999
|
+
```json
|
|
1000
|
+
{
|
|
1001
|
+
"mcpServers": {
|
|
1002
|
+
"brave-devtools": {
|
|
1003
|
+
"command": "npx",
|
|
1004
|
+
"args": ["brave-mcp@latest", "--browser-url=http://127.0.0.1:9222"]
|
|
1005
|
+
}
|
|
1006
|
+
}
|
|
1007
|
+
}
|
|
1008
|
+
```
|
|
1009
|
+
|
|
1010
|
+
**Step 2: Start the Brave browser**
|
|
1011
|
+
|
|
1012
|
+
> [!WARNING]
|
|
1013
|
+
> Enabling the remote debugging port opens up a debugging port on the running browser instance. Any application on your machine can connect to this port and control the browser. Make sure that you are not browsing any sensitive websites while the debugging port is open.
|
|
1014
|
+
|
|
1015
|
+
Start the Brave browser with the remote debugging port enabled. Make sure to close any running Brave instances before starting a new one with the debugging port enabled. The port number you choose must be the same as the one you specified in the `--browser-url` option in your MCP client configuration.
|
|
1016
|
+
|
|
1017
|
+
Use a dedicated user data directory when enabling the remote debugging port so your regular browsing profile and data are not exposed to the debugging session.
|
|
1018
|
+
|
|
1019
|
+
**macOS**
|
|
1020
|
+
|
|
1021
|
+
```bash
|
|
1022
|
+
/Applications/Brave\ Browser.app/Contents/MacOS/Brave\ Browser --remote-debugging-port=9222 --user-data-dir=/tmp/brave-profile-release
|
|
1023
|
+
```
|
|
1024
|
+
|
|
1025
|
+
**Linux**
|
|
1026
|
+
|
|
1027
|
+
```bash
|
|
1028
|
+
/usr/bin/brave-browser --remote-debugging-port=9222 --user-data-dir=/tmp/brave-profile-release
|
|
1029
|
+
```
|
|
1030
|
+
|
|
1031
|
+
**Windows**
|
|
1032
|
+
|
|
1033
|
+
```bash
|
|
1034
|
+
"C:\Program Files\BraveSoftware\Brave-Browser\Application\brave.exe" --remote-debugging-port=9222 --user-data-dir="%TEMP%\brave-profile-release"
|
|
1035
|
+
```
|
|
1036
|
+
|
|
1037
|
+
**Step 3: Test your setup**
|
|
1038
|
+
|
|
1039
|
+
After configuring the MCP client and starting the Brave browser, you can test your setup by running a simple prompt in your MCP client:
|
|
1040
|
+
|
|
1041
|
+
```
|
|
1042
|
+
Check the performance of https://developers.chrome.com
|
|
1043
|
+
```
|
|
1044
|
+
|
|
1045
|
+
Your MCP client should connect to the running Brave instance and receive a performance report.
|
|
1046
|
+
|
|
1047
|
+
If you hit VM-to-host port forwarding issues, see the “Remote debugging between virtual machine (VM) and host fails” section in [`docs/troubleshooting.md`](./docs/troubleshooting.md#remote-debugging-between-virtual-machine-vm-and-host-fails).
|
|
969
1048
|
|
|
970
|
-
For
|
|
1049
|
+
For more details on remote debugging, see the [Chromium DevTools documentation](https://developer.chrome.com/docs/devtools/remote-debugging/).
|
|
971
1050
|
|
|
972
|
-
### Debugging on Android
|
|
1051
|
+
### Debugging Chrome on Android
|
|
973
1052
|
|
|
974
|
-
Please consult [these instructions](./docs/debugging-android.md)
|
|
1053
|
+
Please consult [these instructions](./docs/debugging-android.md).
|
|
975
1054
|
|
|
976
1055
|
## Known limitations
|
|
977
1056
|
|
|
@@ -979,6 +1058,6 @@ See [Troubleshooting](./docs/troubleshooting.md).
|
|
|
979
1058
|
|
|
980
1059
|
## Integrating as a browser subagent
|
|
981
1060
|
|
|
982
|
-
If you are developing agentic tooling and want to provide an integrated browser subagent as part of your product, we recommend building on top of
|
|
1061
|
+
If you are developing agentic tooling and want to provide an integrated browser subagent as part of your product, we recommend building on top of Brave DevTools for agents.
|
|
983
1062
|
|
|
984
1063
|
For a reference implementation, see the [Gemini CLI browser agent documentation](https://geminicli.com/docs/core/subagents/#browser-agent).
|