<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Chrome-Devtools-Mcp on RockB</title><link>https://baeseokjae.github.io/tags/chrome-devtools-mcp/</link><description>Recent content in Chrome-Devtools-Mcp on RockB</description><image><title>RockB</title><url>https://baeseokjae.github.io/images/og-default.png</url><link>https://baeseokjae.github.io/images/og-default.png</link></image><generator>Hugo</generator><language>en-us</language><lastBuildDate>Thu, 01 Oct 2026 08:40:59 +0000</lastBuildDate><atom:link href="https://baeseokjae.github.io/tags/chrome-devtools-mcp/index.xml" rel="self" type="application/rss+xml"/><item><title>NeoBrowser Review: An MCP Server That Drives Real Chrome With Your Logged-In Sessions</title><link>https://baeseokjae.github.io/posts/neobrowser-mcp-server-chrome-logged-in-sessions/</link><pubDate>Thu, 01 Oct 2026 08:40:59 +0000</pubDate><guid>https://baeseokjae.github.io/posts/neobrowser-mcp-server-chrome-logged-in-sessions/</guid><description>A Rust MCP server that drives your real Chrome over CDP and reuses your logged-in profile cookies. Honest benchmarks, but a broken install URL today.</description><content:encoded><![CDATA[<p>An mcp server browser automation setup usually fails the same way: the agent launches a fresh, cookie-less Chromium, hits a login wall, and stalls. NeoBrowser is a Rust MCP server that takes the opposite approach — it drives your installed Google Chrome over CDP and can start already authenticated from your real profile.</p>
<p>That is the pitch, and the engineering behind it is real. Whether you should install it today is a harder question, and the answer involves a 404, a disputed differentiator, and four security questions the project&rsquo;s own launch thread left open.</p>
<p>This review holds those three things apart: what is verifiable in the code, what the README claims that no longer holds in 2026, and what the distribution story actually looks like right now. The single most important finding is at the end of the next section and it is about installability, not features.</p>
<h2 id="what-is-neobrowser-and-what-does-driving-real-chrome-actually-mean">What is NeoBrowser and what does &ldquo;driving real Chrome&rdquo; actually mean?</h2>
<p>NeoBrowser is an MCP (Model Context Protocol) server that exposes 43 browser-automation tools and drives the Chrome binary already installed on your machine through the Chrome DevTools Protocol, rather than downloading its own bundled browser. It is written in Rust, ships as a single static binary of roughly 4 MB, and its <code>rust/Cargo.toml</code> declares version 0.1.7, edition 2021, <code>rust-version = 1.82</code>, under the MIT license, described as &ldquo;a fast, stealthy MCP browser-automation server that drives real Chrome.&rdquo;</p>
<p>The tool surface is verifiable, not marketing copy. The repository&rsquo;s <a href="https://github.com/t-soriano-sesame/neobrowser/blob/main/docs/TOOLS.md"><code>docs/TOOLS.md</code></a> contains exactly 43 tool headings, and they cluster into recognizable groups:</p>
<ul>
<li><strong>Navigation and reading:</strong> <code>navigate</code>, <code>read</code>, <code>screenshot</code>, <code>page_info</code>, <code>wait</code>, <code>scroll</code>, <code>paginate</code></li>
<li><strong>Interaction:</strong> <code>find</code>, <code>find_and_click</code>, <code>click</code>, <code>type</code>, <code>fill</code>, <code>form_fill</code>, <code>submit</code>, <code>dismiss_overlay</code>, <code>upload</code>, <code>download</code></li>
<li><strong>Session machinery:</strong> <code>save_cookies</code>, <code>restore_cookies</code>, <code>save_session</code>, <code>session_info</code>, <code>login</code></li>
<li><strong>Tabs:</strong> <code>new_tab</code>, <code>list_tabs</code>, <code>switch_tab</code>, <code>close_tab</code></li>
<li><strong>Recording:</strong> <code>record_task</code>, <code>stop_recording</code>, <code>replay</code></li>
<li><strong>Diagnostics:</strong> <code>console_logs</code>, <code>network_log</code>, <code>metrics</code>, <code>debug</code></li>
<li><strong>Search:</strong> <code>search</code>, <code>search_images</code>, <code>search_videos</code>, <code>search_twitter_videos</code></li>
</ul>
<p>The session and recording groups are the interesting ones. <code>save_cookies</code> / <code>restore_cookies</code> and <code>record_task</code> / <code>replay</code> are exactly the primitives an agent needs to avoid re-authenticating on every run, and most competing servers do not expose them at all.</p>
<p>A detail worth knowing before you judge the codebase: the original Python implementation is retained inside the repository as a differential-testing oracle. The language breakdown still shows Python at 503,547 bytes versus Rust at 337,246 bytes, so the &ldquo;Rust project&rdquo; is currently a Rust project with a large Python reference implementation riding along. That is a legitimate engineering choice for cross-checking behavior, but it does mean the repository is not as lean as the single-binary story suggests.</p>
<h2 id="why-do-browser-mcp-servers-hit-login-walls-in-the-first-place">Why do browser MCP servers hit login walls in the first place?</h2>
<p>Because the default architecture of browser automation is anonymous. Almost every browser MCP server — Playwright MCP, Puppeteer-based servers, hosted cloud browsers — starts from a clean profile. A clean profile means no cookies, no <code>localStorage</code>, no session tokens, and, critically, a fingerprint that looks like a first-time visitor with an empty history.</p>
<p>To a bot-detection system, that combination is a signal in itself. The project&rsquo;s own README concedes this plainly: &ldquo;a fresh cookie-less profile is itself a signal.&rdquo; It also concedes the ceiling: &ldquo;What no tool can promise is defeating interactive challenges — reCAPTCHA, Turnstile, or behavioral/reputation systems (DataDome) can still put up a wall.&rdquo;</p>
<p>That honesty is unusual in this category, and it sets up the actual product thesis. If you cannot beat a bot wall, you can at least stop walking into the cheap ones — the login gates, paywall prompts, and &ldquo;verify you are human&rdquo; interstitials that exist purely because the browser arrived with no identity. This is the layer NeoBrowser targets, and the framing is correct. The question a buyer should ask is not &ldquo;does this work?&rdquo; but &ldquo;is this still a differentiator in 2026?&rdquo; That question gets answered honestly later in this review, and the answer is more uncomfortable than the README implies.</p>
<p>For scale on why this category matters at all: the 2026 Imperva Bad Bot Report figures circulated widely put automated traffic at roughly 53% of all web traffic with about 40% of it classified as bad bots, and advanced bad-bot traffic growing roughly 12.5x year over year. Those numbers come from secondary summaries rather than a page served by Imperva itself at review time, so treat the exact percentages as directionally useful rather than authoritative. The strategic point holds either way: real-session automation is simultaneously the fix for login walls and the exact behavior every bot-detection vendor is tuning against.</p>
<h2 id="how-does-neobrowser-reuse-your-logged-in-chrome-session">How does NeoBrowser reuse your logged-in Chrome session?</h2>
<p>Two mechanisms, and they have different risk profiles. Understanding which one you are using is the single most important operational decision in this review.</p>
<p><strong>Path 1 — profile cookie injection (opt-in).</strong> When <code>NEOBROWSER_REAL_PROFILE</code> is set, NeoBrowser decrypts cookies from your actual Chrome profile using the OS keystore — macOS Keychain, Linux secret-service, or Windows DPAPI — and injects them into the session the agent drives. Written cookie files are created with <code>0600</code> permissions. The README says Google, LinkedIn, and Microsoft session-identity cookies are deliberately excluded so that reusing a profile does not log you out of your real browser.</p>
<p><strong>Path 2 — attach mode.</strong> With <code>NEOBROWSER_ATTACH_PORT=9222</code>, NeoBrowser connects to a Chrome instance you already started with <code>--remote-debugging-port=9222</code>. This is the safer path: nothing is decrypted, nothing is copied, and the README states the server never patches or kills the browser it attaches to. Several commenters in the launch thread noted they had built exactly this themselves with Chrome&rsquo;s own debugging flag, which is a fair observation — it is a well-understood technique, not a novel one.</p>
<p>A third detail matters for the security section: the JavaScript fingerprint patches are applied only to tabs NeoBrowser itself owns, never to an attached real Chrome. That is a defensible design decision and it is the one that keeps attach mode clean.</p>
<h2 id="is-the-install-working-today-read-this-before-you-copy-the-one-liner">Is the install working today? Read this before you copy the one-liner</h2>
<p>No. The documented install path is broken as of 2026-10-01, and this is the review&rsquo;s hard finding.</p>
<p><code>install.sh</code> hardcodes <code>REPO=&quot;pitiflautico/neobrowser&quot;</code> and downloads its artifact from <code>https://github.com/pitiflautico/neobrowser/releases/latest/download</code>. Every one of those endpoints fails today:</p>
<table>
  <thead>
      <tr>
          <th>Asset</th>
          <th>Expected</th>
          <th>Status on 2026-10-01 (verified)</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><code>github.com/pitiflautico/neobrowser</code></td>
          <td>The project repository</td>
          <td>HTTP 404</td>
      </tr>
      <tr>
          <td><code>pitiflautico.github.io/neobrowser/</code></td>
          <td>Homepage / docs site</td>
          <td>HTTP 404</td>
      </tr>
      <tr>
          <td><code>raw.githubusercontent.com/pitiflautico/neobrowser/main/install.sh</code></td>
          <td>The installer</td>
          <td>HTTP 404</td>
      </tr>
      <tr>
          <td>GitHub Releases (public copy)</td>
          <td>Downloadable binaries</td>
          <td>None exist (<code>[]</code>)</td>
      </tr>
      <tr>
          <td><code>t-soriano-sesame/neobrowser</code></td>
          <td>Only public copy of the code</td>
          <td>HTTP 200, 0 stars, 3 forks</td>
      </tr>
  </tbody>
</table>
<p>I re-verified the first two rows and the Releases check directly before publishing this review rather than trusting the research brief alone. <code>pitiflautico</code> has 62 public repositories and none of them is named <code>neobrowser</code>. The only public copy of the source, <code>t-soriano-sesame/neobrowser</code>, was created 2026-08-17 and last pushed the same day; all 72 commits are authored by <code>pitiflautico</code>, and the repository sits at 0 stars, 3 forks, and 0 open issues.</p>
<p>Two consequences follow. First, the advertised one-line install cannot work as published — it would try to fetch a release artifact from a repository that does not resolve. Second, the project&rsquo;s registry metadata still points at the dead URL: <code>server.json</code> declares <code>io.github.pitiflautico/neobrowser</code> at version 0.1.3 with <code>websiteUrl</code> on the 404ing GitHub Pages site, while <code>rust/Cargo.toml</code> declares 0.1.7. The two version strings disagree, and both identity fields reference a repository that is gone.</p>
<p>There is also an internal strategy file in the public copy whose stated mission is to take the repository to 10,000 stars with a recorded baseline of 0 stars on 2026-08-13, alongside a promotion playbook and a campaign-metrics file. It should be read as a distribution lesson, not a personal attack: the playbook explicitly forbids spam, astroturfing, and star-buying, and the visible outcome — a launch thread with 34 points, a repository at 0 stars, and a public copy nobody forked into use — is what careful, rule-following self-promotion looks like when the differentiator is contested. The lesson for anyone shipping a niche MCP server is blunt: a launch URL is infrastructure, and letting it 404 can erase a project&rsquo;s discoverability regardless of code quality.</p>
<p><strong>What to do instead.</strong> If you want to evaluate NeoBrowser, build from source in the public copy (<code>rust/</code>), then register it manually. Do not run <code>install.sh</code>, and do not trust the README badges or <code>server.json</code> until they point at a live repository.</p>
<h2 id="does-neobrowser-actually-beat-playwright-mcp">Does NeoBrowser actually beat Playwright MCP?</h2>
<p>Partially — and the honest part is the benchmark itself. NeoBrowser ships a self-run neutral comparison against Playwright MCP, and it publishes results where it loses.</p>
<table>
  <thead>
      <tr>
          <th>Metric</th>
          <th>NeoBrowser</th>
          <th>Playwright MCP</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Functional tasks executed (of 9)</td>
          <td>9/9</td>
          <td>7/9</td>
      </tr>
      <tr>
          <td>Destination access success (of 9)</td>
          <td>9/9</td>
          <td>7/9</td>
      </tr>
      <tr>
          <td>Average tool calls per task</td>
          <td>5.2</td>
          <td>4.7</td>
      </tr>
      <tr>
          <td>Average latency per task</td>
          <td>4,760 ms</td>
          <td>2,597 ms</td>
      </tr>
      <tr>
          <td>Adversarial: Google Images</td>
          <td>bot wall</td>
          <td>bot wall</td>
      </tr>
      <tr>
          <td>Adversarial: Cloudflare NowSecure</td>
          <td>CAPTCHA</td>
          <td>CAPTCHA</td>
      </tr>
  </tbody>
</table>
<p>Three things about this table deserve emphasis, because vendor benchmarks rarely contain any of them.</p>
<p>It <strong>concedes a real loss.</strong> NeoBrowser is roughly twice as slow, and the benchmark says why: it forces compositor frames (<code>nudge_frame</code>) so deferred content actually renders before the agent reads the page. That is a deliberate trade of speed for correctness, and it is stated rather than hidden.</p>
<p>It <strong>separates execution success from destination access.</strong> A task can execute perfectly and still be blocked by a wall, and the benchmark scores those two axes independently. Most comparisons in this niche collapse them, which lets a detected wall inflate a success rate.</p>
<p>It <strong>makes no bypass claim.</strong> Both tools produced a bot wall on the Google Images row and a CAPTCHA on the Cloudflare row, and the file says so explicitly: &ldquo;No evades-better claim is made,&rdquo; with the note that both were blocked on a single IP. The Playwright upload failure is additionally attributed to the neutral harness&rsquo;s mapping rather than to a Playwright incapability, while the persistence gap — Playwright MCP exposes no cookie save/restore tool — is called a genuine capability gap.</p>
<p>So: the 9/9 versus 7/9 headline is real, and so is the 2x latency penalty. If your agent&rsquo;s bottleneck is wall-clock time, that trade is expensive. If your agent&rsquo;s bottleneck is silently reading a half-rendered page and acting on stale content, the trade pays for itself.</p>
<h2 id="neobrowser-vs-playwright-mcp-vs-chrome-devtools-mcp-vs-browser-use-vs-claude-in-chrome">NeoBrowser vs Playwright MCP vs chrome-devtools-mcp vs browser-use vs Claude in Chrome</h2>
<p>This is where the README&rsquo;s central claim stops holding. The README argues that &ldquo;every browser MCP launches a fresh, fingerprintable headless browser with no cookies.&rdquo; In 2026 that is no longer the state of the art, and each cell below should be re-verified before you repeat it.</p>
<table>
  <thead>
      <tr>
          <th>Option</th>
          <th>Runtime</th>
          <th>Real-session mechanism</th>
          <th>Tool surface</th>
          <th>Best for</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><strong>NeoBrowser</strong></td>
          <td>Rust single static binary, no Node/Python</td>
          <td>Cookie decrypt + inject from real profile (opt-in), or attach to Chrome on port 9222</td>
          <td>43 tools incl. cookie/session save-restore, tabs, playbooks, multi-source search</td>
          <td>A zero-runtime-dependency, local-only server that lands authenticated with no extension and no cloud</td>
      </tr>
      <tr>
          <td><strong>Playwright MCP</strong></td>
          <td>Node 18+, bundled browser</td>
          <td>Chrome extension connects to existing tabs and &ldquo;leverages your logged-in sessions&rdquo;; also <code>--user-data-dir</code> and <code>--storage-state</code></td>
          <td>Accessibility-tree driven; no cookie save/restore tool</td>
          <td>The default for deterministic local automation</td>
      </tr>
      <tr>
          <td><strong>chrome-devtools-mcp</strong></td>
          <td>Node LTS + Puppeteer</td>
          <td>Persistent user-data directories; connect to a running Chrome instance</td>
          <td>DevTools-flavored automation plus performance traces</td>
          <td>Coding agents that also need debugging and perf insight</td>
      </tr>
      <tr>
          <td><strong>browser-use</strong></td>
          <td>Python 3.11+</td>
          <td><code>Browser.from_system_chrome()</code> reuses a profile but transfers cookies only — not <code>localStorage</code>, IndexedDB, or extensions</td>
          <td>Agent-first abstractions</td>
          <td>Autonomous task-in/result-out agents and cloud scale</td>
      </tr>
      <tr>
          <td><strong>Claude in Chrome</strong></td>
          <td>Chrome side panel, paid plan</td>
          <td>Your own logged-in browser by construction</td>
          <td>Product feature, not an embeddable MCP server</td>
          <td>Non-developers automating their own sessions</td>
      </tr>
  </tbody>
</table>
<p>The numbers make the competitive pressure concrete. Playwright MCP carries 37,733 stars, published <code>@playwright/mcp</code> v0.0.83 on 2026-09-28, and saw roughly 28.7 million npm downloads in the last month. chrome-devtools-mcp, maintained by Google, sits at 52,827 stars with v1.10.1 published 2026-09-23 and about 8.1 million monthly npm downloads. browser-use is at 116,875 stars and sells cloud browsers at $0.02 per browser-hour with residential proxies at $5/GB. And Claude in Chrome has been generally available on every paid Claude plan since 2026-08-26, selling precisely NeoBrowser&rsquo;s pitch — reaching internal dashboards and vendor portals &ldquo;with the logins you have&rdquo; — inside Claude Code and Claude Cowork, the very tools most likely to install an MCP browser server.</p>
<p>That last point is the crux. The launch thread&rsquo;s most repeated reader objection was some version of &ldquo;doesn&rsquo;t Claude already do this?&rdquo;, and the honest answer is that the specific capability — authenticated real-browser automation — is now a platform feature. NeoBrowser&rsquo;s remaining edge is narrower and more technical than the README sells: cookie-level profile reuse with <strong>no browser extension</strong>, <strong>no Node or Python runtime</strong>, and <strong>no cloud dependency</strong>, plus save/restore cookie tools that Playwright MCP genuinely lacks. That is a real edge. It is not &ldquo;every other browser MCP launches a fresh cookie-less browser.&rdquo;</p>
<p>There is also a category-wide headwind worth naming. Playwright MCP&rsquo;s documentation now steers coding agents toward CLI-and-skills over MCP for token efficiency, reserving MCP for stateful agentic loops. For a server whose main offering is 43 verbose tools, that is a strategic problem independent of feature parity: the category itself is questioning whether a large MCP tool surface is the right shape for browser work.</p>
<h2 id="is-neobrowser-stealthy-or-just-less-fake">Is NeoBrowser stealthy, or just less fake?</h2>
<p>It is deliberately non-spoofing, which is a more defensible position than most &ldquo;stealth&rdquo; claims. The README describes the approach as using the real Chrome binary with:</p>
<ul>
<li><code>navigator.webdriver</code> forced to <code>undefined</code></li>
<li>User-Agent rewritten to match the actually installed Chrome version, so Client Hints stay internally consistent</li>
<li>No <code>--disable-gpu</code>, so WebGL reports the real GPU rather than a software-rendering tell</li>
<li>JavaScript patches applied only to tabs the server owns, never to an attached real Chrome</li>
</ul>
<p>The distinction matters. A large share of &ldquo;stealth&rdquo; tooling works by patching fingerprint APIs to lie, which produces internally inconsistent values that detection vendors specifically look for — a WebGL vendor string that contradicts the driver, a User-Agent that contradicts the Client Hints headers. Running the real binary with a real GPU and a self-consistent version string is a weaker claim and a more durable one.</p>
<p>It also means there is no residential-proxy story and no CAPTCHA-solving story. Sites behind DataDome, Turnstile, or Cloudflare&rsquo;s interactive challenges stay behind them, and the project says so. If your evaluation criterion is &ldquo;get past the wall,&rdquo; NeoBrowser is the wrong tool and its own documentation says as much. If your criterion is &ldquo;stop tripping the cheap walls that only exist because the browser arrived anonymous,&rdquo; this is the right target.</p>
<h2 id="security-review-cookie-decryption-ssrf-guard-and-the-four-questions-still-open">Security review: cookie decryption, SSRF guard, and the four questions still open</h2>
<p>The security posture is better documented than most projects at this stage, and it is also incomplete in ways the launch thread identified precisely. Both belong in the review.</p>
<p><strong>What ships today:</strong></p>
<ul>
<li><strong>Cookie handling is opt-in.</strong> Profile reuse requires <code>NEOBROWSER_REAL_PROFILE</code>; it is not the default.</li>
<li><strong>Cookie files are written <code>0600</code>.</strong> Owner read/write only.</li>
<li><strong>Session-identity cookies are excluded.</strong> Google, LinkedIn, and Microsoft identity cookies are deliberately skipped so profile reuse does not log you out of your real browser.</li>
<li><strong>Fetch paths are SSRF-guarded</strong>, and the <code>login</code> tool is HTTPS-only.</li>
<li><strong>A domain allowlist exists</strong> — <code>NEOBROWSER_DOMAIN_ALLOWLIST=github.com,.docs.rs</code> causes <code>navigate</code> to reject unlisted domains. It was added after the launch thread raised the question. It is opt-in, and unset means no restriction.</li>
<li><strong>Attach mode does not mutate the browser it attaches to.</strong></li>
<li><strong>Local-only with no telemetry</strong>, in explicit contrast to chrome-devtools-mcp, which collects usage statistics by default with opt-out flags.</li>
<li><strong>The optional LLM fallback in <code>find</code> is off by default</strong> and bills to your own <code>ANTHROPIC_API_KEY</code> if enabled.</li>
</ul>
<p><strong>What the launch thread asked for and the project has not fully answered:</strong></p>
<ol>
<li><strong>Human approval before destructive actions.</strong> Submitting forms, deleting records, or completing purchases currently run without a confirmation gate by default. The thread asked for one; there is no documented general mechanism.</li>
<li><strong>A persistent audit record.</strong> There is no durable log of which tool touched which domain on whose behalf — <code>console_logs</code> and <code>network_log</code> are per-session diagnostics, not an audit trail.</li>
<li><strong>Revocation.</strong> Once a profile or allowlist grant exists, the thread asked how to revoke access previously granted. The allowlist is an environment variable, which is revocable, but there is no per-session credential model.</li>
<li><strong>Prompt-injection containment.</strong> An agent driving your authenticated browser is a high-value injection target: a single hostile page can instruct it to exfiltrate or submit. The project does not document a containment strategy.</li>
<li><strong>Credential hygiene in logs.</strong> A commenter reported &ldquo;it spits out password in logs according to gif.&rdquo; The README does not address this head-on. If you evaluate NeoBrowser, treat log redaction as something to test yourself before pointing it at anything that matters.</li>
</ol>
<p>None of this is unusual for a 0.1.x project, and the opt-in defaults are the right call. But a tool that decrypts your OS-keychain cookies should be held to a higher bar than a tool that drives an isolated browser, and the HN thread&rsquo;s asks are the correct bar. Until approval gates, an audit trail, and revocation exist, the responsible configuration is attach mode against a dedicated Chrome profile you can close and clear — not cookie injection from your daily driver.</p>
<p>Two more operational facts worth stating plainly: there is no hosted tier and no proxy rotation, so walled sites stay walled; and the server&rsquo;s own version metadata is inconsistent (<code>server.json</code> 0.1.3 versus <code>Cargo.toml</code> 0.1.7), which makes &ldquo;which version am I running&rdquo; harder to answer than it should be.</p>
<h2 id="cost-and-context-budget-43-tools-is-a-feature-and-a-bill">Cost and context budget: 43 tools is a feature and a bill</h2>
<p>Every MCP tool&rsquo;s name, description, and parameter schema is re-processed by the model on each reasoning step. A 43-tool server is therefore not free, and the honest way to evaluate it is per task, not per feature list.</p>
<p>Two cost axes to compare when you are choosing between these servers:</p>
<ul>
<li><strong>Context cost.</strong> Playwright MCP is the default for many teams because its accessibility-tree output is compact, but its tool surface and interaction cost has been reported at roughly 5,000 tokens per interaction. A 43-tool NeoBrowser server has a larger static surface but produces different per-step payloads depending on whether you use <code>read</code>, <code>extract</code>, or <code>analyze</code>.</li>
<li><strong>Dollar cost at scale.</strong> browser-use&rsquo;s cloud tier at $0.02 per browser-hour plus $5/GB of residential proxy is cheap for a few tasks and expensive for a crawler. Kernel&rsquo;s comparison notes the trap in agent-style servers generally: a hosted server that routes act/observe/extract calls through a model stacks token bills on top of browser time.</li>
</ul>
<p>Neither vendor listicle — PageBolt, ChatForest, or Kernel — treats &ldquo;does it land already authenticated from my real profile&rdquo; as a buying axis. They compare token cost, hosting model, and vision-versus-accessibility perception. That gap is the real opening for NeoBrowser, and it is a gap in the review discourse rather than a moat: the moment a mainstream comparison adds a session-persistence column, the two named alternatives win it on maintenance and ecosystem weight.</p>
<h2 id="who-should-use-neobrowser-in-2026--and-who-should-not">Who should use NeoBrowser in 2026 — and who should not</h2>
<p><strong>Use it if:</strong> you want a zero-runtime-dependency, local-only MCP browser server that lands authenticated without a browser extension; you already run Chrome; you are comfortable building from the <code>rust/</code> directory of the public copy today; you value save/restore cookie tools and record/replay playbooks that the incumbents do not expose; and you can live with roughly 2x the latency for correctly rendered pages.</p>
<p><strong>Do not use it if:</strong> you need a maintained install path or release artifacts today; you need a hosted tier, proxy rotation, or CAPTCHA handling; you want first-party maintenance and a security review process behind the tool; your team is standardizing on Playwright MCP&rsquo;s CLI-and-skills direction for token efficiency; or you need approval gates and an audit trail before pointing an agent at authenticated sessions.</p>
<h2 id="verdict">Verdict</h2>
<p>NeoBrowser is a genuinely well-engineered, unusually honest niche MCP server wrapped in a distribution failure. The engineering claims hold up under verification — 43 tools counted in-repo, a single Rust binary under MIT, opt-in cookie handling with <code>0600</code> files and an SSRF guard, attach mode that does not mutate your browser, and a self-published benchmark that concedes a 2x latency loss and admits parity on walled pages instead of claiming a bypass.</p>
<p>The differentiator is real but narrower than the README argues. Cookie-level real-profile reuse with no extension, no Node, and no cloud is a specific technical advantage that Playwright MCP&rsquo;s extension model, chrome-devtools-mcp&rsquo;s persistent profiles, browser-use&rsquo;s <code>from_system_chrome()</code>, and Claude in Chrome&rsquo;s GA release each approach from a different angle — and all four have larger maintenance surfaces behind them.</p>
<p>The disqualifying problem is that you cannot install it the documented way right now: the launch repository, the GitHub Pages site, and <code>install.sh</code> all return 404, no Releases exist, the registry metadata points at the dead URL, and the only public copy sits at 0 stars with 3 forks. A project in this state is a source-build evaluation, not a dependency. Build it from <code>rust/</code>, attach it to a dedicated Chrome profile on a debug port, keep the domain allowlist set, and treat the missing approval gate and audit trail as things you must replace yourself before it touches an account you care about.</p>
<h2 id="faq">FAQ</h2>
<h3 id="is-neobrowser-free-and-open-source">Is NeoBrowser free and open source?</h3>
<p>Yes — the code in the public copy is MIT-licensed, including the Rust server. The catch is not the license but the distribution: the advertised repository 404s, the installer points at a Releases feed that does not exist, and the only public copy is a static tree at 0 stars. Treat it as source-available code you build yourself, not a package you install with a one-liner.</p>
<h3 id="does-neobrowser-decrypt-my-chrome-cookies">Does NeoBrowser decrypt my Chrome cookies?</h3>
<p>Only when you opt in by setting <code>NEOBROWSER_REAL_PROFILE</code>. When enabled, it decrypts cookies from your real Chrome profile through the OS keystore — macOS Keychain, Linux secret-service, or Windows DPAPI — writes any cookie files with <code>0600</code> permissions, and deliberately excludes Google, LinkedIn, and Microsoft session-identity cookies so your real browser stays logged in. The safer alternative is <code>NEOBROWSER_ATTACH_PORT=9222</code>, which reuses an already-running Chrome without decrypting anything.</p>
<h3 id="can-neobrowser-bypass-cloudflare-recaptcha-or-turnstile">Can NeoBrowser bypass Cloudflare, reCAPTCHA, or Turnstile?</h3>
<p>No, and it does not claim to. Its own benchmark records a bot wall for NeoBrowser and Playwright MCP alike on Google Images and a CAPTCHA for both on a Cloudflare-protected page, on a single IP, with the explicit note that &ldquo;no evades-better claim is made.&rdquo; The README states directly that interactive challenges and reputation systems can still put up a wall. There is no CAPTCHA solving and no residential-proxy tier — what NeoBrowser removes is the cheap penalty for arriving with an empty, cookie-less profile.</p>
<h3 id="how-is-neobrowser-different-from-playwright-mcps-chrome-extension">How is NeoBrowser different from Playwright MCP&rsquo;s Chrome extension?</h3>
<p>The extension attaches to existing tabs and rides your logged-in session; it is the easiest path and it is first-party maintained by Microsoft behind 37,733 stars. NeoBrowser&rsquo;s differences are structural: no browser extension, no Node or Python runtime, a single Rust binary, cookie-level profile reuse rather than tab attachment, and save/restore cookie and session tools that Playwright MCP does not expose. The benchmark&rsquo;s one clear capability gap in NeoBrowser&rsquo;s favor is persistence — Playwright MCP has no cookie save/restore tool.</p>
<h3 id="what-if-the-pitiflauticoneobrowser-url-still-404s-when-i-try-to-install">What if the pitiflautico/neobrowser URL still 404s when I try to install?</h3>
<p>Then you are seeing the same state this review verified on 2026-10-01, and you should not run <code>install.sh</code> — it hardcodes that dead repository and will fail on the download. Build from the <code>rust/</code> directory of the public copy instead, point your MCP client at the resulting binary, and register it manually. Re-check periodically: if a live repository reappears with real Releases, the installability objection in this review disappears with it.</p>
]]></content:encoded></item></channel></rss>