brave-mcp 1.5.0 → 1.7.0

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.
Files changed (313) hide show
  1. package/README.md +293 -245
  2. package/build/src/HeapSnapshotManager.js +77 -28
  3. package/build/src/McpContext.js +245 -382
  4. package/build/src/McpPage.js +468 -41
  5. package/build/src/McpResponse.js +290 -331
  6. package/build/src/PageCollector.js +56 -125
  7. package/build/src/SlimMcpResponse.js +1 -1
  8. package/build/src/TextSnapshot.js +100 -21
  9. package/build/src/ToolHandler.js +36 -12
  10. package/build/src/WaitForHelper.js +201 -92
  11. package/build/src/bin/brave-devtools-cli-options.js +147 -7
  12. package/build/src/bin/brave-devtools-mcp-cli-options.js +41 -22
  13. package/build/src/bin/brave-devtools-mcp-main.js +7 -5
  14. package/build/src/bin/brave-devtools.js +20 -13
  15. package/build/src/browser.js +8 -13
  16. package/build/src/daemon/client.js +56 -4
  17. package/build/src/daemon/daemon.js +18 -14
  18. package/build/src/daemon/utils.js +19 -4
  19. package/build/src/devtools/DevtoolsUtils.js +9 -65
  20. package/build/src/{issue-descriptions.js → devtools/issueDescriptions.js} +2 -2
  21. package/build/src/formatters/ConsoleFormatter.js +42 -9
  22. package/build/src/formatters/HeapSnapshotFormatter.js +50 -13
  23. package/build/src/formatters/IssueFormatter.js +3 -3
  24. package/build/src/formatters/NetworkFormatter.js +7 -7
  25. package/build/src/index.js +21 -10
  26. package/build/src/telemetry/ClearcutLogger.js +4 -1
  27. package/build/src/telemetry/WatchdogClient.js +1 -1
  28. package/build/src/telemetry/metricsRegistry.js +2 -9
  29. package/build/src/telemetry/persistence.js +1 -1
  30. package/build/src/telemetry/transformation.js +50 -0
  31. package/build/src/telemetry/watchdog/ClearcutSender.js +1 -1
  32. package/build/src/telemetry/watchdog/main.js +1 -1
  33. package/build/src/third_party/THIRD_PARTY_NOTICES +233 -288
  34. package/build/src/third_party/bundled-packages.json +6 -7
  35. package/build/src/third_party/devtools-formatter-worker.js +60 -20
  36. package/build/src/third_party/devtools-heap-snapshot-worker.js +579 -205
  37. package/build/src/third_party/index.js +31043 -11638
  38. package/build/src/third_party/issue-descriptions/CoepCorpNotSameOrigin.md +2 -2
  39. package/build/src/third_party/issue-descriptions/CoepCorpNotSameOriginAfterDefaultedToSameOriginByCoep.md +3 -3
  40. package/build/src/third_party/issue-descriptions/CoepCorpNotSameSite.md +2 -2
  41. package/build/src/third_party/issue-descriptions/CoepFrameResourceNeedsCoepHeader.md +1 -1
  42. package/build/src/third_party/issue-descriptions/CompatibilityModeQuirks.md +1 -1
  43. package/build/src/third_party/issue-descriptions/CookieAttributeValueExceedsMaxSize.md +2 -2
  44. package/build/src/third_party/issue-descriptions/LowTextContrast.md +1 -1
  45. package/build/src/third_party/issue-descriptions/SameSiteNoneInsecureErrorRead.md +1 -1
  46. package/build/src/third_party/issue-descriptions/SameSiteNoneInsecureErrorSet.md +1 -1
  47. package/build/src/third_party/issue-descriptions/SameSiteNoneInsecureWarnRead.md +1 -1
  48. package/build/src/third_party/issue-descriptions/SameSiteNoneInsecureWarnSet.md +1 -1
  49. package/build/src/third_party/issue-descriptions/SameSiteUnspecifiedLaxAllowUnsafeRead.md +3 -3
  50. package/build/src/third_party/issue-descriptions/SameSiteUnspecifiedLaxAllowUnsafeSet.md +3 -3
  51. package/build/src/third_party/issue-descriptions/bounceTrackingMitigations.md +1 -1
  52. package/build/src/third_party/issue-descriptions/connectionAllowlistEmbeddingRequirementNotSatisfied.md +26 -0
  53. package/build/src/third_party/issue-descriptions/connectionAllowlistIFrameAttributeLoosensEmbeddingRequirement.md +19 -0
  54. package/build/src/third_party/issue-descriptions/connectionAllowlistInvalidAllowConnectionAllowlistFrom.md +21 -0
  55. package/build/src/third_party/issue-descriptions/connectionAllowlistInvalidAllowlistItemType.md +2 -2
  56. package/build/src/third_party/issue-descriptions/connectionAllowlistInvalidHeader.md +2 -2
  57. package/build/src/third_party/issue-descriptions/connectionAllowlistInvalidUrlPattern.md +3 -3
  58. package/build/src/third_party/issue-descriptions/connectionAllowlistItemNotInnerList.md +2 -2
  59. package/build/src/third_party/issue-descriptions/connectionAllowlistMoreThanOneList.md +2 -2
  60. package/build/src/third_party/issue-descriptions/connectionAllowlistReportingEndpointNotToken.md +1 -1
  61. package/build/src/third_party/issue-descriptions/cookieCrossSiteRedirectDowngrade.md +3 -3
  62. package/build/src/third_party/issue-descriptions/cookieExcludeBlockedWithinRelatedWebsiteSet.md +1 -1
  63. package/build/src/third_party/issue-descriptions/cookieExcludePortMismatch.md +1 -1
  64. package/build/src/third_party/issue-descriptions/cookieExcludeSchemeMismatch.md +1 -1
  65. package/build/src/third_party/issue-descriptions/cookieExcludeThirdPartyPhaseoutSet.md +1 -1
  66. package/build/src/third_party/issue-descriptions/cookieWarnThirdPartyPhaseoutRead.md +1 -1
  67. package/build/src/third_party/issue-descriptions/corsAllowCredentialsRequired.md +1 -1
  68. package/build/src/third_party/issue-descriptions/corsDisabledScheme.md +2 -2
  69. package/build/src/third_party/issue-descriptions/corsDisallowedByMode.md +2 -2
  70. package/build/src/third_party/issue-descriptions/corsHeaderDisallowedByPreflightResponse.md +1 -1
  71. package/build/src/third_party/issue-descriptions/corsInvalidHeaderValues.md +3 -3
  72. package/build/src/third_party/issue-descriptions/corsLocalNetworkAccessPermissionDenied.md +1 -1
  73. package/build/src/third_party/issue-descriptions/corsMethodDisallowedByPreflightResponse.md +1 -1
  74. package/build/src/third_party/issue-descriptions/corsNoCorsRedirectModeNotFollow.md +1 -1
  75. package/build/src/third_party/issue-descriptions/corsOriginMismatch.md +3 -3
  76. package/build/src/third_party/issue-descriptions/corsPreflightResponseInvalid.md +2 -2
  77. package/build/src/third_party/issue-descriptions/corsRedirectContainsCredentials.md +3 -3
  78. package/build/src/third_party/issue-descriptions/corsWildcardOriginNotAllowed.md +4 -3
  79. package/build/src/third_party/issue-descriptions/cspEvalViolation.md +4 -4
  80. package/build/src/third_party/issue-descriptions/cspInlineViolation.md +2 -2
  81. package/build/src/third_party/issue-descriptions/cspTrustedTypesPolicyViolation.md +2 -2
  82. package/build/src/third_party/issue-descriptions/cspTrustedTypesSinkViolation.md +4 -4
  83. package/build/src/third_party/issue-descriptions/cspURLViolation.md +4 -4
  84. package/build/src/third_party/issue-descriptions/emailVerificationRequestAccountsEmptyList.md +1 -1
  85. package/build/src/third_party/issue-descriptions/emailVerificationRequestAccountsHttpNotFound.md +1 -1
  86. package/build/src/third_party/issue-descriptions/emailVerificationRequestAccountsInvalidContentType.md +1 -1
  87. package/build/src/third_party/issue-descriptions/emailVerificationRequestAccountsInvalidResponse.md +1 -1
  88. package/build/src/third_party/issue-descriptions/emailVerificationRequestAccountsNoResponse.md +1 -1
  89. package/build/src/third_party/issue-descriptions/emailVerificationRequestDnsFetchFailed.md +1 -1
  90. package/build/src/third_party/issue-descriptions/emailVerificationRequestDnsInvalidRecord.md +1 -1
  91. package/build/src/third_party/issue-descriptions/emailVerificationRequestEmailVerificationWellKnownHttpNotFound.md +1 -1
  92. package/build/src/third_party/issue-descriptions/emailVerificationRequestEmailVerificationWellKnownInvalidContentType.md +1 -1
  93. package/build/src/third_party/issue-descriptions/emailVerificationRequestEmailVerificationWellKnownInvalidResponse.md +1 -1
  94. package/build/src/third_party/issue-descriptions/emailVerificationRequestEmailVerificationWellKnownNoResponse.md +1 -1
  95. package/build/src/third_party/issue-descriptions/emailVerificationRequestInvalidEmail.md +1 -1
  96. package/build/src/third_party/issue-descriptions/emailVerificationRequestJwksHttpNotFound.md +1 -1
  97. package/build/src/third_party/issue-descriptions/emailVerificationRequestJwksInvalidResponse.md +1 -1
  98. package/build/src/third_party/issue-descriptions/emailVerificationRequestKeyBindingSigningFailed.md +1 -1
  99. package/build/src/third_party/issue-descriptions/emailVerificationRequestRpOriginIsOpaque.md +1 -1
  100. package/build/src/third_party/issue-descriptions/emailVerificationRequestTokenHttpNotFound.md +1 -1
  101. package/build/src/third_party/issue-descriptions/emailVerificationRequestTokenInvalidContentType.md +1 -1
  102. package/build/src/third_party/issue-descriptions/emailVerificationRequestTokenInvalidResponse.md +1 -1
  103. package/build/src/third_party/issue-descriptions/emailVerificationRequestTokenInvalidSdJwt.md +1 -1
  104. package/build/src/third_party/issue-descriptions/emailVerificationRequestTokenMalformedSdJwt.md +1 -1
  105. package/build/src/third_party/issue-descriptions/emailVerificationRequestTokenNoResponse.md +1 -1
  106. package/build/src/third_party/issue-descriptions/emailVerificationRequestTokenVerificationKbInvalidAudience.md +1 -1
  107. package/build/src/third_party/issue-descriptions/emailVerificationRequestTokenVerificationKbInvalidIssuedAt.md +1 -1
  108. package/build/src/third_party/issue-descriptions/emailVerificationRequestTokenVerificationKbInvalidNonce.md +1 -1
  109. package/build/src/third_party/issue-descriptions/emailVerificationRequestTokenVerificationKbInvalidSdHash.md +1 -1
  110. package/build/src/third_party/issue-descriptions/emailVerificationRequestTokenVerificationKbInvalidTyp.md +1 -1
  111. package/build/src/third_party/issue-descriptions/emailVerificationRequestTokenVerificationKbMissingAud.md +1 -1
  112. package/build/src/third_party/issue-descriptions/emailVerificationRequestTokenVerificationKbMissingCnf.md +1 -1
  113. package/build/src/third_party/issue-descriptions/emailVerificationRequestTokenVerificationKbMissingIat.md +1 -1
  114. package/build/src/third_party/issue-descriptions/emailVerificationRequestTokenVerificationKbMissingNonce.md +1 -1
  115. package/build/src/third_party/issue-descriptions/emailVerificationRequestTokenVerificationKbMissingSdHash.md +1 -1
  116. package/build/src/third_party/issue-descriptions/emailVerificationRequestTokenVerificationKbSignatureFailed.md +1 -1
  117. package/build/src/third_party/issue-descriptions/emailVerificationRequestTokenVerificationSdJwtInvalidEmail.md +1 -1
  118. package/build/src/third_party/issue-descriptions/emailVerificationRequestTokenVerificationSdJwtInvalidEmailVerified.md +1 -1
  119. package/build/src/third_party/issue-descriptions/emailVerificationRequestTokenVerificationSdJwtInvalidHolderKey.md +1 -1
  120. package/build/src/third_party/issue-descriptions/emailVerificationRequestTokenVerificationSdJwtInvalidIssuedAt.md +1 -1
  121. package/build/src/third_party/issue-descriptions/emailVerificationRequestTokenVerificationSdJwtInvalidIssuer.md +1 -1
  122. package/build/src/third_party/issue-descriptions/emailVerificationRequestTokenVerificationSdJwtJwksMissingKeys.md +1 -1
  123. package/build/src/third_party/issue-descriptions/emailVerificationRequestTokenVerificationSdJwtMissingCnf.md +1 -1
  124. package/build/src/third_party/issue-descriptions/emailVerificationRequestTokenVerificationSdJwtMissingEmail.md +1 -1
  125. package/build/src/third_party/issue-descriptions/emailVerificationRequestTokenVerificationSdJwtMissingIat.md +1 -1
  126. package/build/src/third_party/issue-descriptions/emailVerificationRequestTokenVerificationSdJwtMissingIss.md +1 -1
  127. package/build/src/third_party/issue-descriptions/emailVerificationRequestTokenVerificationSdJwtSignatureFailed.md +1 -1
  128. package/build/src/third_party/issue-descriptions/emailVerificationRequestTokenVerificationSdJwtUnsupportedHeaderAlg.md +1 -1
  129. package/build/src/third_party/issue-descriptions/emailVerificationRequestUserLoggedOut.md +1 -1
  130. package/build/src/third_party/issue-descriptions/emailVerificationRequestWellKnownAccountsEndpointCrossOrigin.md +1 -1
  131. package/build/src/third_party/issue-descriptions/emailVerificationRequestWellKnownHttpNotFound.md +1 -1
  132. package/build/src/third_party/issue-descriptions/emailVerificationRequestWellKnownInvalidContentType.md +1 -1
  133. package/build/src/third_party/issue-descriptions/emailVerificationRequestWellKnownInvalidResponse.md +1 -1
  134. package/build/src/third_party/issue-descriptions/emailVerificationRequestWellKnownIssuanceEndpointCrossOrigin.md +1 -1
  135. package/build/src/third_party/issue-descriptions/emailVerificationRequestWellKnownListEmpty.md +1 -1
  136. package/build/src/third_party/issue-descriptions/emailVerificationRequestWellKnownMissingAccountsEndpoint.md +1 -1
  137. package/build/src/third_party/issue-descriptions/emailVerificationRequestWellKnownMissingIssuanceEndpoint.md +1 -1
  138. package/build/src/third_party/issue-descriptions/emailVerificationRequestWellKnownNoResponse.md +1 -1
  139. package/build/src/third_party/issue-descriptions/emailVerificationRequestWellKnownUnsupportedSigningAlgorithm.md +1 -1
  140. package/build/src/third_party/issue-descriptions/federatedAuthRequestAccountsHttpNotFound.md +1 -1
  141. package/build/src/third_party/issue-descriptions/federatedAuthRequestAccountsInvalidResponse.md +1 -1
  142. package/build/src/third_party/issue-descriptions/federatedAuthRequestAccountsNoResponse.md +1 -1
  143. package/build/src/third_party/issue-descriptions/federatedAuthRequestApprovalDeclined.md +1 -1
  144. package/build/src/third_party/issue-descriptions/federatedAuthRequestCanceled.md +1 -1
  145. package/build/src/third_party/issue-descriptions/federatedAuthRequestErrorFetchingSignin.md +1 -1
  146. package/build/src/third_party/issue-descriptions/federatedAuthRequestErrorIdToken.md +1 -1
  147. package/build/src/third_party/issue-descriptions/federatedAuthRequestIdTokenHttpNotFound.md +1 -1
  148. package/build/src/third_party/issue-descriptions/federatedAuthRequestIdTokenInvalidRequest.md +1 -1
  149. package/build/src/third_party/issue-descriptions/federatedAuthRequestIdTokenInvalidResponse.md +1 -1
  150. package/build/src/third_party/issue-descriptions/federatedAuthRequestIdTokenNoResponse.md +1 -1
  151. package/build/src/third_party/issue-descriptions/federatedAuthRequestInvalidSigninResponse.md +1 -1
  152. package/build/src/third_party/issue-descriptions/federatedAuthRequestManifestHttpNotFound.md +1 -1
  153. package/build/src/third_party/issue-descriptions/federatedAuthRequestManifestInvalidResponse.md +1 -1
  154. package/build/src/third_party/issue-descriptions/federatedAuthRequestManifestNoResponse.md +1 -1
  155. package/build/src/third_party/issue-descriptions/federatedAuthRequestTooManyRequests.md +1 -1
  156. package/build/src/third_party/issue-descriptions/federatedAuthUserInfoRequestInvalidAccountsResponse.md +1 -1
  157. package/build/src/third_party/issue-descriptions/federatedAuthUserInfoRequestInvalidConfigOrWellKnown.md +1 -1
  158. package/build/src/third_party/issue-descriptions/federatedAuthUserInfoRequestNoAccountSharingPermission.md +1 -1
  159. package/build/src/third_party/issue-descriptions/federatedAuthUserInfoRequestNoApiPermission.md +1 -1
  160. package/build/src/third_party/issue-descriptions/federatedAuthUserInfoRequestNoReturningUserFromFetchedAccounts.md +1 -1
  161. package/build/src/third_party/issue-descriptions/federatedAuthUserInfoRequestNotIframe.md +1 -1
  162. package/build/src/third_party/issue-descriptions/federatedAuthUserInfoRequestNotPotentiallyTrustworthy.md +1 -1
  163. package/build/src/third_party/issue-descriptions/federatedAuthUserInfoRequestNotSameOrigin.md +1 -1
  164. package/build/src/third_party/issue-descriptions/federatedAuthUserInfoRequestNotSignedInWithIdp.md +1 -1
  165. package/build/src/third_party/issue-descriptions/fetchingPartitionedBlobURL.md +2 -2
  166. package/build/src/third_party/issue-descriptions/genericFormAriaLabelledByToNonExistingIdError.md +2 -2
  167. package/build/src/third_party/issue-descriptions/genericFormAutocompleteAttributeEmptyError.md +1 -1
  168. package/build/src/third_party/issue-descriptions/genericFormDuplicateIdForInputError.md +1 -1
  169. package/build/src/third_party/issue-descriptions/genericFormEmptyIdAndNameAttributesForInputError.md +2 -2
  170. package/build/src/third_party/issue-descriptions/genericFormInputAssignedAutocompleteValueToIdOrNameAttributeError.md +2 -2
  171. package/build/src/third_party/issue-descriptions/genericFormInputHasWrongButWellIntendedAutocompleteValueError.md +1 -1
  172. package/build/src/third_party/issue-descriptions/genericFormInputWithNoLabelError.md +1 -1
  173. package/build/src/third_party/issue-descriptions/genericFormLabelForMatchesNonExistingIdError.md +2 -2
  174. package/build/src/third_party/issue-descriptions/genericFormLabelForNameError.md +1 -1
  175. package/build/src/third_party/issue-descriptions/genericFormLabelHasNeitherForNorNestedInputError.md +1 -1
  176. package/build/src/third_party/issue-descriptions/genericFormModelContextMissingToolName.md +1 -1
  177. package/build/src/third_party/issue-descriptions/genericFormModelContextParameterMissingName.md +1 -1
  178. package/build/src/third_party/issue-descriptions/genericFormModelContextRequiredParameterMissingName.md +1 -1
  179. package/build/src/third_party/issue-descriptions/genericNavigationEntryMarkedSkippable.md +2 -2
  180. package/build/src/third_party/issue-descriptions/heavyAd.md +1 -1
  181. package/build/src/third_party/issue-descriptions/lazyLoadImageZeroSize.md +7 -0
  182. package/build/src/third_party/issue-descriptions/navigatingPartitionedBlobURL.md +3 -3
  183. package/build/src/third_party/issue-descriptions/permissionElementActivationDisabled.md +1 -1
  184. package/build/src/third_party/issue-descriptions/permissionElementActivationDisabledWithOccluder.md +1 -1
  185. package/build/src/third_party/issue-descriptions/permissionElementActivationDisabledWithOccluderParent.md +1 -1
  186. package/build/src/third_party/issue-descriptions/permissionElementFencedFrameDisallowed.md +2 -2
  187. package/build/src/third_party/issue-descriptions/permissionElementFontSizeTooLarge.md +2 -2
  188. package/build/src/third_party/issue-descriptions/permissionElementFontSizeTooSmall.md +2 -2
  189. package/build/src/third_party/issue-descriptions/permissionElementInsetBoxShadowUnsupported.md +1 -1
  190. package/build/src/third_party/issue-descriptions/permissionElementInvalidDisplayStyle.md +2 -2
  191. package/build/src/third_party/issue-descriptions/permissionElementInvalidSizeValue.md +2 -2
  192. package/build/src/third_party/issue-descriptions/permissionElementInvalidType.md +2 -2
  193. package/build/src/third_party/issue-descriptions/permissionElementInvalidTypeActivation.md +2 -2
  194. package/build/src/third_party/issue-descriptions/permissionElementNonOpaqueColor.md +1 -1
  195. package/build/src/third_party/issue-descriptions/permissionElementPaddingBottomUnsupported.md +2 -2
  196. package/build/src/third_party/issue-descriptions/permissionElementPaddingRightUnsupported.md +2 -2
  197. package/build/src/third_party/issue-descriptions/permissionElementRequestInProgress.md +2 -2
  198. package/build/src/third_party/issue-descriptions/permissionElementSecurityChecksFailed.md +1 -1
  199. package/build/src/third_party/issue-descriptions/permissionElementTypeNotSupported.md +2 -2
  200. package/build/src/third_party/issue-descriptions/permissionElementUntrustedEvent.md +1 -1
  201. package/build/src/third_party/issue-descriptions/placeholderDescriptionForInvisibleIssues.md +1 -1
  202. package/build/src/third_party/issue-descriptions/selectElementAccessibilityDisallowedOptGroupChild.md +1 -1
  203. package/build/src/third_party/issue-descriptions/selectElementAccessibilityDisallowedSelectChild.md +1 -1
  204. package/build/src/third_party/issue-descriptions/selectElementAccessibilityInteractiveContentAttributesSelectDescendant.md +1 -1
  205. package/build/src/third_party/issue-descriptions/selectElementAccessibilityInteractiveContentLegendChild.md +1 -1
  206. package/build/src/third_party/issue-descriptions/selectElementAccessibilityInteractiveContentOptionChild.md +1 -1
  207. package/build/src/third_party/issue-descriptions/selectElementAccessibilityNonPhrasingContentOptionChild.md +1 -1
  208. package/build/src/third_party/issue-descriptions/selectivePermissionsIntervention.md +3 -3
  209. package/build/src/third_party/issue-descriptions/sharedArrayBuffer.md +1 -1
  210. package/build/src/third_party/issue-descriptions/sharedDictionaryUseErrorCrossOriginNoCorsRequest.md +1 -1
  211. package/build/src/third_party/issue-descriptions/sharedDictionaryUseErrorMatchingDictionaryNotUsed.md +1 -1
  212. package/build/src/third_party/issue-descriptions/sharedDictionaryUseErrorUnexpectedContentDictionaryHeader.md +1 -1
  213. package/build/src/third_party/issue-descriptions/sharedDictionaryWriteErrorCossOriginNoCorsRequest.md +1 -1
  214. package/build/src/third_party/issue-descriptions/sharedDictionaryWriteErrorDisallowedBySettings.md +1 -1
  215. package/build/src/third_party/issue-descriptions/sharedDictionaryWriteErrorExpiredResponse.md +1 -1
  216. package/build/src/third_party/issue-descriptions/sharedDictionaryWriteErrorFeatureDisabled.md +2 -2
  217. package/build/src/third_party/issue-descriptions/sharedDictionaryWriteErrorInvalidStructuredHeader.md +1 -1
  218. package/build/src/third_party/issue-descriptions/sharedDictionaryWriteErrorNavigationRequest.md +2 -2
  219. package/build/src/third_party/issue-descriptions/sriInvalidSignatureHeader.md +4 -4
  220. package/build/src/third_party/issue-descriptions/sriInvalidSignatureInputHeader.md +4 -4
  221. package/build/src/third_party/issue-descriptions/sriMissingSignatureHeader.md +1 -1
  222. package/build/src/third_party/issue-descriptions/sriMissingSignatureInputHeader.md +2 -2
  223. package/build/src/third_party/issue-descriptions/sriSignatureHeaderValueIsIncorrectLength.md +2 -2
  224. package/build/src/third_party/issue-descriptions/sriSignatureHeaderValueIsNotByteSequence.md +4 -4
  225. package/build/src/third_party/issue-descriptions/sriSignatureHeaderValueIsParameterized.md +4 -4
  226. package/build/src/third_party/issue-descriptions/sriSignatureInputHeaderInvalidComponentName.md +1 -1
  227. package/build/src/third_party/issue-descriptions/sriSignatureInputHeaderInvalidComponentType.md +2 -2
  228. package/build/src/third_party/issue-descriptions/sriSignatureInputHeaderInvalidDerivedComponentParameter.md +1 -1
  229. package/build/src/third_party/issue-descriptions/sriSignatureInputHeaderInvalidHeaderComponentParameter.md +1 -1
  230. package/build/src/third_party/issue-descriptions/sriSignatureInputHeaderInvalidParameter.md +2 -2
  231. package/build/src/third_party/issue-descriptions/sriSignatureInputHeaderKeyIdLength.md +5 -5
  232. package/build/src/third_party/issue-descriptions/sriSignatureInputHeaderMissingLabel.md +3 -3
  233. package/build/src/third_party/issue-descriptions/sriSignatureInputHeaderMissingRequiredParameters.md +2 -2
  234. package/build/src/third_party/issue-descriptions/sriSignatureInputHeaderValueMissingComponents.md +2 -2
  235. package/build/src/third_party/issue-descriptions/sriSignatureInputHeaderValueNotInnerList.md +2 -2
  236. package/build/src/third_party/issue-descriptions/sriValidationFailedIntegrityMismatch.md +4 -4
  237. package/build/src/third_party/issue-descriptions/sriValidationFailedInvalidLength.md +3 -3
  238. package/build/src/third_party/issue-descriptions/sriValidationFailedSignatureExpired.md +2 -2
  239. package/build/src/third_party/issue-descriptions/sriValidationFailedSignatureMismatch.md +2 -2
  240. package/build/src/third_party/issue-descriptions/stylesheetLateImport.md +1 -1
  241. package/build/src/third_party/issue-descriptions/summaryElementAccessibilityInteractiveContentSummaryDescendant.md +1 -1
  242. package/build/src/third_party/issue-descriptions/unencodedDigestIncorrectDigestLength.md +2 -2
  243. package/build/src/third_party/issue-descriptions/unencodedDigestIncorrectDigestType.md +3 -3
  244. package/build/src/third_party/issue-descriptions/unencodedDigestMalformedDictionary.md +2 -2
  245. package/build/src/third_party/issue-descriptions/unencodedDigestUnknownAlgorithm.md +1 -1
  246. package/build/src/third_party/lighthouse-devtools-mcp-bundle.js +3177 -6340
  247. package/build/src/tools/categories.js +3 -0
  248. package/build/src/tools/console.js +6 -0
  249. package/build/src/tools/emulation.js +2 -2
  250. package/build/src/tools/extensions.js +1 -1
  251. package/build/src/tools/input.js +223 -119
  252. package/build/src/tools/lighthouse.js +1 -1
  253. package/build/src/tools/memory.js +49 -4
  254. package/build/src/tools/network.js +5 -5
  255. package/build/src/tools/pages.js +22 -89
  256. package/build/src/tools/performance.js +61 -41
  257. package/build/src/tools/pwa.js +126 -0
  258. package/build/src/tools/screenshot.js +152 -77
  259. package/build/src/tools/script.js +102 -29
  260. package/build/src/tools/snapshot.js +2 -2
  261. package/build/src/tools/thirdPartyDeveloper.js +1 -1
  262. package/build/src/tools/tools.js +2 -0
  263. package/build/src/tools/webmcp.js +1 -1
  264. package/build/src/trace-processing/parse.js +1 -1
  265. package/build/src/utils/check-for-updates.js +1 -1
  266. package/build/src/{logger.js → utils/logger.js} +1 -1
  267. package/build/src/utils/polyfill.js +11 -0
  268. package/build/src/utils/url.js +43 -0
  269. package/build/src/version.js +1 -1
  270. package/package.json +34 -23
  271. package/skills/a11y-debugging/SKILL.md +2 -2
  272. package/skills/{chrome-devtools → brave-devtools}/SKILL.md +7 -7
  273. package/skills/brave-devtools-cli/SKILL.md +153 -0
  274. package/skills/brave-devtools-cli/references/installation.md +14 -0
  275. package/skills/debug-optimize-lcp/SKILL.md +1 -1
  276. package/skills/memory-leak-debugging/SKILL.md +24 -20
  277. package/skills/memory-leak-debugging/references/common-leaks.md +1 -1
  278. package/skills/troubleshooting/SKILL.md +17 -17
  279. package/build/src/Mutex.js +0 -38
  280. package/build/src/devtools/DevToolsConnectionAdapter.js +0 -70
  281. package/build/src/polyfill.js +0 -8
  282. package/build/src/third_party/issue-descriptions/SameSiteExcludeContextDowngradeRead.md +0 -8
  283. package/build/src/third_party/issue-descriptions/SameSiteExcludeContextDowngradeSet.md +0 -8
  284. package/build/src/third_party/issue-descriptions/SameSiteExcludeNavigationContextDowngrade.md +0 -8
  285. package/build/src/third_party/issue-descriptions/SameSiteWarnCrossDowngradeRead.md +0 -8
  286. package/build/src/third_party/issue-descriptions/SameSiteWarnCrossDowngradeSet.md +0 -8
  287. package/build/src/third_party/issue-descriptions/SameSiteWarnStrictLaxDowngradeStrict.md +0 -8
  288. package/build/src/third_party/issue-descriptions/arInsecureContext.md +0 -7
  289. package/build/src/third_party/issue-descriptions/arInvalidInfoHeader.md +0 -5
  290. package/build/src/third_party/issue-descriptions/arInvalidRegisterOsSourceHeader.md +0 -5
  291. package/build/src/third_party/issue-descriptions/arInvalidRegisterOsTriggerHeader.md +0 -5
  292. package/build/src/third_party/issue-descriptions/arInvalidRegisterSourceHeader.md +0 -5
  293. package/build/src/third_party/issue-descriptions/arInvalidRegisterTriggerHeader.md +0 -5
  294. package/build/src/third_party/issue-descriptions/arNavigationRegistrationUniqueScopeAlreadySet.md +0 -5
  295. package/build/src/third_party/issue-descriptions/arNavigationRegistrationWithoutTransientUserActivation.md +0 -6
  296. package/build/src/third_party/issue-descriptions/arNoRegisterOsSourceHeader.md +0 -5
  297. package/build/src/third_party/issue-descriptions/arNoRegisterOsTriggerHeader.md +0 -5
  298. package/build/src/third_party/issue-descriptions/arNoRegisterSourceHeader.md +0 -5
  299. package/build/src/third_party/issue-descriptions/arNoRegisterTriggerHeader.md +0 -5
  300. package/build/src/third_party/issue-descriptions/arNoWebOrOsSupport.md +0 -4
  301. package/build/src/third_party/issue-descriptions/arOsSourceIgnored.md +0 -18
  302. package/build/src/third_party/issue-descriptions/arOsTriggerIgnored.md +0 -19
  303. package/build/src/third_party/issue-descriptions/arPermissionPolicyDisabled.md +0 -8
  304. package/build/src/third_party/issue-descriptions/arSourceAndTriggerHeaders.md +0 -9
  305. package/build/src/third_party/issue-descriptions/arSourceIgnored.md +0 -13
  306. package/build/src/third_party/issue-descriptions/arTriggerIgnored.md +0 -12
  307. package/build/src/third_party/issue-descriptions/arUntrustworthyReportingOrigin.md +0 -10
  308. package/build/src/third_party/issue-descriptions/arWebAndOsHeaders.md +0 -11
  309. package/build/src/utils/types.js +0 -7
  310. package/skills/chrome-devtools-cli/SKILL.md +0 -153
  311. package/skills/chrome-devtools-cli/references/installation.md +0 -14
  312. package/skills/memory-leak-debugging/references/compare_snapshots.js +0 -109
  313. package/skills/memory-leak-debugging/references/memlab.md +0 -29
package/README.md CHANGED
@@ -1,15 +1,15 @@
1
- # Brave MCP
1
+ # Brave DevTools for agents
2
2
 
3
- > Fork of [ChromeDevTools/chrome-devtools-mcp](https://github.com/ChromeDevTools/chrome-devtools-mcp) ported to **Brave Browser**.
4
- >
5
- > npm: `brave-mcp` · repo: `triuzzi/brave-devtools-mcp`
3
+ [![npm brave-mcp package](https://img.shields.io/npm/v/brave-mcp.svg)](https://npmjs.org/package/brave-mcp)
6
4
 
7
- `brave-mcp` lets your coding agent (such as Claude, Cursor, Gemini or Copilot)
5
+ Brave DevTools for agents (`brave-mcp`) lets your coding agent (such as Antigravity, Claude, Cursor or Copilot)
8
6
  control and inspect a live Brave browser. It acts as a Model-Context-Protocol
9
7
  (MCP) server, giving your AI coding assistant access to the full power of
10
- DevTools for reliable automation, in-depth debugging, and performance analysis.
8
+ Brave DevTools for reliable automation, in-depth debugging, and performance analysis.
11
9
  A [CLI](docs/cli.md) is also provided for use without MCP.
12
10
 
11
+ This Brave port tracks [ChromeDevTools/chrome-devtools-mcp](https://github.com/ChromeDevTools/chrome-devtools-mcp) and preserves its complete tool surface.
12
+
13
13
  ## [Tool reference](./docs/tool-reference.md) | [Changelog](./CHANGELOG.md) | [Contributing](./CONTRIBUTING.md) | [Troubleshooting](./docs/troubleshooting.md) | [Design Principles](./docs/design-principles.md)
14
14
 
15
15
  ## Key features
@@ -25,232 +25,128 @@ A [CLI](docs/cli.md) is also provided for use without MCP.
25
25
 
26
26
  ## Disclaimers
27
27
 
28
- `brave-devtools-mcp` exposes content of the browser instance to the MCP clients
28
+ `brave-mcp` exposes content of the browser instance to the MCP clients
29
29
  allowing them to inspect, debug, and modify any data in the browser or DevTools.
30
30
  Avoid sharing sensitive or personal information that you don't want to share with
31
31
  MCP clients.
32
32
 
33
- Performance tools may send trace URLs to the Google CrUX API to fetch real-user
34
- experience data. To disable this, run with the `--no-performance-crux` flag.
35
-
36
- Usage statistics from the upstream project are **disabled by default** in this fork.
37
- You can explicitly enable them with `--usage-statistics` if desired.
33
+ `brave-mcp` officially supports the current Brave release. Beta and Nightly channels can be selected explicitly.
38
34
 
39
- ## Requirements
40
-
41
- - [Node.js](https://nodejs.org/) [LTS](https://github.com/nodejs/Release#release-schedule) version.
42
- - [Brave Browser](https://brave.com/) current release version or newer.
43
- - [npm](https://www.npmjs.com/)
44
-
45
- > **Note:** Do **not** use `chrome-devtools-mcp@latest` from npm — that installs Google's Chrome-oriented server. This fork is `brave-mcp`.
35
+ Performance tools may send trace URLs to the Google CrUX API to fetch real-user
36
+ experience data. This helps provide a holistic performance picture by
37
+ presenting field data alongside lab data. This data is collected by the [Chrome
38
+ User Experience Report (CrUX)](https://developer.chrome.com/docs/crux). To disable
39
+ this, run with the `--no-performance-crux` flag.
46
40
 
47
- ## Setup
41
+ ## **Usage statistics**
48
42
 
49
- ### Quick start (via npm)
43
+ 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:
50
44
 
51
45
  ```json
52
- {
53
- "mcpServers": {
54
- "brave-devtools": {
55
- "command": "npx",
56
- "args": ["-y", "brave-mcp@latest"]
57
- }
58
- }
59
- }
46
+ "args": ["-y", "brave-mcp@latest", "--usage-statistics"]
60
47
  ```
61
48
 
62
- Add this to your MCP client config and you're done. Works with **Claude Code** (`~/.mcp.json`), **Cursor** (Settings → MCP), **VS Code Copilot**, and any other MCP client.
49
+ 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.
63
50
 
64
- ### From source (for development)
65
-
66
- ```sh
67
- git clone https://github.com/triuzzi/brave-devtools-mcp.git
68
- cd brave-devtools-mcp
69
- npm install
70
- npm run build
71
- ```
51
+ ## Update checks
72
52
 
73
- Run `npm run build` again after `git pull` when you update the repo.
53
+ By default, the server periodically checks the npm registry for updates and logs a notification when a newer version is available.
54
+ You can disable these update checks by setting `BRAVE_DEVTOOLS_MCP_NO_UPDATE_CHECKS`.
74
55
 
75
- Then point your MCP config at the built CLI with an **absolute path**:
56
+ ## Requirements
76
57
 
77
- ```json
78
- {
79
- "mcpServers": {
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
- ```
58
+ - [Node.js](https://nodejs.org/) [LTS](https://github.com/nodejs/Release#release-schedule) version.
59
+ - [Brave](https://brave.com/download/) current release or newer.
60
+ - [npm](https://www.npmjs.com/)
89
61
 
90
- This works with **Claude Code** (`~/.mcp.json`), **Cursor** (Settings → MCP → New MCP Server, or `mcp.json`), **VS Code Copilot**, and any other MCP client.
62
+ ## Getting started
91
63
 
92
- If Brave is not detected automatically, set `BRAVE_PATH`:
64
+ Add the following config to your MCP client:
93
65
 
94
66
  ```json
95
67
  {
96
68
  "mcpServers": {
97
69
  "brave-devtools": {
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
- }
70
+ "command": "npx",
71
+ "args": ["-y", "brave-mcp@latest"]
105
72
  }
106
73
  }
107
74
  }
108
75
  ```
109
76
 
110
- ### 3. Choose your connection mode
111
-
112
- The server has two modes: **launch a new instance** (default) or **attach to your existing Brave window**.
113
-
114
- #### Mode A: Launch a new instance (default)
115
-
116
- With the basic config above, the server spawns a dedicated Brave instance with its own profile. Your existing Brave windows are untouched. This is the simplest mode — no extra setup needed.
117
-
118
- #### Mode B: Attach to your existing Brave window
119
-
120
- If you want the MCP server to control the Brave window you already have open (same tabs, cookies, logins), you need to start Brave with remote debugging enabled.
121
-
122
- **Step 1:** Quit Brave completely, then relaunch with the debugging flag:
123
-
124
- ```sh
125
- # macOS
126
- open -a "Brave Browser" --args --remote-debugging-port=9222
127
-
128
- # Linux
129
- brave-browser --remote-debugging-port=9222
130
-
131
- # Windows
132
- "C:\Program Files\BraveSoftware\Brave-Browser\Application\brave.exe" --remote-debugging-port=9222
133
- ```
134
-
135
- > **Tip:** To always start Brave with remote debugging, add `--remote-debugging-port=9222` to Brave's launch shortcut or shell alias so you never have to think about it again.
77
+ > [!NOTE]
78
+ > Using `brave-mcp@latest` ensures that your MCP client will always use the latest version of the Brave DevTools MCP server.
136
79
 
137
- **Step 2:** Add `--browserUrl` to your MCP config:
80
+ If you are interested in doing only basic browser tasks, use the `--slim` mode:
138
81
 
139
82
  ```json
140
83
  {
141
84
  "mcpServers": {
142
85
  "brave-devtools": {
143
86
  "command": "npx",
144
- "args": [
145
- "-y",
146
- "brave-mcp@latest",
147
- "--browserUrl",
148
- "http://localhost:9222"
149
- ]
150
- }
151
- }
152
- }
153
- ```
154
-
155
- Or if running from source:
156
-
157
- ```json
158
- {
159
- "mcpServers": {
160
- "brave-devtools": {
161
- "command": "node",
162
- "args": [
163
- "/absolute/path/to/brave-devtools-mcp/build/src/bin/brave-devtools-mcp.js",
164
- "--browserUrl",
165
- "http://localhost:9222"
166
- ]
87
+ "args": ["-y", "brave-mcp@latest", "--slim", "--headless"]
167
88
  }
168
89
  }
169
90
  }
170
91
  ```
171
92
 
172
- Without `--browserUrl`, the server will always launch a new instance. With it, the server attaches to your running Brave instead.
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
93
+ See [Slim tool reference](./docs/slim-tool-reference.md).
185
94
 
186
- An integration test suite exercises all 29 MCP tools against a running Brave instance:
95
+ ### MCP Client configuration
187
96
 
188
- ```sh
189
- # Launch Brave with remote debugging
190
- open -a "Brave Browser" --args --remote-debugging-port=9222
97
+ <details>
98
+ <summary>Amp</summary>
99
+ 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
100
 
192
- # Run all 36 test cases
193
- npm run test:brave
101
+ ```bash
102
+ amp mcp add brave-devtools -- npx brave-mcp@latest
194
103
  ```
195
104
 
196
- Tests cover navigation, snapshots, screenshots, script execution, input automation (click/fill/drag/upload), dialogs, console, network, emulation, performance tracing, memory snapshots, and Lighthouse audits.
105
+ </details>
197
106
 
198
- ## Getting started
107
+ <details>
108
+ <summary>Antigravity</summary>
199
109
 
200
- If you are interested in only basic browser tasks, use `--slim` mode:
110
+ 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
111
 
202
- ```json
112
+ ```bash
203
113
  {
204
114
  "mcpServers": {
205
115
  "brave-devtools": {
206
- "command": "node",
116
+ "command": "npx",
207
117
  "args": [
208
- "/absolute/path/to/brave-devtools-mcp/build/src/bin/brave-devtools-mcp.js",
209
- "--slim",
210
- "--headless"
118
+ "-y",
119
+ "brave-mcp@latest",
120
+ "--browser-url=http://127.0.0.1:9222"
211
121
  ]
212
122
  }
213
123
  }
214
124
  }
215
125
  ```
216
126
 
217
- See [Slim tool reference](./docs/slim-tool-reference.md).
127
+ 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.
218
128
 
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:
224
-
225
- ```bash
226
- amp mcp add chrome-devtools -- npx chrome-devtools-mcp@latest
227
- ```
129
+ 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
130
 
229
131
  </details>
230
132
 
231
133
  <details>
232
- <summary>Antigravity</summary>
134
+ <summary>Bob</summary>
233
135
 
234
- To use the Chrome 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:
136
+ 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
137
 
236
- ```bash
138
+ ```json
237
139
  {
238
140
  "mcpServers": {
239
- "chrome-devtools": {
141
+ "brave-devtools": {
240
142
  "command": "npx",
241
- "args": [
242
- "-y",
243
- "chrome-devtools-mcp@latest",
244
- "--browser-url=http://127.0.0.1:9222"
245
- ]
143
+ "args": ["-y", "brave-mcp@latest"]
246
144
  }
247
145
  }
248
146
  }
249
147
  ```
250
148
 
251
- This will make the Chrome DevTools MCP server automatically connect to the browser that Antigravity is using. If you are not using port 9222, make sure to adjust accordingly.
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.
149
+ 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
150
 
255
151
  </details>
256
152
 
@@ -259,27 +155,27 @@ Chrome DevTools MCP will not start the browser instance automatically using this
259
155
 
260
156
  **Install via CLI (MCP only)**
261
157
 
262
- Use the Claude Code CLI to add the Chrome DevTools MCP server (<a href="https://code.claude.com/docs/en/mcp">guide</a>):
158
+ Use the Claude Code CLI to add the Brave DevTools MCP server (<a href="https://code.claude.com/docs/en/mcp">guide</a>):
263
159
 
264
160
  ```bash
265
- claude mcp add chrome-devtools --scope user npx chrome-devtools-mcp@latest
161
+ claude mcp add brave-devtools --scope user npx brave-mcp@latest
266
162
  ```
267
163
 
268
164
  **Install as a Plugin (MCP + Skills)**
269
165
 
270
166
  > [!NOTE]
271
- > If you already had Chrome DevTools MCP installed previously for Claude Code, make sure to remove it first from your installation and configuration files.
167
+ > 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
168
 
273
- To install Chrome DevTools MCP with skills, add the marketplace registry in Claude Code:
169
+ To install Brave DevTools MCP with skills, add the marketplace registry in Claude Code:
274
170
 
275
171
  ```sh
276
- /plugin marketplace add ChromeDevTools/chrome-devtools-mcp
172
+ /plugin marketplace add triuzzi/brave-devtools-mcp
277
173
  ```
278
174
 
279
175
  Then, install the plugin:
280
176
 
281
177
  ```sh
282
- /plugin install chrome-devtools-mcp@chrome-devtools-plugins
178
+ /plugin install brave-devtools-mcp@brave-devtools-plugins
283
179
  ```
284
180
 
285
181
  Restart Claude Code to have the MCP server and skills load (check with `/skills`).
@@ -297,24 +193,24 @@ Restart Claude Code to have the MCP server and skills load (check with `/skills`
297
193
  <details>
298
194
  <summary>Codex</summary>
299
195
  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 Chrome DevTools MCP server using the Codex CLI:
196
+ using the standard config from above. You can also install the Brave DevTools MCP server using the Codex CLI:
301
197
 
302
198
  ```bash
303
- codex mcp add chrome-devtools -- npx chrome-devtools-mcp@latest
199
+ codex mcp add brave-devtools -- npx brave-mcp@latest
304
200
  ```
305
201
 
306
202
  **On Windows 11**
307
203
 
308
- Configure the Chrome install location and increase the startup timeout by updating `.codex/config.toml` and adding the following `env` and `startup_timeout_ms` parameters:
204
+ 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
205
 
310
206
  ```
311
- [mcp_servers.chrome-devtools]
207
+ [mcp_servers.brave-devtools]
312
208
  command = "cmd"
313
209
  args = [
314
210
  "/c",
315
211
  "npx",
316
212
  "-y",
317
- "chrome-devtools-mcp@latest",
213
+ "brave-mcp@latest",
318
214
  ]
319
215
  env = { SystemRoot="C:\\Windows", PROGRAMFILES="C:\\Program Files" }
320
216
  startup_timeout_ms = 20_000
@@ -325,10 +221,10 @@ startup_timeout_ms = 20_000
325
221
  <details>
326
222
  <summary>Command Code</summary>
327
223
 
328
- Use the Command Code CLI to add the Chrome DevTools MCP server (<a href="https://commandcode.ai/docs/mcp">MCP guide</a>):
224
+ Use the Command Code CLI to add the Brave DevTools MCP server (<a href="https://commandcode.ai/docs/mcp">MCP guide</a>):
329
225
 
330
226
  ```bash
331
- cmd mcp add chrome-devtools --scope user npx chrome-devtools-mcp@latest
227
+ cmd mcp add brave-devtools --scope user npx brave-mcp@latest
332
228
  ```
333
229
 
334
230
  </details>
@@ -350,9 +246,9 @@ Start the dialog to add a new MCP server by running:
350
246
 
351
247
  Configure the following fields and press `CTRL+S` to save the configuration:
352
248
 
353
- - **Server name:** `chrome-devtools`
249
+ - **Server name:** `brave-devtools`
354
250
  - **Server Type:** `[1] Local`
355
- - **Command:** `npx -y chrome-devtools-mcp@latest`
251
+ - **Command:** `npx -y brave-mcp@latest`
356
252
 
357
253
  </details>
358
254
 
@@ -361,15 +257,15 @@ Configure the following fields and press `CTRL+S` to save the configuration:
361
257
 
362
258
  **Install as a Plugin (Recommended)**
363
259
 
364
- The easiest way to get up and running is to install `chrome-devtools-mcp` as an agent plugin.
260
+ The easiest way to get up and running is to install `brave-mcp` as an agent plugin.
365
261
  This bundles the **MCP server** and all **skills** together, so your agent gets both the tools
366
262
  and the expert guidance it needs to use them effectively.
367
263
 
368
264
  1. Open the **Command Palette** (`Cmd+Shift+P` on macOS or `Ctrl+Shift+P` on Windows/Linux).
369
265
  2. Search for and run the **Chat: Install Plugin From Source** command.
370
- 3. Paste in our repository name: `ChromeDevTools/chrome-devtools-mcp`.
266
+ 3. Paste in our repository name: `triuzzi/brave-devtools-mcp`.
371
267
 
372
- That's it! Your agent is now supercharged with Chrome DevTools capabilities.
268
+ That's it! Your agent is now supercharged with Brave DevTools capabilities.
373
269
 
374
270
  ---
375
271
 
@@ -377,9 +273,9 @@ That's it! Your agent is now supercharged with Chrome DevTools capabilities.
377
273
 
378
274
  **Click the button to install:**
379
275
 
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.ChromeDevTools%2Fchrome-devtools-mcp&config=%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22chrome-devtools-mcp%22%5D%2C%22env%22%3A%7B%7D%7D)
276
+ [<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
277
 
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.ChromeDevTools%252Fchrome-devtools-mcp%2522%252C%2522config%2522%253A%257B%2522command%2522%253A%2522npx%2522%252C%2522args%2522%253A%255B%2522-y%2522%252C%2522chrome-devtools-mcp%2522%255D%252C%2522env%2522%253A%257B%257D%257D%257D)
278
+ [<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
279
 
384
280
  **Or install manually:**
385
281
 
@@ -388,13 +284,13 @@ Follow the VS Code [MCP configuration guide](https://code.visualstudio.com/docs/
388
284
  For macOS and Linux:
389
285
 
390
286
  ```bash
391
- code --add-mcp '{"name":"io.github.ChromeDevTools/chrome-devtools-mcp","command":"npx","args":["-y","chrome-devtools-mcp"],"env":{}}'
287
+ code --add-mcp '{"name":"io.github.triuzzi/brave-devtools-mcp","command":"npx","args":["-y","brave-mcp"],"env":{}}'
392
288
  ```
393
289
 
394
290
  For Windows (PowerShell):
395
291
 
396
292
  ```powershell
397
- code --add-mcp '{"""name""":"""io.github.ChromeDevTools/chrome-devtools-mcp""","""command""":"""npx""","""args""":["""-y""","""chrome-devtools-mcp"""]}'
293
+ code --add-mcp '{"""name""":"""io.github.triuzzi/brave-devtools-mcp""","""command""":"""npx""","""args""":["""-y""","""brave-mcp"""]}'
398
294
  ```
399
295
 
400
296
  </details>
@@ -404,7 +300,7 @@ code --add-mcp '{"""name""":"""io.github.ChromeDevTools/chrome-devtools-mcp""","
404
300
 
405
301
  **Click the button to install:**
406
302
 
407
- [<img src="https://cursor.com/deeplink/mcp-install-dark.svg" alt="Install in Cursor">](https://cursor.com/en/install-mcp?name=chrome-devtools&config=eyJjb21tYW5kIjoibnB4IC15IGNocm9tZS1kZXZ0b29scy1tY3BAbGF0ZXN0In0%3D)
303
+ [<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
304
 
409
305
  **Or install manually:**
410
306
 
@@ -412,33 +308,46 @@ Go to `Cursor Settings` -> `MCP` -> `New MCP Server`. Use the config provided ab
412
308
 
413
309
  </details>
414
310
 
311
+ <details>
312
+ <summary>Devin CLI</summary>
313
+
314
+ **Install via CLI (MCP only)**
315
+
316
+ Use the Devin CLI to add the Brave DevTools MCP server (<a href="https://docs.devin.ai/cli/extensibility/mcp/configuration">guide</a>):
317
+
318
+ ```bash
319
+ devin mcp add brave-devtools -- npx brave-mcp@latest
320
+ ```
321
+
322
+ </details>
323
+
415
324
  <details>
416
325
  <summary>Factory CLI</summary>
417
- Use the Factory CLI to add the Chrome DevTools MCP server (<a href="https://docs.factory.ai/cli/configuration/mcp">guide</a>):
326
+ Use the Factory CLI to add the Brave DevTools MCP server (<a href="https://docs.factory.ai/cli/configuration/mcp">guide</a>):
418
327
 
419
328
  ```bash
420
- droid mcp add chrome-devtools "npx -y chrome-devtools-mcp@latest"
329
+ droid mcp add brave-devtools "npx -y brave-mcp@latest"
421
330
  ```
422
331
 
423
332
  </details>
424
333
 
425
334
  <details>
426
335
  <summary>Gemini CLI</summary>
427
- Install the Chrome DevTools MCP server using the Gemini CLI.
336
+ Install the Brave DevTools MCP server using the Gemini CLI.
428
337
 
429
338
  **Project wide:**
430
339
 
431
340
  ```bash
432
341
  # Either MCP only:
433
- gemini mcp add chrome-devtools npx chrome-devtools-mcp@latest
342
+ gemini mcp add brave-devtools npx brave-mcp@latest
434
343
  # Or as a Gemini extension (MCP+Skills):
435
- gemini extensions install --auto-update https://github.com/ChromeDevTools/chrome-devtools-mcp
344
+ gemini extensions install --auto-update https://github.com/triuzzi/brave-devtools-mcp
436
345
  ```
437
346
 
438
347
  **Globally:**
439
348
 
440
349
  ```bash
441
- gemini mcp add -s user chrome-devtools npx chrome-devtools-mcp@latest
350
+ gemini mcp add -s user brave-devtools npx brave-mcp@latest
442
351
  ```
443
352
 
444
353
  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.
@@ -451,11 +360,21 @@ Alternatively, follow the <a href="https://github.com/google-gemini/gemini-cli/b
451
360
  using the standard config from above.
452
361
  </details>
453
362
 
363
+ <details>
364
+ <summary>Grok Build CLI</summary>
365
+
366
+ ```bash
367
+ grok mcp add brave-devtools npx brave-mcp@latest
368
+ ```
369
+
370
+ See the <a href="https://docs.x.ai/build/features/skills-plugins-marketplaces">docs</a> for more options
371
+ </details>
372
+
454
373
  <details>
455
374
  <summary>JetBrains AI Assistant & Junie</summary>
456
375
 
457
376
  Go to `Settings | Tools | AI Assistant | Model Context Protocol (MCP)` -> `Add`. Use the config provided above.
458
- The same way chrome-devtools-mcp can be configured for JetBrains Junie in `Settings | Tools | Junie | MCP Settings` -> `Add`. Use the config provided above.
377
+ The same way brave-mcp can be configured for JetBrains Junie in `Settings | Tools | Junie | MCP Settings` -> `Add`. Use the config provided above.
459
378
 
460
379
  </details>
461
380
 
@@ -471,14 +390,14 @@ Or, from the IDE **Activity Bar** > `Kiro` > `MCP Servers` > `Click Open MCP Con
471
390
  <details>
472
391
  <summary>Katalon Studio</summary>
473
392
 
474
- The Chrome DevTools MCP server can be used with <a href="https://docs.katalon.com/katalon-studio/studioassist/mcp-servers/setting-up-chrome-devtools-mcp-server-for-studioassist">Katalon StudioAssist</a> via an MCP proxy.
393
+ The Brave DevTools MCP server can be used with Katalon StudioAssist via an MCP proxy.
475
394
 
476
395
  **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>.
477
396
 
478
- **Step 2:** Start the Chrome DevTools MCP server with the proxy:
397
+ **Step 2:** Start the Brave DevTools MCP server with the proxy:
479
398
 
480
399
  ```bash
481
- mcp-proxy --transport streamablehttp --port 8080 -- npx -y chrome-devtools-mcp@latest
400
+ mcp-proxy --transport streamablehttp --port 8080 -- npx -y brave-mcp@latest
482
401
  ```
483
402
 
484
403
  **Note:** You may need to pick another port if 8080 is already in use.
@@ -488,7 +407,7 @@ mcp-proxy --transport streamablehttp --port 8080 -- npx -y chrome-devtools-mcp@l
488
407
  - **Connection URL:** `http://127.0.0.1:8080/mcp`
489
408
  - **Transport type:** `HTTP`
490
409
 
491
- Once connected, the Chrome DevTools MCP tools will be available in StudioAssist.
410
+ Once connected, the Brave DevTools MCP tools will be available in StudioAssist.
492
411
 
493
412
  </details>
494
413
 
@@ -499,10 +418,10 @@ Add in ~/.vibe/config.toml:
499
418
 
500
419
  ```toml
501
420
  [[mcp_servers]]
502
- name = "chrome-devtools"
421
+ name = "brave-devtools"
503
422
  transport = "stdio"
504
423
  command = "npx"
505
- args = ["chrome-devtools-mcp@latest"]
424
+ args = ["brave-mcp@latest"]
506
425
  ```
507
426
 
508
427
  </details>
@@ -516,9 +435,9 @@ Add the following configuration to your `opencode.json` file. If you don't have
516
435
  {
517
436
  "$schema": "https://opencode.ai/config.json",
518
437
  "mcp": {
519
- "chrome-devtools": {
438
+ "brave-devtools": {
520
439
  "type": "local",
521
- "command": ["npx", "-y", "chrome-devtools-mcp@latest"]
440
+ "command": ["npx", "-y", "brave-mcp@latest"]
522
441
  }
523
442
  }
524
443
  }
@@ -538,18 +457,18 @@ Alternatively, follow the <a href="https://docs.qoder.com/user-guide/chat/model-
538
457
  <details>
539
458
  <summary>Qoder CLI</summary>
540
459
 
541
- Install the Chrome DevTools MCP server using the Qoder CLI (<a href="https://docs.qoder.com/cli/using-cli#mcp-servers">guide</a>):
460
+ Install the Brave DevTools MCP server using the Qoder CLI (<a href="https://docs.qoder.com/cli/using-cli#mcp-servers">guide</a>):
542
461
 
543
462
  **Project wide:**
544
463
 
545
464
  ```bash
546
- qodercli mcp add chrome-devtools -- npx chrome-devtools-mcp@latest
465
+ qodercli mcp add brave-devtools -- npx brave-mcp@latest
547
466
  ```
548
467
 
549
468
  **Globally:**
550
469
 
551
470
  ```bash
552
- qodercli mcp add -s user chrome-devtools -- npx chrome-devtools-mcp@latest
471
+ qodercli mcp add -s user brave-devtools -- npx brave-mcp@latest
553
472
  ```
554
473
 
555
474
  </details>
@@ -559,7 +478,7 @@ qodercli mcp add -s user chrome-devtools -- npx chrome-devtools-mcp@latest
559
478
 
560
479
  **Click the button to install:**
561
480
 
562
- [<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%22chrome-devtools%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22chrome-devtools-mcp%40latest%22%5D%7D)
481
+ [<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)
563
482
 
564
483
  </details>
565
484
 
@@ -581,10 +500,10 @@ Go to `Settings | AI | Manage MCP Servers` -> `+ Add` to [add an MCP Server](htt
581
500
  Enter the following prompt in your MCP Client to check if everything is working:
582
501
 
583
502
  ```
584
- Check the performance of https://example.com
503
+ Check the performance of https://developers.chrome.com
585
504
  ```
586
505
 
587
- Your MCP client should open Brave (or attach to the running instance) and record a performance trace.
506
+ Your MCP client should open the browser and record a performance trace.
588
507
 
589
508
  > [!NOTE]
590
509
  > 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.
@@ -632,7 +551,7 @@ If you run into any issues, checkout our [troubleshooting guide](./docs/troubles
632
551
  - [`take_snapshot`](docs/tool-reference.md#take_snapshot)
633
552
  - [`screencast_start`](docs/tool-reference.md#screencast_start)
634
553
  - [`screencast_stop`](docs/tool-reference.md#screencast_stop)
635
- - **Memory** (11 tools)
554
+ - **Memory** (12 tools)
636
555
  - [`take_heapsnapshot`](docs/tool-reference.md#take_heapsnapshot)
637
556
  - [`close_heapsnapshot`](docs/tool-reference.md#close_heapsnapshot)
638
557
  - [`compare_heapsnapshots`](docs/tool-reference.md#compare_heapsnapshots)
@@ -641,6 +560,7 @@ If you run into any issues, checkout our [troubleshooting guide](./docs/troubles
641
560
  - [`get_heapsnapshot_dominators`](docs/tool-reference.md#get_heapsnapshot_dominators)
642
561
  - [`get_heapsnapshot_duplicate_strings`](docs/tool-reference.md#get_heapsnapshot_duplicate_strings)
643
562
  - [`get_heapsnapshot_edges`](docs/tool-reference.md#get_heapsnapshot_edges)
563
+ - [`get_heapsnapshot_object_details`](docs/tool-reference.md#get_heapsnapshot_object_details)
644
564
  - [`get_heapsnapshot_retainers`](docs/tool-reference.md#get_heapsnapshot_retainers)
645
565
  - [`get_heapsnapshot_retaining_paths`](docs/tool-reference.md#get_heapsnapshot_retaining_paths)
646
566
  - [`get_heapsnapshot_summary`](docs/tool-reference.md#get_heapsnapshot_summary)
@@ -656,22 +576,27 @@ If you run into any issues, checkout our [troubleshooting guide](./docs/troubles
656
576
  - **WebMCP** (2 tools)
657
577
  - [`execute_webmcp_tool`](docs/tool-reference.md#execute_webmcp_tool)
658
578
  - [`list_webmcp_tools`](docs/tool-reference.md#list_webmcp_tools)
579
+ - **Progressive Web Apps** (4 tools)
580
+ - [`get_os_app_state`](docs/tool-reference.md#get_os_app_state)
581
+ - [`install_pwa`](docs/tool-reference.md#install_pwa)
582
+ - [`launch_pwa`](docs/tool-reference.md#launch_pwa)
583
+ - [`uninstall_pwa`](docs/tool-reference.md#uninstall_pwa)
659
584
 
660
585
  <!-- END AUTO GENERATED TOOLS -->
661
586
 
662
587
  ## Configuration
663
588
 
664
- The Brave DevTools MCP server supports the following configuration options:
589
+ The Brave DevTools MCP server supports the following configuration option:
665
590
 
666
591
  <!-- BEGIN AUTO GENERATED OPTIONS -->
667
592
 
668
593
  - **`--autoConnect`/ `--auto-connect`**
669
- If specified, automatically connects to a Brave instance running locally from the user data directory identified by the channel param (default channel is release). Requires the remote debugging server to be started in the Brave instance via brave://inspect/#remote-debugging.
594
+ 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.
670
595
  - **Type:** boolean
671
596
  - **Default:** `false`
672
597
 
673
598
  - **`--browserUrl`/ `--browser-url`, `-u`**
674
- Connect to a running, debuggable Brave instance (e.g. `http://127.0.0.1:9222`).
599
+ 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.
675
600
  - **Type:** string
676
601
  - **Default:** `false`
677
602
 
@@ -691,7 +616,7 @@ The Brave DevTools MCP server supports the following configuration options:
691
616
  - **Default:** `false`
692
617
 
693
618
  - **`--executablePath`/ `--executable-path`, `-e`**
694
- Path to custom Brave executable. Can also be set via BRAVE_PATH environment variable.
619
+ Path to a custom Brave executable. Can also be set via BRAVE_PATH.
695
620
  - **Type:** string
696
621
  - **Default:** `false`
697
622
 
@@ -706,9 +631,9 @@ The Brave DevTools MCP server supports the following configuration options:
706
631
  - **Default:** `false`
707
632
 
708
633
  - **`--channel`**
709
- Specify a different Brave channel that should be used. The default is the release channel.
634
+ Specify a different Brave channel. The default is the release channel.
710
635
  - **Type:** string
711
- - **Choices:** `release`, `beta`, `nightly`, `dev`
636
+ - **Choices:** `release`, `beta`, `nightly`
712
637
  - **Default:** `false`
713
638
 
714
639
  - **`--logFile`/ `--log-file`**
@@ -717,7 +642,7 @@ The Brave DevTools MCP server supports the following configuration options:
717
642
  - **Default:** `false`
718
643
 
719
644
  - **`--viewport`**
720
- Initial viewport size for the Brave instances started by the server. For example, `1280x720`. In headless mode, max size is 3840x2160px.
645
+ Initial viewport size for Brave instances started by the server. For example, `1280x720`. In headless mode, max size is 3840x2160px.
721
646
  - **Type:** string
722
647
  - **Default:** `false`
723
648
 
@@ -772,7 +697,7 @@ The Brave DevTools MCP server supports the following configuration options:
772
697
  - **Default:** `false`
773
698
 
774
699
  - **`--categoryExperimentalWebmcp`/ `--category-experimental-webmcp`**
775
- Set to true to enable debugging WebMCP tools. Requires Brave with the following flags: `--enable-features=WebMCP,DevToolsWebMCPSupport`
700
+ Set to true to enable debugging WebMCP tools. Requires a recent Brave version with the following flags: `--enable-features=WebMCP,DevToolsWebMCPSupport`
776
701
  - **Type:** boolean
777
702
  - **Default:** `false`
778
703
 
@@ -787,7 +712,7 @@ The Brave DevTools MCP server supports the following configuration options:
787
712
  - **Default:** `false`
788
713
 
789
714
  - **`--allowedUrlPattern`/ `--allowed-url-pattern`**
790
- Restricts browser's network access by allowing only specified URL patterns (uses https://urlpattern.spec.whatwg.org/). Requires Chrome 149+. Silently detaches from targets with unallowed URLs upon connection, and blocks runtime requests (including navigations and subresources). Accepts an array of patterns.
715
+ 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.
791
716
  - **Type:** array
792
717
  - **Default:** `false`
793
718
 
@@ -812,7 +737,7 @@ The Brave DevTools MCP server supports the following configuration options:
812
737
  - **Default:** `true`
813
738
 
814
739
  - **`--categoryExtensions`/ `--category-extensions`**
815
- Set to true to include tools related to extensions. Note: This feature is currently only supported with a pipe connection. autoConnect, browserUrl, and wsEndpoint are not supported with this feature until 149 will be released.
740
+ 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.
816
741
  - **Type:** boolean
817
742
  - **Default:** `false`
818
743
 
@@ -821,13 +746,18 @@ The Brave DevTools MCP server supports the following configuration options:
821
746
  - **Type:** boolean
822
747
  - **Default:** `false`
823
748
 
749
+ - **`--categoryPwa`/ `--category-pwa`**
750
+ 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.
751
+ - **Type:** boolean
752
+ - **Default:** `false`
753
+
824
754
  - **`--performanceCrux`/ `--performance-crux`**
825
755
  Set to false to disable sending URLs from performance traces to CrUX API to get field performance data.
826
756
  - **Type:** boolean
827
757
  - **Default:** `true`
828
758
 
829
759
  - **`--usageStatistics`/ `--usage-statistics`**
830
- Usage statistics collection (disabled by default in this fork).
760
+ Usage statistics collection is disabled by default in this fork.
831
761
  - **Type:** boolean
832
762
  - **Default:** `false`
833
763
 
@@ -862,6 +792,11 @@ The Brave DevTools MCP server supports the following configuration options:
862
792
  - **Type:** boolean
863
793
  - **Default:** `false`
864
794
 
795
+ - **`--allowUnrestrictedPaths`/ `--allow-unrestricted-paths`**
796
+ If set, disables the default path restriction that applies when the MCP client does not negotiate the roots capability. By default, file-writing tools are restricted to the OS temp directory when no roots are configured. Use this only when connecting a trusted local client that does not implement MCP roots and requires access to paths outside the temp directory.
797
+ - **Type:** boolean
798
+ - **Default:** `false`
799
+
865
800
  <!-- END AUTO GENERATED OPTIONS -->
866
801
 
867
802
  Pass them via the `args` property in the JSON configuration. For example:
@@ -869,11 +804,11 @@ Pass them via the `args` property in the JSON configuration. For example:
869
804
  ```json
870
805
  {
871
806
  "mcpServers": {
872
- "chrome-devtools": {
807
+ "brave-devtools": {
873
808
  "command": "npx",
874
809
  "args": [
875
- "chrome-devtools-mcp@latest",
876
- "--channel=canary",
810
+ "brave-mcp@latest",
811
+ "--channel=nightly",
877
812
  "--headless=true",
878
813
  "--isolated=true"
879
814
  ]
@@ -884,15 +819,15 @@ Pass them via the `args` property in the JSON configuration. For example:
884
819
 
885
820
  ### Connecting via WebSocket with custom headers
886
821
 
887
- You can connect directly to a Chrome WebSocket endpoint and include custom headers (e.g., for authentication):
822
+ You can connect directly to a Brave WebSocket endpoint and include custom headers (e.g., for authentication):
888
823
 
889
824
  ```json
890
825
  {
891
826
  "mcpServers": {
892
- "chrome-devtools": {
827
+ "brave-devtools": {
893
828
  "command": "npx",
894
829
  "args": [
895
- "chrome-devtools-mcp@latest",
830
+ "brave-mcp@latest",
896
831
  "--wsEndpoint=ws://127.0.0.1:9222/devtools/browser/<id>",
897
832
  "--wsHeaders={\"Authorization\":\"Bearer YOUR_TOKEN\"}"
898
833
  ]
@@ -901,15 +836,15 @@ You can connect directly to a Chrome WebSocket endpoint and include custom heade
901
836
  }
902
837
  ```
903
838
 
904
- To get the WebSocket endpoint from a running Chrome instance, visit `http://127.0.0.1:9222/json/version` and look for the `webSocketDebuggerUrl` field.
839
+ 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.
905
840
 
906
- You can also run `npx chrome-devtools-mcp@latest --help` to see all available configuration options.
841
+ You can also run `npx brave-mcp@latest --help` to see all available configuration options.
907
842
 
908
843
  ## Concepts
909
844
 
910
845
  ### Concurrent sessions
911
846
 
912
- Most MCP clients start one Chrome DevTools MCP server per conversation. If your
847
+ Most MCP clients start one Brave DevTools MCP server per conversation. If your
913
848
  client shares a single server instance across concurrent agents or subagents,
914
849
  start the server with `--experimentalPageIdRouting`. This exposes `pageId` on
915
850
  page-scoped tools so each agent can route tool calls to the tab it is working
@@ -918,45 +853,158 @@ with.
918
853
  ```json
919
854
  {
920
855
  "mcpServers": {
921
- "chrome-devtools": {
856
+ "brave-devtools": {
922
857
  "command": "npx",
923
- "args": [
924
- "-y",
925
- "chrome-devtools-mcp@latest",
926
- "--experimentalPageIdRouting"
927
- ]
858
+ "args": ["-y", "brave-mcp@latest", "--experimentalPageIdRouting"]
928
859
  }
929
860
  }
930
861
  }
931
862
  ```
932
863
 
933
864
  If you run multiple independent MCP client sessions and want each session to
934
- launch its own temporary Chrome profile, also pass `--isolated`. This avoids
935
- sharing the default Chrome DevTools MCP user data directory between those
865
+ launch its own temporary Brave profile, also pass `--isolated`. This avoids
866
+ sharing the default Brave DevTools MCP user data directory between those
936
867
  server instances.
937
868
 
938
869
  ### User data directory
939
870
 
940
- `brave-devtools-mcp` starts a Brave release channel instance using the following user
871
+ By default, `brave-mcp` starts the Brave release channel using the following user
941
872
  data directory:
942
873
 
943
- - Linux / macOS: `$HOME/.cache/brave-devtools-mcp/brave-profile-$CHANNEL`
944
- - Windows: `%HOMEPATH%/.cache/brave-devtools-mcp/brave-profile-$CHANNEL`
874
+ - Linux / macOS: `$HOME/.cache/brave-devtools-mcp/brave-profile`
875
+ - Windows: `%USERPROFILE%\.cache\brave-devtools-mcp\brave-profile`
945
876
 
946
- The user data directory is not cleared between runs and shared across
947
- all instances of `brave-devtools-mcp`. Set the `isolated` option to `true`
948
- to use a temporary user data dir instead which will be cleared automatically after
949
- the browser is closed.
877
+ For non-release channels, the channel name is appended to the directory name, for example
878
+ `brave-profile-nightly`.
879
+
880
+ The user data directory is not cleared between runs and is reused for subsequent
881
+ runs with the same channel. Only one browser can use it at a time. Set the `isolated`
882
+ option to `true` to use a temporary user data directory instead which will be cleared
883
+ automatically after the browser is closed.
950
884
 
951
885
  ### Connecting to a running Brave instance
952
886
 
953
- See [Mode B: Attach to your existing Brave window](#mode-b-attach-to-your-existing-brave-window) in the Setup section above.
887
+ 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:
888
+
889
+ - If you would like to maintain the same application state when alternating between manual site testing and agent-driven testing.
890
+ - 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).
891
+ - 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.
892
+
893
+ In these cases, start Brave first and let the Brave DevTools MCP server connect to it. There are two ways to do so:
894
+
895
+ - **Automatic connection**: best for sharing state between manual and agent-driven testing.
896
+ - **Manual connection via remote debugging port**: best when running inside a sandboxed environment.
897
+
898
+ #### Automatically connecting to a running Brave instance
899
+
900
+ **Step 1:** Set up remote debugging in Brave
901
+
902
+ In Brave, do the following to set up remote debugging:
903
+
904
+ 1. Navigate to `brave://inspect/#remote-debugging` to enable remote debugging.
905
+ 2. Follow the dialog UI to allow or disallow incoming debugging connections.
906
+
907
+ **Step 2:** Configure Brave DevTools MCP server to automatically connect to a running Brave instance
908
+
909
+ To connect the `brave-mcp` server to the running Brave instance, use
910
+ `--autoConnect` command line argument for the MCP server.
911
+
912
+ The following code snippet is an example configuration for gemini-cli:
913
+
914
+ ```json
915
+ {
916
+ "mcpServers": {
917
+ "brave-devtools": {
918
+ "command": "npx",
919
+ "args": ["brave-mcp@latest", "--autoConnect"]
920
+ }
921
+ }
922
+ }
923
+ ```
924
+
925
+ **Step 3:** Test your setup
926
+
927
+ Make sure your browser is running. Open gemini-cli and run the following prompt:
928
+
929
+ ```none
930
+ Check the performance of https://developers.chrome.com
931
+ ```
932
+
933
+ > [!NOTE]
934
+ > 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.
935
+
936
+ The Brave DevTools MCP server will try to connect to your running Brave
937
+ instance. It shows a dialog asking for user permission.
938
+
939
+ Clicking **Allow** results in the Brave DevTools MCP server opening
940
+ [developers.chrome.com](http://developers.chrome.com) and taking a performance
941
+ trace.
942
+
943
+ #### Manual connection using port forwarding
944
+
945
+ 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.
946
+
947
+ Here is a step-by-step guide on how to connect to a running Brave instance:
948
+
949
+ **Step 1: Configure the MCP client**
950
+
951
+ 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.
952
+
953
+ ```json
954
+ {
955
+ "mcpServers": {
956
+ "brave-devtools": {
957
+ "command": "npx",
958
+ "args": ["brave-mcp@latest", "--browser-url=http://127.0.0.1:9222"]
959
+ }
960
+ }
961
+ }
962
+ ```
963
+
964
+ **Step 2: Start the Brave browser**
965
+
966
+ > [!WARNING]
967
+ > 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.
968
+
969
+ 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.
970
+
971
+ 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.
972
+
973
+ **macOS**
974
+
975
+ ```bash
976
+ /Applications/Brave\ Browser.app/Contents/MacOS/Brave\ Browser --remote-debugging-port=9222 --user-data-dir=/tmp/brave-profile-release
977
+ ```
978
+
979
+ **Linux**
980
+
981
+ ```bash
982
+ /usr/bin/brave-browser --remote-debugging-port=9222 --user-data-dir=/tmp/brave-profile-release
983
+ ```
984
+
985
+ **Windows**
986
+
987
+ ```bash
988
+ "C:\Program Files\BraveSoftware\Brave-Browser\Application\brave.exe" --remote-debugging-port=9222 --user-data-dir="%TEMP%\brave-profile-release"
989
+ ```
990
+
991
+ **Step 3: Test your setup**
992
+
993
+ After configuring the MCP client and starting the Brave browser, you can test your setup by running a simple prompt in your MCP client:
994
+
995
+ ```
996
+ Check the performance of https://developers.chrome.com
997
+ ```
998
+
999
+ Your MCP client should connect to the running Brave instance and receive a performance report.
1000
+
1001
+ 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).
954
1002
 
955
- For VM-to-host port forwarding issues, see [`docs/troubleshooting.md`](./docs/troubleshooting.md#remote-debugging-between-virtual-machine-vm-and-host-fails).
1003
+ For more details on remote debugging, see the [Chromium DevTools documentation](https://developer.chrome.com/docs/devtools/remote-debugging/).
956
1004
 
957
- ### Debugging on Android
1005
+ ### Debugging Chrome on Android
958
1006
 
959
- Please consult [these instructions](./docs/debugging-android.md) (originally written for Chrome, but applicable to any Chromium browser).
1007
+ Please consult [these instructions](./docs/debugging-android.md).
960
1008
 
961
1009
  ## Known limitations
962
1010
 
@@ -964,6 +1012,6 @@ See [Troubleshooting](./docs/troubleshooting.md).
964
1012
 
965
1013
  ## Integrating as a browser subagent
966
1014
 
967
- 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 Chrome DevTools for agents.
1015
+ 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.
968
1016
 
969
1017
  For a reference implementation, see the [Gemini CLI browser agent documentation](https://geminicli.com/docs/core/subagents/#browser-agent).