@lensmcp/bridge
v1.16.8
Published
LensMCP browser-event bridge — a build-agnostic WebSocket server that forwards @lensmcp/client-runtime envelopes onto the LensMCP event bus. Used by the Vite plugin and as a standalone sidecar for webpack / Next.js / no-build hosts.
Maintainers
Readme
@lensmcp/bridge
The build-agnostic browser-event bridge for LensMCP.
A tiny WebSocket server that the injected @lensmcp/client-runtime
connects to, forwarding every observed browser event (errors, console, fetch,
route changes, and pre-formed React/Valtio publishes) onto the LensMCP event
bus — either in-process or, more usually, cross-process over the same
LENSMCP_EVENT_FILE / LENSMCP_UDS / LENSMCP_IPC_SOCKET transport the
MCP server tails.
This logic used to live inside @lensmcp/vite-plugin, which is why
LensMCP only worked for Vite apps. It was lifted out here so the exact same
bridge can run:
- embedded in the Vite dev server (the plugin calls
createBridgeServeron an ephemeral port), or - standalone as a sidecar on a fixed port for webpack, Next.js,
or no-build hosts — where the browser runtime finds the endpoint by a
known URL (
ws://127.0.0.1:5747by default) instead of one a bundler baked in.
Standalone
LENSMCP_EVENT_FILE=.lensmcp/events.jsonl node bridge.js
# or
lensmcp bridge| Env | Default | Meaning |
| --- | --- | --- |
| LENSMCP_WS_HOST | 127.0.0.1 | bind host |
| LENSMCP_WS_PORT | 5747 | bind port (0 = ephemeral) |
| LENSMCP_SESSION_ID | — | session id stamped on each event |
| LENSMCP_EVENT_FILE | — | JSONL sink the MCP server ingests |
Point the browser at it with @lensmcp/client-runtime/auto (zero build):
import '@lensmcp/client-runtime/auto';Embedding
import { createBridgeServer } from '@lensmcp/bridge';
const bridge = await createBridgeServer({ port: 0, bus });
console.log(bridge.port);
await bridge.close();The bridge is strictly passive: it never mutates app state, never changes scheduling, and never throws into the host.
