npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@jobshimo/browser-link

v0.14.0

Published

MCP server that bridges Claude Code, OpenCode, GitHub Copilot CLI and other MCP clients to a Chrome tab. Per-tool permissions, multi-agent mode (multiple MCP clients sharing one bridge), persistent UI map across sessions.

Readme

@jobshimo/browser-link

⚠️ Read this before installing

This package opens a bridge between your MCP client (Claude Code, OpenCode, GitHub Copilot CLI…) and the Chrome tabs you explicitly enable through a companion extension. On every tab where you press "Conectar" in the extension popup, the agent can read its DOM, click, type, run arbitrary JavaScript, and follow links — including any logged-in session, saved card, wallet, banking page or admin panel that tab is currently showing.

Treat the agent like a junior dev with remote control of those tabs. Only enable tabs where you would let an automated process act on your behalf, and disconnect them when you are done. You are responsible for every action the agent performs on the tabs you explicitly enable.

MCP server that bridges any MCP-compatible client (Claude Code, OpenCode, GitHub Copilot CLI, and friends) to the Chrome tabs you grant access to, through a small WebSocket relay and a companion Chrome extension. Ships with a persistent UI map so the agent remembers selectors, flows and gotchas it learned about each app, across sessions.

Install

npm install -g @jobshimo/browser-link

This puts the browser-link binary on your PATH on macOS, Linux and Windows.

Set it up

The fastest path is the interactive UI — a full-screen Ink-based app with a pinned header, live status of every MCP client, and sub-screens that swap in place (no flicker, no scroll-off):

browser-link

That opens the welcome / disclaimer screen (English or Spanish), and then the setup menu where you can register browser-link with Claude Code, OpenCode, or GitHub Copilot CLI, see the Chrome extension install steps, run a doctor diagnose, and open the about / help page.

If you prefer direct commands:

browser-link install                       # register in every detected client
browser-link install --client claude       # register only in Claude Code
browser-link install --client opencode     # register only in OpenCode
browser-link install --client copilot      # register only in GitHub Copilot CLI
browser-link uninstall --client opencode   # remove from one client
browser-link extension                     # show the Chrome extension assets path + steps
browser-link doctor                        # diagnose current setup
browser-link tools                         # show which MCP tools are enabled / disabled
browser-link tools disable browser.evaluate
browser-link tools preset readonly         # all | readonly | no-eval | no-map
browser-link updates                       # check the npm registry for a newer version
browser-link about                         # what this is, how it works, every tool

Per-tool permissions

browser-link exposes 17 MCP tools by default — 10 browser-bridge tools, 6 UI-map tools, and browser.events for bridge traceability. You can disable any subset per machine, either through the Permissions screen in the interactive menu (toggle with Space, apply a preset with Enter, save with s) or through the scriptable browser-link tools subcommand. Available presets: all (default), readonly, no-eval, no-map. Changes take effect the next time your MCP client starts the server.

Multi-agent mode

By default only one MCP client can have browser-link active at a time (EADDRINUSE on the second). Enable multi-agent mode and the second browser-link spawn becomes a proxy that forwards MCP requests to the first via 127.0.0.1:17530, with the same kernel-level process binding the WS port already uses. All connected clients share the same Chrome tabs and persistent UI map.

browser-link multi-agent enable
browser-link multi-agent auto-reelect enable     # optional

With auto-reelect on, secondary proxies survive the primary closing: they enter a 5-second reconnect window, return -32001 "temporarily unavailable" for in-flight requests, and hot-swap to the fresh primary once it appears. The agent self-recovers from stale tab ids via the new browser.events tool, which surfaces a ring buffer of bridge lifecycle events (primary-elected, tab-registered, tab-disconnected, tab-renamed). The Chrome extension preserves the per-tab id across primary swaps via chrome.storage.session.

After install, restart the MCP client so it picks up the new entry. After extension, follow the printed steps to load the unpacked extension in Chrome. Then click "Conectar" on every tab you want the agent to reach — and only on those.

Supported MCP clients

| Client | Config file written | | -------------------------------------------------------------------- | ---------------------------------------------------------------- | | Claude Code | ~/.claude.json (%USERPROFILE%\.claude.json on Windows) | | OpenCode | ~/.config/opencode/opencode.json on every OS (Win incl.) | | GitHub Copilot CLI | ~/.copilot/mcp-config.json (override via COPILOT_HOME env) |

Every registration is idempotent — re-running install updates the entry instead of duplicating it. uninstall --client <id> removes it cleanly without touching anything else in the file.

Tools exposed

Browser bridge: browser.list_tabs, browser.ping, browser.navigate, browser.snapshot, browser.click, browser.type, browser.evaluate, browser.console, browser.network, browser.network_body.

UI map (persistent across sessions): browser.map.recall, browser.map.save, browser.map.record_use, browser.map.forget, browser.map.rename_app, browser.map.apps.

The server also ships usage instructions for the agent via the MCP initialize handshake — no manual prompt setup required.

Where the data lives

macOS    ~/Library/Application Support/browser-link/map.db
Linux    $XDG_DATA_HOME/browser-link/map.db   (default: ~/.local/share/browser-link/map.db)
Windows  %APPDATA%/browser-link/map.db

Override with BROWSER_LINK_DATA_DIR. The database is local to your machine and never uploaded anywhere by this package. The WebSocket relay binds to 127.0.0.1:17529 (loopback only).

License

MIT — see LICENSE.