{"_id":"@agent360/browser-mcp","_rev":"15-d5bb1b8b12d7c6e36f5f2ae37735f03c","name":"@agent360/browser-mcp","dist-tags":{"preflight":"1.29.0","latest":"1.29.1"},"versions":{"1.13.0":{"name":"@agent360/browser-mcp","version":"1.13.0","keywords":["mcp","browser","chrome","claude","claude-code","automation","ai-agent","browser-automation","model-context-protocol"],"author":{"name":"Agent360","email":"hello@agent360.dk"},"license":"MIT","_id":"@agent360/browser-mcp@1.13.0","maintainers":[{"name":"glouv","email":"gustav@louv.im"}],"homepage":"https://github.com/Agent360dk/browser-mcp","bugs":{"url":"https://github.com/Agent360dk/browser-mcp/issues"},"bin":{"browser-mcp":"bin/cli.js"},"dist":{"shasum":"257d7fe1466d70fac3aace5a2783069db8148287","tarball":"https://registry.npmjs.org/@agent360/browser-mcp/-/browser-mcp-1.13.0.tgz","fileCount":14,"integrity":"sha512-zUTFKEXLxTiRDnX1Iqr+C7Gzs8gBj5jsUOP36gPCSt3jLFVrwR2pmIx4Pi7QuYrbHx5yauKkdneM8euAp4aoxg==","signatures":[{"sig":"MEUCIFZbQvcdK9KNyuGZOKpwTPAKKly9DY1R6Ke5J6ASt2JUAiEAmJJ8Msjk6XWbNdByHDdOTIgTAiTqDr3YnOg79Qy1w/k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":115111},"main":"index.js","type":"module","gitHead":"1b0f1f1397a94b88b650b646a9b0e84b1f13bab5","scripts":{"start":"node index.js"},"_npmUser":{"name":"glouv","email":"gustav@louv.im"},"repository":{"url":"git+https://github.com/Agent360dk/browser-mcp.git","type":"git"},"_npmVersion":"10.9.2","description":"Browser MCP — control your real Chrome from Claude Code. Multi-session, human-in-the-loop, 21 tools.","directories":{},"_nodeVersion":"23.10.0","dependencies":{"ws":"^8.18.0","@modelcontextprotocol/sdk":"^1.28.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/browser-mcp_1.13.0_1775121720118_0.611702310688855","host":"s3://npm-registry-packages-npm-production"}},"1.15.0":{"name":"@agent360/browser-mcp","version":"1.15.0","keywords":["mcp","mcp-server","model-context-protocol","browser","browser-mcp","browser-automation","chrome","chrome-extension","claude","claude-code","ai-agent","captcha","captcha-solver","human-in-the-loop","web-automation","playwright-alternative","selenium-alternative"],"author":{"name":"Agent360","email":"hello@agent360.dk"},"license":"MIT","_id":"@agent360/browser-mcp@1.15.0","maintainers":[{"name":"glouv","email":"gustav@louv.im"}],"homepage":"https://browsermcp.dev","bugs":{"url":"https://github.com/Agent360dk/browser-mcp/issues"},"bin":{"browser-mcp":"bin/cli.js"},"dist":{"shasum":"e9f534034e22e068914b584b773b7c42442dc468","tarball":"https://registry.npmjs.org/@agent360/browser-mcp/-/browser-mcp-1.15.0.tgz","fileCount":14,"integrity":"sha512-k5FJ4UxAxbwmWUaNdJHnYIy50ktCtDfmLSLNsKHr+kggA0KODzMZfn+hISJ47yLQu0XR9wSVQgyxttK1ETK/gw==","signatures":[{"sig":"MEYCIQDgl6dO7qoiHllwJWnUCDrycEr0h4kHwUlTEpN7lfJoxwIhAIQPLYlDlepRqgJoz937z0HbBJ/zTVx8XOymzbP9Szck","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":136492},"main":"index.js","type":"module","engines":{"node":">=18"},"gitHead":"b9fa27a31149c60df019ee94fb3e89e4e0987611","scripts":{"start":"node index.js"},"_npmUser":{"name":"glouv","email":"gustav@louv.im"},"repository":{"url":"git+https://github.com/Agent360dk/browser-mcp.git","type":"git"},"_npmVersion":"10.9.2","description":"Browser MCP — control your real Chrome from Claude Code. 28 tools, CAPTCHA solving, multi-session, human-in-the-loop.","directories":{},"_nodeVersion":"23.10.0","dependencies":{"ws":"^8.18.0","@modelcontextprotocol/sdk":"^1.28.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/browser-mcp_1.15.0_1775334138074_0.40790941010575543","host":"s3://npm-registry-packages-npm-production"}},"1.16.0":{"name":"@agent360/browser-mcp","version":"1.16.0","keywords":["mcp","mcp-server","model-context-protocol","browser","browser-mcp","browser-automation","chrome","chrome-extension","claude","claude-code","ai-agent","captcha","captcha-solver","human-in-the-loop","web-automation","playwright-alternative","selenium-alternative"],"author":{"name":"Agent360","email":"hello@agent360.dk"},"license":"MIT","_id":"@agent360/browser-mcp@1.16.0","maintainers":[{"name":"glouv","email":"gustav@louv.im"}],"homepage":"https://browsermcp.dev","bugs":{"url":"https://github.com/Agent360dk/browser-mcp/issues"},"bin":{"browser-mcp":"bin/cli.js"},"dist":{"shasum":"a2e7c96a390f607e7eff39064c17663872ab5628","tarball":"https://registry.npmjs.org/@agent360/browser-mcp/-/browser-mcp-1.16.0.tgz","fileCount":14,"integrity":"sha512-CbStTQNCmglMh/nYGVGH8dZ1/5GHL89t0M6JxYOYXrFT66CFJSibWMpOgSH6APZ6l+nSLCYVPGJj0HpgBAuL3Q==","signatures":[{"sig":"MEUCIDEkEVWErGPBHoqlsV7WqgGhCG/Luj17D1lzYH1W9pFSAiEA3U/PXH97sbmgk7qxF0Aqi1WLhfZkkSVatwmEAEtYXPk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":140161},"main":"index.js","type":"module","engines":{"node":">=18"},"gitHead":"68d061f34db859359be1aae5fcd9c16f0453a912","scripts":{"start":"node index.js"},"_npmUser":{"name":"glouv","email":"gustav@louv.im"},"repository":{"url":"git+https://github.com/Agent360dk/browser-mcp.git","type":"git"},"_npmVersion":"10.9.2","description":"Browser MCP — control your real Chrome from Claude Code. 29 tools, CAPTCHA solving, file upload, multi-session, human-in-the-loop.","directories":{},"_nodeVersion":"23.10.0","dependencies":{"ws":"^8.18.0","@modelcontextprotocol/sdk":"^1.28.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/browser-mcp_1.16.0_1775382852063_0.8211992899302065","host":"s3://npm-registry-packages-npm-production"}},"1.16.1":{"name":"@agent360/browser-mcp","version":"1.16.1","keywords":["mcp","mcp-server","model-context-protocol","browser","browser-mcp","browser-automation","chrome","chrome-extension","claude","claude-code","ai-agent","captcha","captcha-solver","human-in-the-loop","web-automation","playwright-alternative","selenium-alternative"],"author":{"name":"Agent360","email":"hello@agent360.dk"},"license":"MIT","_id":"@agent360/browser-mcp@1.16.1","maintainers":[{"name":"glouv","email":"gustav@louv.im"}],"homepage":"https://browsermcp.dev","bugs":{"url":"https://github.com/Agent360dk/browser-mcp/issues"},"bin":{"browser-mcp":"bin/cli.js"},"dist":{"shasum":"634b4029006145edabc184a8d9b24f025273f2da","tarball":"https://registry.npmjs.org/@agent360/browser-mcp/-/browser-mcp-1.16.1.tgz","fileCount":14,"integrity":"sha512-Vm0dFKeRnR8xDkIWvKq16wTl9hAmj+//JjloVzgl6Ji5JNUSc06Yy6XNUuLYHVzBtYMveM0MnNmrB4s2IXd8Lw==","signatures":[{"sig":"MEYCIQDsXKa1ZPmHrlTKwBfsYEZu5fbp34G2+r0+1OLGq1EE8AIhAOZDKLVbWxgRitc+/NLDui06q0nxNHNMe0p2U4VkTCAq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":140675},"main":"index.js","type":"module","engines":{"node":">=18"},"gitHead":"6960ec7c5cf0f4f6f1ce44aeeefd11cf89005100","mcpName":"io.github.Agent360dk/browser-mcp","scripts":{"start":"node index.js"},"_npmUser":{"name":"glouv","email":"gustav@louv.im"},"repository":{"url":"git+https://github.com/Agent360dk/browser-mcp.git","type":"git"},"_npmVersion":"10.9.2","description":"Browser MCP — control your real Chrome from Claude Code. 29 tools, CAPTCHA solving, file upload, multi-session, human-in-the-loop.","directories":{},"_nodeVersion":"23.10.0","dependencies":{"ws":"^8.18.0","@modelcontextprotocol/sdk":"^1.28.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/browser-mcp_1.16.1_1775499050192_0.35408875019296215","host":"s3://npm-registry-packages-npm-production"}},"1.19.0":{"name":"@agent360/browser-mcp","version":"1.19.0","keywords":["mcp","mcp-server","model-context-protocol","browser","browser-mcp","browser-automation","chrome","chrome-extension","claude","claude-code","ai-agent","captcha","captcha-solver","human-in-the-loop","web-automation","playwright-alternative","selenium-alternative"],"author":{"name":"Agent360","email":"hello@agent360.dk"},"license":"MIT","_id":"@agent360/browser-mcp@1.19.0","maintainers":[{"name":"glouv","email":"gustav@louv.im"}],"homepage":"https://browsermcp.dev","bugs":{"url":"https://github.com/Agent360dk/browser-mcp/issues"},"bin":{"browser-mcp":"bin/cli.js"},"dist":{"shasum":"5c960fec1f5f94ac4799b85f9ac1166546b21277","tarball":"https://registry.npmjs.org/@agent360/browser-mcp/-/browser-mcp-1.19.0.tgz","fileCount":14,"integrity":"sha512-MxJm4AVn+ik94t7UDkMv/IlB4VlmxtLQ/3FfP7qiXsKhxtG8yueQJDWL4TWkJHGZSYo5UUGa84L5BO3yKZxfOw==","signatures":[{"sig":"MEYCIQDCEFWPdQR48JUyIPkuObrKbIffLGnhPVKOXXRaePsBzwIhAJr8kMNHRwkCRMMGgYWI7QXx+txeX0Yoq5Q99aOqtfF8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":186228},"main":"index.js","type":"module","engines":{"node":">=18"},"gitHead":"659eb3390e8c88a4f843885dc0ff6feda2119ceb","mcpName":"io.github.Agent360dk/browser-mcp","scripts":{"start":"node index.js"},"_npmUser":{"name":"glouv","email":"gustav@louv.im"},"repository":{"url":"git+https://github.com/Agent360dk/browser-mcp.git","type":"git"},"_npmVersion":"11.13.0","description":"Browser MCP — control your real Chrome from Claude Code. 29 tools, CAPTCHA solving, file upload, multi-session, human-in-the-loop.","directories":{},"_nodeVersion":"25.9.0","dependencies":{"ws":"^8.18.0","@modelcontextprotocol/sdk":"^1.28.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/browser-mcp_1.19.0_1778527729740_0.8544053941684653","host":"s3://npm-registry-packages-npm-production"}},"1.20.0":{"name":"@agent360/browser-mcp","version":"1.20.0","keywords":["mcp","mcp-server","model-context-protocol","browser","browser-mcp","browser-automation","chrome","chrome-extension","claude","claude-code","ai-agent","captcha","captcha-solver","human-in-the-loop","web-automation","playwright-alternative","selenium-alternative"],"author":{"name":"Agent360","email":"hello@agent360.dk"},"license":"MIT","_id":"@agent360/browser-mcp@1.20.0","maintainers":[{"name":"glouv","email":"gustav@louv.im"}],"homepage":"https://browsermcp.dev","bugs":{"url":"https://github.com/Agent360dk/browser-mcp/issues"},"bin":{"browser-mcp":"bin/cli.js"},"dist":{"shasum":"99af96b5d78a4ff9eebcf2f36d2339dce23d21de","tarball":"https://registry.npmjs.org/@agent360/browser-mcp/-/browser-mcp-1.20.0.tgz","fileCount":14,"integrity":"sha512-hMHbKYWVGkNWqF8dXxVJymoGM5ixq3PCdwt0BI6cqWc/636lo2ZbCJebZ5ZmkUe3jim9AyOTxmUiB6FsVkgICw==","signatures":[{"sig":"MEUCIGnhU5t1KnBgWNKyhyULg4WUTN0xssukvDmzWTqx7xTFAiEA1qTgA3/fGcjnOqtdstexGQaRmqFD44VfHYxkNuBNhYo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":187200},"main":"index.js","type":"module","engines":{"node":">=18"},"gitHead":"8c7f0d56712a896d0fec238034a8e7d3652c4397","mcpName":"io.github.Agent360dk/browser-mcp","scripts":{"start":"node index.js"},"_npmUser":{"name":"glouv","email":"gustav@louv.im"},"repository":{"url":"git+https://github.com/Agent360dk/browser-mcp.git","type":"git"},"_npmVersion":"11.13.0","description":"Browser MCP — control your real Chrome from Claude Code. 33 tools, CAPTCHA solving, date pickers, autocomplete combobox, overlay dismissal, file upload, multi-session, human-in-the-loop.","directories":{},"_nodeVersion":"25.9.0","dependencies":{"ws":"^8.18.0","@modelcontextprotocol/sdk":"^1.28.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/browser-mcp_1.20.0_1778767515012_0.06066763118775853","host":"s3://npm-registry-packages-npm-production"}},"1.20.1":{"name":"@agent360/browser-mcp","version":"1.20.1","keywords":["mcp","mcp-server","model-context-protocol","browser","browser-mcp","browser-automation","chrome","chrome-extension","claude","claude-code","ai-agent","captcha","captcha-solver","human-in-the-loop","web-automation","playwright-alternative","selenium-alternative"],"author":{"name":"Agent360","email":"hello@agent360.dk"},"license":"MIT","_id":"@agent360/browser-mcp@1.20.1","maintainers":[{"name":"glouv","email":"gustav@louv.im"}],"homepage":"https://browsermcp.dev","bugs":{"url":"https://github.com/Agent360dk/browser-mcp/issues"},"bin":{"browser-mcp":"bin/cli.js"},"dist":{"shasum":"d5ad76414884a7a898a173c91ee842b1162fd3d2","tarball":"https://registry.npmjs.org/@agent360/browser-mcp/-/browser-mcp-1.20.1.tgz","fileCount":14,"integrity":"sha512-70jyeDnN8reToC1KX3I8zT+5y+5ezdBb0bCL0J0MSVCwL8ugbm7n86j4G1rIf53G+NBhfpyh7LsooJI/vNfjUA==","signatures":[{"sig":"MEQCICt/iIsO/DdCIEvvi0DIDOYo6rm14o5Seh060l4cKl+1AiBRFe7v8RT9qvmdQ+gsu/6B/1rAjz9VfC2ZFNa14mIIYA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":187240},"main":"index.js","type":"module","engines":{"node":">=18"},"gitHead":"020142055f200198aeaba912a79615a508216b9a","mcpName":"io.github.Agent360dk/browser-mcp","scripts":{"start":"node index.js","publish:cws":"../scripts/publish-cws.sh","publish:cws:draft":"../scripts/publish-cws.sh --draft"},"_npmUser":{"name":"glouv","email":"gustav@louv.im"},"repository":{"url":"git+https://github.com/Agent360dk/browser-mcp.git","type":"git"},"_npmVersion":"11.13.0","description":"Browser MCP — control your real Chrome from Claude Code. 33 tools, CAPTCHA solving, date pickers, autocomplete combobox, overlay dismissal, file upload, multi-session, human-in-the-loop.","directories":{},"_nodeVersion":"25.9.0","dependencies":{"ws":"^8.18.0","@modelcontextprotocol/sdk":"^1.28.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/browser-mcp_1.20.1_1778774312299_0.19378088656967507","host":"s3://npm-registry-packages-npm-production"}},"1.21.0":{"name":"@agent360/browser-mcp","version":"1.21.0","keywords":["mcp","mcp-server","model-context-protocol","browser","browser-mcp","browser-automation","chrome","chrome-extension","claude","claude-code","ai-agent","captcha","captcha-solver","human-in-the-loop","web-automation","playwright-alternative","selenium-alternative"],"author":{"name":"Agent360","email":"hello@agent360.dk"},"license":"MIT","_id":"@agent360/browser-mcp@1.21.0","maintainers":[{"name":"glouv","email":"gustav@louv.im"}],"homepage":"https://browsermcp.dev","bugs":{"url":"https://github.com/Agent360dk/browser-mcp/issues"},"bin":{"browser-mcp":"bin/cli.js"},"dist":{"shasum":"cac219da21923340144aa1d37eddd0d66657ae26","tarball":"https://registry.npmjs.org/@agent360/browser-mcp/-/browser-mcp-1.21.0.tgz","fileCount":14,"integrity":"sha512-fvOX9Fvn+D6nwXrkiNjIsOzG7GBcC0M9MCVtIeDaOidP/DgVGNWL18V1wBOPc7Hukp5yUqck36m6t7AP4UQ2ng==","signatures":[{"sig":"MEUCIQDPaOv5LomMOOiAkZ/YW/j2KjtzkeNmUiM+Swkwe8NR1gIgWnuTmx4oUmL/0ZRI/ieYJ+ntUePn4ilk4r77pz0E2tc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":190085},"main":"index.js","type":"module","engines":{"node":">=18"},"gitHead":"acc32641dfe1a101cf41dd6dfb0b2f6792e2c7d4","mcpName":"io.github.Agent360dk/browser-mcp","scripts":{"start":"node index.js","publish:cws":"../scripts/publish-cws.sh","publish:cws:draft":"../scripts/publish-cws.sh --draft"},"_npmUser":{"name":"glouv","email":"gustav@louv.im"},"repository":{"url":"git+https://github.com/Agent360dk/browser-mcp.git","type":"git"},"_npmVersion":"11.13.0","description":"Browser MCP — control your real Chrome from Claude Code. 33 tools, CAPTCHA solving, date pickers, autocomplete combobox, overlay dismissal, file upload, multi-session, human-in-the-loop.","directories":{},"_nodeVersion":"25.9.0","dependencies":{"ws":"^8.18.0","@modelcontextprotocol/sdk":"^1.28.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/browser-mcp_1.21.0_1778779504217_0.3241724559166135","host":"s3://npm-registry-packages-npm-production"}},"1.23.0":{"name":"@agent360/browser-mcp","version":"1.23.0","keywords":["mcp","mcp-server","model-context-protocol","browser","browser-mcp","browser-automation","chrome","chrome-extension","claude","claude-code","ai-agent","captcha","captcha-solver","human-in-the-loop","web-automation","playwright-alternative","selenium-alternative"],"author":{"name":"Agent360","email":"hello@agent360.dk"},"license":"MIT","_id":"@agent360/browser-mcp@1.23.0","maintainers":[{"name":"glouv","email":"gustav@louv.im"}],"homepage":"https://browsermcp.dev","bugs":{"url":"https://github.com/Agent360dk/browser-mcp/issues"},"bin":{"browser-mcp":"bin/cli.js"},"dist":{"shasum":"3870bdd90e7b043af1344f626b110d8d163ebd30","tarball":"https://registry.npmjs.org/@agent360/browser-mcp/-/browser-mcp-1.23.0.tgz","fileCount":14,"integrity":"sha512-b9OMVRkForVihoh7O24bU4hqyPCJkbweXOMVK0hTNYcEU4KLqU0OJkwqiorD2S+doiKSd//XS3ltR8rQGosNUg==","signatures":[{"sig":"MEQCIDq6Uss/13786DnZUe4gzIGQvxY++Gd9Mvw2VhM2rTSDAiAHYBOGDZbKDssXspPtA00Fzv1PcUdbdvLTmaiyvZaL2A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":208859},"main":"index.js","type":"module","engines":{"node":">=18"},"gitHead":"d35ebcc73fe3eb5eca6368f449a18062f10b6208","mcpName":"io.github.Agent360dk/browser-mcp","scripts":{"start":"node index.js","publish:cws":"../scripts/publish-cws.sh","publish:cws:draft":"../scripts/publish-cws.sh --draft"},"_npmUser":{"name":"glouv","email":"gustav@louv.im"},"repository":{"url":"git+https://github.com/Agent360dk/browser-mcp.git","type":"git"},"_npmVersion":"10.9.4","description":"Browser MCP — control your real Chrome from Claude Code. 34 tools, CAPTCHA solving, date pickers, autocomplete combobox, overlay dismissal, file upload, multi-session, human-in-the-loop.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"ws":"^8.18.0","@modelcontextprotocol/sdk":"^1.28.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/browser-mcp_1.23.0_1781036335577_0.3814902557203126","host":"s3://npm-registry-packages-npm-production"}},"1.24.0":{"name":"@agent360/browser-mcp","version":"1.24.0","keywords":["mcp","mcp-server","model-context-protocol","browser","browser-mcp","browser-automation","chrome","chrome-extension","claude","claude-code","ai-agent","captcha","captcha-solver","human-in-the-loop","web-automation","playwright-alternative","selenium-alternative"],"author":{"url":"https://agent360.dk","name":"Agent360","email":"hello@agent360.dk"},"license":"MIT","_id":"@agent360/browser-mcp@1.24.0","maintainers":[{"name":"glouv","email":"gustav@louv.im"}],"homepage":"https://browsermcp.dev","bugs":{"url":"https://github.com/Agent360dk/browser-mcp/issues"},"bin":{"browser-mcp":"bin/cli.js"},"dist":{"shasum":"ec62e264dd58e7de04a55d129d2b31f6326b4102","tarball":"https://registry.npmjs.org/@agent360/browser-mcp/-/browser-mcp-1.24.0.tgz","fileCount":14,"integrity":"sha512-SuBg/JfWXDhVqaloGQ13gP+LyZ1QidRQDWC3oOpgfYPvR5+fulBU7VGWlW5wGM8sZ7pPb1a/Ve3CepY6UD+U1w==","signatures":[{"sig":"MEUCIQDEhtTqkUn8M17CWLsK39Y5GXeQSP6hbPrx+ERX4Rz4XQIgZbTk+2TkasvWhL3MB8is68Dd0gMijLN+uwSFIkRvREU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":217841},"main":"index.js","type":"module","engines":{"node":">=18"},"gitHead":"23f0f7c47568e6069bc09142c007b86e538bb095","mcpName":"io.github.Agent360dk/browser-mcp","scripts":{"start":"node index.js","publish:cws":"../scripts/publish-cws.sh","publish:cws:draft":"../scripts/publish-cws.sh --draft"},"_npmUser":{"name":"glouv","email":"gustav@louv.im"},"repository":{"url":"git+https://github.com/Agent360dk/browser-mcp.git","type":"git"},"_npmVersion":"10.9.4","description":"Browser MCP — control your real Chrome from Claude Code. 34 tools, CAPTCHA solving, date pickers, autocomplete combobox, overlay dismissal, file upload, multi-session, human-in-the-loop.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"ws":"^8.18.0","@modelcontextprotocol/sdk":"^1.28.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/browser-mcp_1.24.0_1784847776214_0.09356097735493663","host":"s3://npm-registry-packages-npm-production"}},"1.25.0":{"name":"@agent360/browser-mcp","version":"1.25.0","keywords":["mcp","mcp-server","model-context-protocol","browser","browser-mcp","browser-automation","chrome","chrome-extension","claude","claude-code","ai-agent","captcha","captcha-solver","human-in-the-loop","web-automation","playwright-alternative","selenium-alternative"],"author":{"url":"https://agent360.dk","name":"Agent360","email":"hello@agent360.dk"},"license":"MIT","_id":"@agent360/browser-mcp@1.25.0","maintainers":[{"name":"glouv","email":"gustav@louv.im"}],"homepage":"https://browsermcp.dev","bugs":{"url":"https://github.com/Agent360dk/browser-mcp/issues"},"bin":{"browser-mcp":"bin/cli.js"},"dist":{"shasum":"03d6ff491969e377ebf9b420d86fc7c0375af622","tarball":"https://registry.npmjs.org/@agent360/browser-mcp/-/browser-mcp-1.25.0.tgz","fileCount":14,"integrity":"sha512-OZ3xcK20R4hKaxFq+WBQw+Vr8RfPtTWcuFTVp+/HNPcEdfpqTFZHq11zru6PGHAMs7UpmtBqzKGrlLGvzwaHsw==","signatures":[{"sig":"MEUCIGugX8HKyw88rPIk+wWLduV8/MtMJ3r/uJzZjYOFxbymAiEAqokol3xwkvPhlcYEg3BUjOyrwISm2wCmcqE9CrO4ll0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":221313},"main":"index.js","type":"module","engines":{"node":">=18"},"gitHead":"e4dfd386c8aa608af360053478badff939f402ad","mcpName":"io.github.Agent360dk/browser-mcp","scripts":{"start":"node index.js","publish:cws":"../scripts/publish-cws.sh","publish:cws:draft":"../scripts/publish-cws.sh --draft"},"_npmUser":{"name":"glouv","email":"gustav@louv.im"},"repository":{"url":"git+https://github.com/Agent360dk/browser-mcp.git","type":"git"},"_npmVersion":"10.9.4","description":"Browser MCP — control your real Chrome from Claude Code. 34 tools, CAPTCHA solving, date pickers, autocomplete combobox, overlay dismissal, file upload, multi-session, human-in-the-loop.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"ws":"^8.18.0","@modelcontextprotocol/sdk":"^1.28.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/browser-mcp_1.25.0_1784919987490_0.4722886233675925","host":"s3://npm-registry-packages-npm-production"}},"1.28.1":{"name":"@agent360/browser-mcp","version":"1.28.1","keywords":["mcp","mcp-server","model-context-protocol","browser","browser-mcp","browser-automation","chrome","chrome-extension","claude","claude-code","ai-agent","captcha","captcha-solver","human-in-the-loop","web-automation","playwright-alternative","selenium-alternative"],"author":{"url":"https://agent360.dk","name":"Agent360","email":"hello@agent360.dk"},"license":"MIT","_id":"@agent360/browser-mcp@1.28.1","maintainers":[{"name":"glouv","email":"gustav@louv.im"}],"homepage":"https://browsermcp.dev","bugs":{"url":"https://github.com/Agent360dk/browser-mcp/issues"},"bin":{"browser-mcp":"bin/cli.js"},"dist":{"shasum":"9bb8770e545d6c360c3ae08f37f37242205a8150","tarball":"https://registry.npmjs.org/@agent360/browser-mcp/-/browser-mcp-1.28.1.tgz","fileCount":15,"integrity":"sha512-9ChiZeILAeBJdQjn9JKxI/p9s3RhSn31yABt88dXIybCg/bJeX6nMMF9EcOK4cSFuDqRNWU1/6PlkBl8j0EjaA==","signatures":[{"sig":"MEQCICVN1J4oLBpcBrRom0FsiZQPFVzY92zgxupuOzsNIIEYAiBhh4650SHZx+sAnHci/sfs1Fa6MYTol/1qRGubpyeKMQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":331562},"main":"index.js","type":"module","engines":{"node":">=18"},"gitHead":"6cb4a9d38e835d7ffee4f6981976d825596a2c73","mcpName":"io.github.Agent360dk/browser-mcp","scripts":{"flow":"node ../test/flow/run.mjs","test":"node --test ../test/*.test.mjs","start":"node index.js","feedback":"node ../scripts/feedback-report.mjs","sessions":"node ../test/flow/sessions.mjs","publish:cws":"../scripts/publish-cws.sh","samtidighed":"node ../test/flow/samtidighed.mjs","publish:cws:draft":"../scripts/publish-cws.sh --draft"},"_npmUser":{"name":"glouv","email":"gustav@louv.im"},"overrides":{"qs":"^6.15.2","hono":"^4.12.34","fast-uri":"^3.1.5","ip-address":"^10.3.1","body-parser":"^2.2.3","@hono/node-server":"^1.19.15"},"repository":{"url":"git+https://github.com/Agent360dk/browser-mcp.git","type":"git"},"_npmVersion":"10.9.4","description":"Browser MCP — give your AI agent a real, logged-in Chrome: test authenticated apps, read 2FA codes from Gmail, scrape behind logins, solve CAPTCHAs. 40 tools, multi-session, human-in-the-loop.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"ws":"^8.18.0","@modelcontextprotocol/sdk":"^1.28.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/browser-mcp_1.28.1_1788201797291_0.03299825803993395","host":"s3://npm-registry-packages-npm-production"}},"1.29.0":{"name":"@agent360/browser-mcp","version":"1.29.0","keywords":["mcp","mcp-server","model-context-protocol","browser","browser-mcp","browser-automation","chrome","chrome-extension","claude","claude-code","ai-agent","captcha","captcha-solver","human-in-the-loop","web-automation","playwright-alternative","selenium-alternative"],"author":{"url":"https://agent360.dk","name":"Agent360","email":"hello@agent360.dk"},"license":"MIT","_id":"@agent360/browser-mcp@1.29.0","maintainers":[{"name":"glouv","email":"gustav@louv.im"}],"homepage":"https://browsermcp.dev","bugs":{"url":"https://github.com/Agent360dk/browser-mcp/issues"},"bin":{"browser-mcp":"bin/cli.js"},"dist":{"shasum":"50b75d3cd322a3359465e53785195081f03a1047","tarball":"https://registry.npmjs.org/@agent360/browser-mcp/-/browser-mcp-1.29.0.tgz","fileCount":15,"integrity":"sha512-4arVNeglZf1ySTiwbshHZP0s2Kk2Yx04hHYCBepS2b1i3tuPi0UbmgPRte+Q18Y7ZgYjXjgDkGXXoETHGXJdNg==","signatures":[{"sig":"MEUCIFFJv+NjSgVAmUqDjOVe0oaBmIeS7w6isp1tQXUACcVtAiEAmpaMKCWsUivnN015X6tKKS8BgaqxWBHQnImicfRk0u0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":345557},"main":"index.js","type":"module","engines":{"node":">=18"},"gitHead":"5d3f074a29d5f408b615d6fddfa2923108ba7527","mcpName":"io.github.Agent360dk/browser-mcp","scripts":{"flow":"node ../test/flow/run.mjs","test":"node --test ../test/*.test.mjs","start":"node index.js","feedback":"node ../scripts/feedback-report.mjs","sessions":"node ../test/flow/sessions.mjs","publish:cws":"../scripts/publish-cws.sh","samtidighed":"node ../test/flow/samtidighed.mjs","publish:cws:draft":"../scripts/publish-cws.sh --draft"},"_npmUser":{"name":"glouv","email":"gustav@louv.im"},"overrides":{"qs":"^6.16.0","hono":"^4.12.34","fast-uri":"^3.1.7","ip-address":"^10.3.1","body-parser":"^2.2.3","@hono/node-server":"^1.19.15"},"repository":{"url":"git+https://github.com/Agent360dk/browser-mcp.git","type":"git"},"_npmVersion":"10.9.4","description":"Browser MCP — give your AI agent a real, logged-in Chrome: test authenticated apps, read 2FA codes from Gmail, scrape behind logins, solve CAPTCHAs. 40 tools, multi-session, human-in-the-loop.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"ws":"^8.18.0","@modelcontextprotocol/sdk":"^1.28.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/browser-mcp_1.29.0_1788746205125_0.295503802543601","host":"s3://npm-registry-packages-npm-production"}},"1.29.1":{"_id":"@agent360/browser-mcp@1.29.1","bin":{"browser-mcp":"bin/cli.js"},"bugs":{"url":"https://github.com/Agent360dk/browser-mcp/issues"},"dist":{"shasum":"b80924d1c32c00ee1a0928904908a17d4527b17d","tarball":"https://registry.npmjs.org/@agent360/browser-mcp/-/browser-mcp-1.29.1.tgz","fileCount":15,"integrity":"sha512-liPgpRMAf0hZCy/xG1VFdLWvM45QMqN7mWMq6AH+Qpw+PPpzinlKD7IIm7pdautmJKEy0k5AP+I2Xo21uYZGXQ==","signatures":[{"sig":"MEUCICvDAj2HZRat6ESlGAUhdePbtUK4Kb0yGHmPUUXqzhoUAiEArkXqO5xWEipCuKPTSUVTuL1YNyrTCE8jbIHg/3a2i+g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCID3PcCjKbyxQ8Zz3QmZVY6KDzLbmUcALvDfRQd0bzGM7AiBcF3TU5j6SaJ5N5bp19nijlWbbyxVyg85gH17qtdZUvQ=="}],"unpackedSize":444245},"main":"index.js","name":"@agent360/browser-mcp","type":"module","author":{"url":"https://agent360.dk","name":"Agent360","email":"hello@agent360.dk"},"engines":{"node":">=18"},"gitHead":"719a4da9083e446d3d32873183ca3d7d8913b186","license":"MIT","mcpName":"io.github.Agent360dk/browser-mcp","scripts":{"flow":"node ../test/flow/run.mjs","test":"node --test ../test/*.test.mjs","start":"node index.js","feedback":"node ../scripts/feedback-report.mjs","sessions":"node ../test/flow/sessions.mjs","publish:cws":"../scripts/publish-cws.sh","samtidighed":"node ../test/flow/samtidighed.mjs","publish:cws:draft":"../scripts/publish-cws.sh --draft"},"version":"1.29.1","_npmUser":{"name":"glouv","email":"gustav@louv.im"},"homepage":"https://browsermcp.dev","keywords":["mcp","mcp-server","model-context-protocol","browser","browser-mcp","browser-automation","chrome","chrome-extension","claude","claude-code","ai-agent","captcha","captcha-solver","human-in-the-loop","web-automation","playwright-alternative","selenium-alternative"],"overrides":{"qs":"^6.16.0","hono":"^4.13.7","fast-uri":"^3.1.7","ip-address":"^10.3.1","body-parser":"^2.2.3","@hono/node-server":"^1.19.15"},"repository":{"url":"git+https://github.com/Agent360dk/browser-mcp.git","type":"git"},"_npmVersion":"10.9.4","description":"Browser MCP - give your AI agent a real, logged-in Chrome: test authenticated apps, read 2FA codes from Gmail, scrape behind logins, solve CAPTCHAs. 40 tools, multi-session, human-in-the-loop.","directories":{},"maintainers":[{"name":"glouv","email":"gustav@louv.im"}],"_nodeVersion":"22.22.1","dependencies":{"ws":"^8.18.0","@modelcontextprotocol/sdk":"^1.28.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/browser-mcp_1.29.1_1789286879836_0.5987057769067559"}}},"time":{"created":"2026-04-02T09:22:00.033Z","modified":"2026-09-13T08:08:00.174Z","1.13.0":"2026-04-02T09:22:00.256Z","1.15.0":"2026-04-04T20:22:18.216Z","1.16.0":"2026-04-05T09:54:12.230Z","1.16.1":"2026-04-06T18:10:50.342Z","1.19.0":"2026-05-11T19:28:49.937Z","1.20.0":"2026-05-14T14:05:15.197Z","1.20.1":"2026-05-14T15:58:32.463Z","1.21.0":"2026-05-14T17:25:04.398Z","1.23.0":"2026-06-09T20:18:55.763Z","1.24.0":"2026-07-23T23:02:56.437Z","1.25.0":"2026-07-24T19:06:27.668Z","1.28.1":"2026-08-31T18:43:17.463Z","1.29.0":"2026-09-07T01:56:45.342Z","1.29.1":"2026-09-13T08:07:59.933Z"},"bugs":{"url":"https://github.com/Agent360dk/browser-mcp/issues"},"author":{"url":"https://agent360.dk","name":"Agent360","email":"hello@agent360.dk"},"license":"MIT","homepage":"https://browsermcp.dev","keywords":["mcp","mcp-server","model-context-protocol","browser","browser-mcp","browser-automation","chrome","chrome-extension","claude","claude-code","ai-agent","captcha","captcha-solver","human-in-the-loop","web-automation","playwright-alternative","selenium-alternative"],"repository":{"url":"git+https://github.com/Agent360dk/browser-mcp.git","type":"git"},"description":"Browser MCP - give your AI agent a real, logged-in Chrome: test authenticated apps, read 2FA codes from Gmail, scrape behind logins, solve CAPTCHAs. 40 tools, multi-session, human-in-the-loop.","maintainers":[{"name":"glouv","email":"gustav@louv.im"}],"readme":"# Browser MCP by [Agent360](https://agent360.dk)\n\n**Your AI agent drives your real, logged-in Chrome - and works where headless tools die.**\n\nIt is the browser you are already signed into. No login step to fail, no API key to wire up,\nno fresh profile that is a stranger to every account you have. Up to 20 agents at once, each\nin its own colour-coded tab group. 40 tools, MIT, runs on your machine.\n\n→ **[What it can and cannot get past](https://browsermcp.dev/docs/capability-matrix/)** - every\nwall, marked *measured*, *by design*, *not yet*, or *won't*. Including the ones we have not fixed.\n\n[![npm version](https://img.shields.io/npm/v/@agent360/browser-mcp)](https://www.npmjs.com/package/@agent360/browser-mcp)\n[![npm downloads](https://img.shields.io/npm/dw/@agent360/browser-mcp)](https://www.npmjs.com/package/@agent360/browser-mcp)\n[![GitHub stars](https://img.shields.io/github/stars/Agent360dk/browser-mcp)](https://github.com/Agent360dk/browser-mcp)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![MCP](https://img.shields.io/badge/MCP-compatible-blue)](https://modelcontextprotocol.io)\n[![Chrome Web Store](https://img.shields.io/badge/Chrome_Web_Store-live-green)](https://chromewebstore.google.com/detail/agent360-browser-mcp/jdehgalffmffhfhmmhaokfbfnafnmgcl)\n\n\n[![Add to Cursor](https://img.shields.io/badge/Add%20to-Cursor-000?logo=cursor)](https://cursor.com/install-mcp?name=browser-mcp&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyJAYWdlbnQzNjAvYnJvd3Nlci1tY3BAbGF0ZXN0Il19)\n[![Add to VS Code](https://img.shields.io/badge/Add%20to-VS%20Code-0098FF?logo=visualstudiocode)](https://vscode.dev/redirect/mcp/install?name=browser-mcp&config=%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22%40agent360%2Fbrowser-mcp%40latest%22%5D%7D)\n[![Glama quality](https://glama.ai/mcp/servers/Agent360dk/browser-mcp/badges/score.svg)](https://glama.ai/mcp/servers/Agent360dk/browser-mcp)\n\n[![Browser MCP Demo](https://raw.githubusercontent.com/Agent360dk/browser-mcp/main/assets/demo.gif)](https://browsermcp.dev)\n\n▶ **[Watch the 37-second demo with sound →](https://browsermcp.dev)**\n\nBrowser MCP gives Claude Code (and any MCP client - Cursor, VS Code agent mode) control of your actual Chrome: your cookies, your sessions, your 2FA. So it works on CAPTCHA, 2FA and anti-bot sites where Playwright and Puppeteer get blocked - because it's *you* browsing.\n\nThe killer move: it hits a login wall, reads the verification code from your own Gmail tab, and continues the sign-in. No API can do that. Operate platforms with no API, QA your own web app end-to-end, or work dashboards, LinkedIn and Reddit at human pace - with you approving the sensitive steps.\n\n40 tools. Auto-clicks the reCAPTCHA v2 checkbox, with a human fallback for the rest. Multi-session color-coded tab groups. **MIT, free, and it runs on your machine - no account, no telemetry, nothing sent to us.**\n\n## The whole thing, in four steps\n\n**1 - Install the Chrome extension.** One click from the [Chrome Web Store](https://chromewebstore.google.com/detail/agent360-browser-mcp/jdehgalffmffhfhmmhaokfbfnafnmgcl); Chrome keeps it updated. No store? See the unpacked install below.\n\n**2 - Add the MCP server.** Paste this in a terminal. Required - the extension does nothing on its own:\n\n```bash\nclaude mcp add --scope user browser-mcp -- npx @agent360/browser-mcp@latest\n```\n\n**3 - Restart Claude Code.** That is what starts the server. The extension shows no badge until step 4 - the server only takes a port the first time your agent actually uses the browser. A green badge with the number of connected agents appears then; nothing on the icon before that is normal. (The icon itself never changes colour - it is the badge that turns green.)\n\n**4 - Say this, to check it worked.** Paste it to Claude Code:\n\n> Take a screenshot of my current Chrome tab.\n\nYou get an image back instead of *\"I don't have browser access\"*. **That's it - you're running.** → [What else to say](#youre-in-now-what)\n\nUsing Cursor, VS Code, Codex or Windsurf? Same server, that client's own config - see [browsermcp.dev/docs](https://browsermcp.dev/docs/install-cursor/). Everything below is the long version.\n\n## The long version - install, step by step\n\n> **Browser MCP is two halves and you need both:** a **Chrome extension** (drives the browser) and a **local MCP server** (what your agent actually talks to). Installing only the extension - e.g. straight from the Chrome Web Store - leaves it stuck on *\"Not connected\"*, because there is no server for it to reach. Chrome cannot install the server, and npm cannot install the extension. Hence two steps.\n\n### Step 1: Register the MCP server with Claude Code\n\n```bash\nclaude mcp add --scope user browser-mcp -- npx @agent360/browser-mcp@latest\n```\n\nThat is Claude Code's own MCP command, so the entry lands in the config Claude Code actually reads. `--scope user` makes it available in every project.\n\nWant the extension files on disk for the unpacked install in Step 2? Also run:\n\n```bash\nnpx @agent360/browser-mcp install\n```\n\nIt copies the extension to `~/.browser-mcp/extension/` and **prints that path in the terminal - copy it.** (Use it for the extension files only; register the server with `claude mcp add` above.)\n\n### Step 2: Load the extension in Chrome\n\n> Chrome won't let extensions install themselves from npm - you load it manually one time. To **update** later, re-run the install command and reload it (see [Keeping it updated](#keeping-it-updated)). Prefer the [Chrome Web Store](#chrome-web-store-one-click-install) install if you'd rather have the extension auto-update.\n\n1. **Open Chrome** and type `chrome://extensions` in the address bar\n2. **Toggle \"Developer mode\"** ON (top right corner)\n3. **Click \"Load unpacked\"** (top left, next to \"Pack extension\")\n4. **Navigate to `~/.browser-mcp/extension/`** and click \"Select\"\n   - On Mac: Press `Cmd+Shift+G` in the file picker, paste `~/.browser-mcp/extension/`, press Enter\n   - On Windows: Paste `%USERPROFILE%\\.browser-mcp\\extension\\` in the address bar\n   - On Linux: Type `~/.browser-mcp/extension/` in the path field\n5. **Restart Claude Code** so it picks up the new MCP server\n\nThat's it. The Browser MCP icon will appear in your toolbar, and 40 browser tools are now available in Claude Code.\n\n### Alternative: Manual zip download (no npm)\n\nIf you don't want to use npm, download the extension directly:\n\n1. [Download the extension zip](https://github.com/Agent360dk/browser-mcp/releases/latest) (`agent360-browser-mcp-<version>.zip`) from the latest GitHub release\n2. Unzip the file (anywhere - e.g. `~/Downloads/browser-mcp-extension/`)\n3. Follow Step 2 above, but select the unzipped folder instead of `~/.browser-mcp/extension/`\n4. Register the server - run `claude mcp add --scope user browser-mcp -- npx @agent360/browser-mcp@latest`, or add this to `~/.claude.json` by hand:\n   ```json\n   {\n     \"mcpServers\": {\n       \"browser-mcp\": {\n         \"command\": \"npx\",\n         \"args\": [\"@agent360/browser-mcp@latest\"]\n       }\n     }\n   }\n   ```\n\n### Chrome Web Store (no Developer mode, auto-updating extension)\n\n**This replaces Step 2 only - you still need Step 1.**\n\n1. [**Install the extension from the Chrome Web Store →**](https://chromewebstore.google.com/detail/agent360-browser-mcp/jdehgalffmffhfhmmhaokfbfnafnmgcl) - no Developer mode toggle, and Chrome keeps it updated for you.\n2. Register the MCP server:\n   ```bash\n   claude mcp add --scope user browser-mcp -- npx @agent360/browser-mcp@latest\n   ```\n   (For Cursor / VS Code / Codex, use that client's own MCP config instead - see [browsermcp.dev/docs](https://browsermcp.dev/docs/install-claude-code/).)\n3. Restart Claude Code.\n\nSkip step 2 and the extension icon will sit on **\"Not connected\"** forever - that is the symptom of a missing MCP server, not a broken extension.\n\n## You're in. Now what?\n\nNothing happens until you ask, and the hardest part of a new tool is knowing what to ask for. Paste one of these to your agent:\n\n| Say this | What it shows |\n|---|---|\n| *\"Take a screenshot of my current Chrome tab.\"* | **Start here.** An image back instead of *\"I don't have browser access\"* means both halves are talking. That is the whole install test. |\n| *\"Open my Gmail tab and tell me who sent my last 3 emails.\"* | The one that shows the difference - it works because it is *your* browser, already signed in. A headless tool hits a login wall here. |\n| *\"Go to my analytics dashboard, pull this month's numbers, and put them in a table.\"* | Any dashboard you are already logged into. No API key, no export, no integration to build first. |\n| *\"Fill in this signup form with my details. Stop and ask me before anything sensitive.\"* | You stay in the loop - it hands control back for passwords, payment details, or anything it should not decide alone. |\n| *\"Log me in here. If it emails a code, read it from my Gmail tab and continue.\"* | The move no API can make: it reads the one-time code out of your own inbox and finishes the sign-in. |\n| *\"Walk through my app's signup flow as a real user and tell me where it breaks.\"* | End-to-end QA of your own product, in the same browser your users have. |\n\nThe pattern: **anything you would do yourself in a browser, on a site you are already signed into.** It is strongest where there is no API - internal dashboards, admin panels, portals, LinkedIn. Built something good? [Add it to the gallery](USE_CASES.md).\n\n## Why This Over Playwright MCP / BrowserMCP?\n\n| | Browser MCP | Playwright MCP | BrowserMCP.io |\n|---|---|---|---|\n| **Browser** | Your real Chrome, via extension | Persistent profile by default, or your Chrome via their extension | Your real Chrome |\n| **Maintained** | Actively - latest release v1.29.1 (2026-09-13) | Actively (Microsoft) | Last commit Apr 2025 |\n| **Logins/cookies** | Your existing session | Persistent profile keeps logins between runs | Already authenticated |\n| **Several agents, one logged-in profile** | 20 concurrent, each with its own color-coded tab group | Their docs: concurrent clients on one profile *conflict* - each extra client needs `--isolated` or its own `--user-data-dir` | Single session |\n| **Human-in-the-loop** | `browser_ask_user` - 2FA, CAPTCHA, credential input | None | None |\n| **Provider integrations** | 9 built-in (Stripe, HubSpot, Slack...) | None | None |\n| **CORS bypass** | `browser_fetch` from extension background | N/A | Limited |\n| **Network monitoring** | `browser_wait_for_network` via CDP | Built-in | None |\n| **CSP-strict sites** | Chrome Debugger API throughout | Works (headless) | Limited |\n| **Custom dropdowns** | Angular Material, React Select support | Works (headless) | Limited |\n| **Install** | `claude mcp add` + extension from the Chrome Web Store | `npx @playwright/mcp` | Manual clone |\n\n### The pages that defeat everything else\n\nThe reason this works where headless dies is not that it slips past anything. It is that\nthere is nothing to slip past: it is your Chrome, your session, your consent. What is left\nis the hard part - pages that fight *any* automation because of how they are built.\n\nEvery release is gated on a flow test against a real Chrome that has to survive exactly\nthose: all 40 tools are exercised, and the gate also checks that the extension Chrome is\nrunning is the one being released - not another copy with the same version number. The\nfailures that do show up are honest ones: mouse events are not delivered to a tab that is\nnot in front, and the tools say so instead of reporting success. What the test covers\n\n- **strict CSP** - navigate, read, execute, wait and click all still work (falls back to\n  the Chrome Debugger API when script injection is blocked)\n- **cross-origin iframes** - seen into and reached inside\n- **shadow DOM** - selectors reach through it\n- **controlled inputs** - `fill` sticks in a React-style controlled field\n- **honesty checks** - `click` refuses a 0×0 element instead of hitting (0,0), and says so\n  when the page never took the event\n\n### Known limitation: working in a tab you are not looking at\n\nIn a tab you are not looking at, the agent can navigate, read, screenshot, run scripts, fill\nfields and click. Chrome does not deliver mouse and keyboard events to a tab that is not the\nvisible one in its window, so key presses, hover, double-click, coordinate clicks and combobox\ntyping fail with an error that says so, and the agent will then call `browser_switch_tab`, which\nbrings that tab and its window in front of you.\n\nMeasured across 160 real sessions: that happens on roughly one call in forty, most often on Enter.\nFully hands-off background work is planned for 1.30. Some of it cannot be solved at all: CSS\n`:hover` is a state the renderer owns and no script can fake it, a script-dispatched event is\nnever `isTrusted`, `elementFromPoint` stops at a cross-origin iframe, and the text selection a\nreal double-click makes is browser behaviour rather than an event.\n\n\nThat last group matters most. A tool that quietly reports success is worse than one that\nfails, because you build on the answer. Where we still fall short of it, it is written\ndown: see [#19](https://github.com/Agent360dk/browser-mcp/issues/19).\n\n> **Corrected 2026-09-07.** This table used to say Playwright MCP was headless and made you\n> log in every time. That was wrong, and it had been wrong for a while - Microsoft's own README\n> documents a persistent profile as the default, plus a browser extension for using the Chrome\n> you already have. The row that actually survives is the one above it, and it is their\n> documented limitation, not our claim: *\"A persistent profile can only be used by one browser\n> instance at a time, so concurrent MCP clients sharing the same workspace will conflict.\"*\n> If you run one agent, Playwright MCP will serve you well. The difference shows up when you\n> run twenty against the same logged-in browser.\n\n> **On the name:** the similarly-named `browsermcp.io` (`@browsermcp/mcp`) is a different, unaffiliated project with no commits since April 2025. This is Browser MCP by Agent360 (`@agent360/browser-mcp`) - actively maintained. [Full side-by-side →](https://browsermcp.dev/compare/browsermcp-io/)\n\n### Environment variables\n\nBoth are optional. Neither is needed for normal use.\n\n| Variable | Effect |\n|---|---|\n| `BROWSER_MCP_CHECK_NPM=1` | Makes `browser_provide_feedback` also compare this server against the latest version published on npm. Off by default, so the call stays fast and works offline. |\n| `BROWSER_MCP_EXTENSION_ID=<32-char id>` | Pins the server to one specific Chrome extension. Use it when more than one copy of Browser MCP is loaded and you want a given session to always talk to the same one. |\n\n## 40 Tools\n\n### Navigation & Content\n| Tool | Description |\n|------|-------------|\n| `browser_navigate` | Navigate to URL (reuses tab, or `new_tab=true`) |\n| `browser_get_page_content` | Get page text or HTML |\n| `browser_screenshot` | Screenshot via Chrome Debugger (works even when tab isn't focused) |\n| `browser_execute_script` | Run JavaScript in page context |\n| `browser_extract_list` | Read every row of a long/virtualised list by scrolling its container until no new rows appear |\n\n### Interaction\n| Tool | Description |\n|------|-------------|\n| `browser_click` | Click via CSS or text selector (`text=Submit`, `button:text(Next)`) |\n| `browser_fill` | Fill input fields (works on CSP-strict sites) |\n| `browser_press_key` | Keyboard events (Enter, Tab, Escape, modifiers) |\n| `browser_scroll` | Scroll to element or by pixels |\n| `browser_wait` | Wait for element to appear |\n| `browser_hover` | Hover for tooltips/dropdowns |\n| `browser_select_option` | Native `<select>` + custom dropdowns (Angular Material, React Select) |\n| `browser_set_combobox` | Autocomplete/combobox: type query → wait for filtered listbox → click option (multi-value chip support). Use when `browser_select_option` fails on lazy-rendered options |\n| `browser_set_date` | Robust date inputs: tries native value-set → masked typing → calendar-picker navigation (MUI/AntD/react-datepicker/Lexical). Use when `browser_fill` fails on date fields |\n| `browser_dismiss_overlays` | Bulk-dismiss popups/modals/tooltips/banners via aria-label/text/×-char heuristics. `non_critical` mode preserves dialogs with form data |\n| `browser_handle_dialog` | Accept/dismiss native alert/confirm/prompt dialogs |\n| `browser_double_click` | True double-click (two trusted press/release pairs) |\n| `browser_right_click` | Right-click to open page-level context menus |\n| `browser_click_xy` | Escape hatch: click at raw viewport coordinates (CSS pixels) with trusted mouse events |\n| `browser_reattach_debugger` | Recovery: force-detach and re-attach the Chrome debugger on the current tab |\n\n### Tabs & Frames\n| Tool | Description |\n|------|-------------|\n| `browser_list_tabs` | List session's tabs only |\n| `browser_switch_tab` | Switch to tab by ID |\n| `browser_close_tab` | Close tab (session-owned only) |\n| `browser_get_new_tab` | Get most recently opened tab (OAuth popups) |\n| `browser_list_frames` | List iframes on page |\n| `browser_select_frame` | Execute JS in specific iframe |\n\n### Data & Network\n| Tool | Description |\n|------|-------------|\n| `browser_fetch` | HTTP request from extension (bypasses CORS) |\n| `browser_wait_for_network` | Wait for specific API call to complete |\n| `browser_extract_token` | Navigate to provider dashboard + extract API token |\n\n### CAPTCHA Solving\n| Tool | Description |\n|------|-------------|\n| `browser_solve_captcha` | Detect and solve CAPTCHAs. Auto-detects reCAPTCHA v2/v3, hCaptcha, Turnstile, FunCaptcha. Actions: `detect`, `click_checkbox` (auto-click, often passes when signed into Google), `click_grid` (AI vision guided), `ask_human` (fallback) |\n\n### Human-in-the-Loop\n| Tool | Description |\n|------|-------------|\n| `browser_ask_user` | Show overlay dialog for 2FA, CAPTCHA, credentials, or any user input |\n\n### Data\n| Tool | Description |\n|------|-------------|\n| `browser_get_cookies` | Get cookies for a site this session has open |\n| `browser_set_cookies` | Set cookies for a domain |\n| `browser_get_local_storage` | Read localStorage from page |\n| `browser_set_local_storage` | Write localStorage values |\n| `browser_console_logs` | Capture console.log/warn/error messages from page |\n| `browser_upload_file` | Upload files to `<input type=\"file\">` via Chrome Debugger API (no dialog) |\n| `browser_drop_file` | Upload via drop-zones: finds hidden `<input type=\"file\">` in target subtree/parent (up to 2 levels). Use when `browser_upload_file` fails because the zone has no visible input |\n\n### Diagnostics & feedback\n| Tool | Description |\n|------|-------------|\n| `browser_provide_feedback` | Self-check + report in one call. Compares this server against the latest on npm, the connected extension against this server, and detects **more than one Browser MCP extension connected at once** - the three things that explain most \"it just stopped working\" moments. Returns a verdict (`current` / `outdated` / `conflict` / `disconnected`), concrete fix steps, and a pre-filled issue link for whatever is genuinely missing. Your agent calls it on its own whenever a tool blocks it |\n| `browser_about` | Project info + pre-filled links to submit a wish, use-case, or bug |\n\n## Multi-Session Support\n\nEach Claude Code conversation gets its own MCP server on a unique port (9876-9895). The Chrome extension connects to all active servers simultaneously.\n\n**Need more than 20 at once?** The range is a setting, not a hard limit, but both halves have to agree.\nSet `BROWSER_MCP_MAX_PORT` in every chat's MCP config, set `bmcpPorte` to the same range in the\nextension's storage, then reload the extension: it reads the range only when it starts. Change only the\nserver side and chat 21 binds a port the extension never looks at, so the browser goes quiet in that chat\nwith nothing to explain it. 100 is plenty; the hard cap is 200. Every extra port costs your browser one\nrefused connection every two seconds, whether you use it or not, so do not widen it for fun.\n\n```\nClaude Session 1 ←(stdio)→ MCP :9876 ←(WS)→\nClaude Session 2 ←(stdio)→ MCP :9877 ←(WS)→  Chrome Extension → Browser\nClaude Session 3 ←(stdio)→ MCP :9878 ←(WS)→\n```\n\n- **Session isolation** - each session gets a color-coded Chrome Tab Group\n- **Tab ownership** - sessions can only see and control their own tabs\n- **Auto-cleanup** - processes exit when Claude Code closes the conversation\n- **Ports are taken on demand** - a server binds its port on the first browser call, not\n  at startup, and releases it 5 minutes after its last tab closes. A chat that never\n  touches the browser never occupies a slot.\n\n### Running the agent on another machine\n\nThe extension only connects to `127.0.0.1`, deliberately - it will not talk to a remote\nWebSocket. If your MCP gateway runs on a different box than your browser, forward the port\nrange over SSH.\n\nRecipe below contributed by [@bkuri](https://github.com/Agent360dk/browser-mcp/issues/1),\nwho ran into exactly this and solved it. Linux + systemd; needs `autossh` locally and your\npublic key already on the server:\n\n```ini\n# ~/.config/systemd/user/browser-mcp-tunnel.service\n[Unit]\nDescription=SSH tunnel for browser-mcp WebSocket (ports 9876-9895)\nAfter=network-online.target\nWants=network-online.target\n\n[Service]\nType=simple\nExecStart=/bin/sh -c '/usr/bin/autossh -M 0 -N \\\n  -o ServerAliveInterval=30 -o ServerAliveCountMax=3 \\\n  -o ExitOnForwardFailure=yes -o LogLevel=ERROR \\\n  $(for p in $(seq 9876 9895); do printf \" -L %s:127.0.0.1:%s\" \"$p\" \"$p\"; done) \\\n  server-name'\nRestart=on-failure\nRestartSec=5\nEnvironment=\"AUTOSSH_GATETIME=0\"\n\n[Install]\nWantedBy=default.target\n```\n\nReplace `server-name`, then `systemctl --user enable --now browser-mcp-tunnel.service`.\n\n> The original recipe listed ports 9876-9885 by hand - the range was ten back then. It is\n> twenty now, so the loop above generates them instead of hard-coding a list that goes\n> stale the next time the range changes.\n\n## Built-in Provider Integrations\n\n`browser_extract_token` navigates to the provider's API settings page and guides token extraction:\n\n| Provider | Token Format | Dashboard |\n|----------|-------------|-----------|\n| Stripe | `sk_test_...` / `sk_live_...` | stripe.com/apikeys |\n| HubSpot | `pat-...` | app.hubspot.com |\n| Slack | `xoxb-...` | api.slack.com/apps |\n| Shopify | Admin API token | admin.shopify.com |\n| Pipedrive | UUID | app.pipedrive.com |\n| Calendly | JWT | calendly.com |\n| Mailchimp | `...-us1` | admin.mailchimp.com |\n| Google | OAuth Client | console.cloud.google.com |\n| LinkedIn | Client ID/Secret | linkedin.com/developers |\n\n## Architecture\n\n```\nextension/\n  manifest.json       # Manifest V3\n  background.js       # Service worker - Chrome API dispatcher, session tab groups\n  offscreen.js        # Persistent WebSocket bridge (multi-port scanning)\n  popup.html/js       # Status UI - sessions, tabs, action log\n\nmcp-server/\n  index.js            # MCP server (stdio) + WebSocket client\n  tools.js            # 40 tool definitions\n  bin/cli.js          # Install CLI\n```\n\n### How It Works\n1. Claude Code starts → spawns MCP server via stdio\n2. MCP server binds to first available port (9876-9895)\n3. Extension's offscreen document scans ports every 2s\n4. WebSocket connection established\n5. Commands flow: Claude Code → MCP → Extension → Chrome APIs\n6. Process auto-exits when Claude Code closes (stdin detection)\n\n## Keeping it updated\n\nBrowser MCP has two parts, and they update independently - how the **extension** updates depends on how you installed it:\n\n| Part | Install method | How it updates |\n|------|----------------|----------------|\n| **MCP server** | any | **Automatic.** Runs via `npx @agent360/browser-mcp@latest`, so every Claude Code session pulls the newest from npm. Nothing to do. |\n| **Extension** | **Chrome Web Store** | **Automatic, but not immediate.** A new version first has to pass Google's review, which usually takes 1-3 days; Chrome then picks it up in the background within hours. Nothing to do, but a fix published today does not reach you today. |\n| **Extension** | **Unpacked** (`npx … install` or manual zip) | **Manual.** Chrome never auto-updates a load-unpacked extension. Re-run `npx @agent360/browser-mcp install`, then open `chrome://extensions` → Browser MCP → **↻ reload**. |\n\n**Not sure which you have?** Open `chrome://extensions` and find Browser MCP. If it shows a **\"Loaded from /path/…\"** line, it's unpacked (manual updates). If there's no such line, it came from the Chrome Web Store (auto-updates).\n\n**Want zero-maintenance updates?** Install the extension from the [Chrome Web Store](https://chromewebstore.google.com/detail/agent360-browser-mcp/jdehgalffmffhfhmmhaokfbfnafnmgcl), then run `claude mcp add --scope user browser-mcp -- npx @agent360/browser-mcp@latest` to register the server. After that, both parts stay current on their own - as long as your config uses `@agent360/browser-mcp@latest`.\n\n## Troubleshooting\n\n**\"Chrome extension not connected\"**\n- Check extension is loaded in `chrome://extensions`\n- Click the extension popup → \"Reconnect\"\n- Wait 2-3 seconds for port scan\n\n**Screenshot fails**\n- Uses the Chrome Debugger API for your session's own tab (works even when the tab isn't focused)\n- From 1.29.1 there is no fallback that captures whichever tab happens to be visible: if the debugger can't produce a frame, the call fails. (1.29.0 and earlier could fall back to the visible tab.) Run `browser_reattach_debugger` and try again\n\n**Click doesn't work on SPA**\n- Try text selector: `browser_click(\"text=Submit\")`\n- Uses real mouse events via Chrome Debugger API automatically\n\n**Stale processes**\n- Processes auto-exit when Claude Code closes (stdin detection)\n- Idle timeout: 4 hours without commands → auto-exit\n- Manual cleanup: `lsof -i :9876-9895 | grep LISTEN`\n\n## 💡 Help Shape Browser MCP\n\nBrowser MCP is built in the open and shaped by the people using it.\n\n### Browse what others want / built\n- 💡 **[Wishlist →](WISHLIST.md)** - features people are asking for\n- 🎯 **[Use-cases →](USE_CASES.md)** - what others have built (LinkedIn ICP scraping, vendor research, daily ops, …)\n\n### Contribute in 30 seconds\n- 💡 [Wish for a feature](https://github.com/Agent360dk/browser-mcp/issues/new?template=wish.yml)\n- 🎯 [Share a use-case](https://github.com/Agent360dk/browser-mcp/issues/new?template=use-case.yml)\n- 🐛 [Report a bug](https://github.com/Agent360dk/browser-mcp/issues/new?template=bug.yml)\n\nOr just **ask Claude** - it knows about the `browser_about` tool and will draft + submit on your behalf when you say things like *\"I wish browser-mcp could …\"* or *\"share my browser-mcp use-case\"*.\n\n### If it works for you\n\nThe Chrome Web Store ranks on ratings, and we have none - so a sentence from you moves this\nfurther than anything we can write. [Leave a review](https://chromewebstore.google.com/detail/agent360-browser-mcp/jdehgalffmffhfhmmhaokfbfnafnmgcl/reviews)\nif it earned one, and say so honestly if it did not. No signup, no reward, nothing gated\nbehind it - we just have no signal at all right now.\n\n## License\n\nMIT - [Agent360](https://agent360.dk)\n","readmeFilename":"README.md"}