Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

@customaise/mcp

Package Overview
Dependencies
Maintainers
1
Versions
14
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@customaise/mcp - npm Package Compare versions

Comparing version
1.2.0
to
1.3.0
+76
dist/bridge.d.ts
/**
* Bridge — the abstraction between the MCP server and the Customaise
* Chrome extension. Two implementations:
*
* - ExtensionBridge (leader): runs the WebSocket server on port 4050,
* accepts the extension as client, also
* accepts other customaise-mcp processes
* as followers.
* - RemoteBridge (follower): connects to an existing ExtensionBridge
* on port 4050 over WebSocket, proxies
* all requests through it.
*
* Motivation: before this abstraction, every customaise-mcp process tried
* to bind :4050 and any second instance died with EADDRINUSE, surfacing
* as `MCP error -32000: Connection closed` in the losing IDE. That made
* it impossible to run two agents (e.g. Cursor + Claude Code) against
* the same extension. The factory below auto-detects who's leader and
* who's a follower; the caller (index.ts / server.ts) doesn't care.
*/
/**
* Identifies which IDE spawned a customaise-mcp process. Captured from
* MCP's initialize handshake (`params.clientInfo`) so the extension
* UI can surface "you're connected to Cursor + Claude Code" to the
* user. Pure metadata — not used for security decisions.
*/
export interface BridgeClientInfo {
name: string;
version: string;
}
export interface Bridge {
/**
* Become ready. For the leader: bind the WS port. For a follower:
* connect to the leader. Rejects with EADDRINUSE if the leader path
* failed because :port is already held by another process.
*/
start(): Promise<void>;
/**
* Send an RPC to the extension. The leader sends directly over its
* WS connection; a follower relays via the leader. Same contract
* either way.
*/
request(type: string, args?: Record<string, unknown>): Promise<unknown>;
/**
* Register a handler for unsolicited pushes from the extension.
* Leader invokes locally; follower receives them forwarded from the
* leader over the peer channel.
*/
onPush(handler: (type: string, data: any) => void): void;
/**
* Report this process's MCP client identity (from MCP SDK's
* initialize handshake). Call once on oninitialized. The leader
* aggregates its own + all connected followers' client info and
* sends it to the extension via a `hello` frame so the extension
* UI can show "connected IDEs".
*/
setOwnClientInfo(info: BridgeClientInfo): void;
/**
* Shut down. Leader closes the WS server + evicts followers.
* Follower closes its client connection.
*/
close(): Promise<void>;
/**
* Which role the bridge is running in. Exposed for logs and tests.
*/
readonly role: 'leader' | 'follower';
}
/**
* Try to start as leader; fall back to follower on EADDRINUSE.
*
* This is the only way to construct a bridge from outside the module —
* the class constructors are available for tests, but production code
* should always go through here so the port-contention logic stays
* centralised.
*/
export declare function createBridge(port?: number, requestTimeoutMs?: number): Promise<Bridge>;
//# sourceMappingURL=bridge.d.ts.map
{"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../src/bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAKH;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,MAAM;IACrB;;;;OAIG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvB;;;;OAIG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAExE;;;;OAIG;IACH,MAAM,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI,CAAC;IAEzD;;;;;;OAMG;IACH,gBAAgB,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAE/C;;;OAGG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvB;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,UAAU,CAAC;CACtC;AAED;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAChC,IAAI,GAAE,MAAa,EACnB,gBAAgB,GAAE,MAAe,GAChC,OAAO,CAAC,MAAM,CAAC,CA0BjB"}
/**
* Bridge — the abstraction between the MCP server and the Customaise
* Chrome extension. Two implementations:
*
* - ExtensionBridge (leader): runs the WebSocket server on port 4050,
* accepts the extension as client, also
* accepts other customaise-mcp processes
* as followers.
* - RemoteBridge (follower): connects to an existing ExtensionBridge
* on port 4050 over WebSocket, proxies
* all requests through it.
*
* Motivation: before this abstraction, every customaise-mcp process tried
* to bind :4050 and any second instance died with EADDRINUSE, surfacing
* as `MCP error -32000: Connection closed` in the losing IDE. That made
* it impossible to run two agents (e.g. Cursor + Claude Code) against
* the same extension. The factory below auto-detects who's leader and
* who's a follower; the caller (index.ts / server.ts) doesn't care.
*/
import { ExtensionBridge } from './extension-bridge.js';
import { RemoteBridge } from './remote-bridge.js';
/**
* Try to start as leader; fall back to follower on EADDRINUSE.
*
* This is the only way to construct a bridge from outside the module —
* the class constructors are available for tests, but production code
* should always go through here so the port-contention logic stays
* centralised.
*/
export async function createBridge(port = 4050, requestTimeoutMs = 30_000) {
const local = new ExtensionBridge(port, requestTimeoutMs);
try {
await local.start();
process.stderr.write(`[customaise-mcp] Bridge role=leader, listening on :${port}\n`);
return local;
}
catch (err) {
if (err?.code !== 'EADDRINUSE') {
throw err;
}
// Port is already held by another customaise-mcp process. Become a
// follower: connect to that process over WebSocket and proxy all
// bridge traffic through it. The leader multiplexes responses and
// pushes back to every follower.
//
// Important: do NOT call local.close() here. When bind failed, the
// WSS never entered the listening state; close()'s callback
// behaviour on a never-listened server is library-defined and
// could hang or throw. The ExtensionBridge instance is unused and
// will be GC'd.
process.stderr.write(`[customaise-mcp] :${port} in use — starting as follower\n`);
const remote = new RemoteBridge(port, requestTimeoutMs);
await remote.start();
process.stderr.write(`[customaise-mcp] Bridge role=follower, connected to leader on :${port}\n`);
return remote;
}
}
//# sourceMappingURL=bridge.js.map
{"version":3,"file":"bridge.js","sourceRoot":"","sources":["../src/bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAwDlD;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,OAAe,IAAI,EACnB,mBAA2B,MAAM;IAEjC,MAAM,KAAK,GAAG,IAAI,eAAe,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;IAC1D,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;QACpB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sDAAsD,IAAI,IAAI,CAAC,CAAC;QACrF,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,IAAI,GAAG,EAAE,IAAI,KAAK,YAAY,EAAE,CAAC;YAC/B,MAAM,GAAG,CAAC;QACZ,CAAC;QACD,mEAAmE;QACnE,iEAAiE;QACjE,kEAAkE;QAClE,iCAAiC;QACjC,EAAE;QACF,mEAAmE;QACnE,4DAA4D;QAC5D,8DAA8D;QAC9D,kEAAkE;QAClE,gBAAgB;QAChB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,IAAI,kCAAkC,CAAC,CAAC;QAClF,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;QACxD,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kEAAkE,IAAI,IAAI,CAAC,CAAC;QACjG,OAAO,MAAM,CAAC;IAChB,CAAC;AACH,CAAC"}
/**
* RemoteBridge — follower-role Bridge implementation.
*
* When a second customaise-mcp process starts up and finds port 4050
* already bound by a sibling (e.g. user has Cursor + Claude Code both
* configured with the same MCP), this class talks to that sibling over
* WebSocket and proxies every bridge.request() through it. The MCP
* server layer (server.ts) doesn't know or care which side of the
* leader/follower divide it's on — same public interface.
*
* Wire protocol matches what ExtensionBridge expects from followers:
* follower → leader : { role: 'req', id, type, args }
* leader → follower: { role: 'res', id, success, result|error }
* { role: 'res-pending', id, expectedTimeoutMs, reason? }
* { role: 'push', type, data }
* { role: 'status', extensionConnected }
*
* Failure modes:
* - Leader goes away: WS close fires. All in-flight requests reject
* with a clear error. Subsequent request() calls attempt to
* promote self to leader (try to bind :port). If promotion fails
* (another follower raced and won), we reconnect as follower.
*/
import type { Bridge, BridgeClientInfo } from './bridge.js';
export declare class RemoteBridge implements Bridge {
readonly role: "follower";
private ws;
private port;
private requestTimeoutMs;
private pending;
private pushHandler;
private extensionConnected;
private closed;
private myClientInfo;
/**
* Timeout (ms) for the initial status frame after WS open. If the
* leader doesn't send one within this window, we assume we connected
* to something that isn't a customaise-mcp leader and fail start().
*/
private readonly HANDSHAKE_TIMEOUT_MS;
constructor(port?: number, requestTimeoutMs?: number);
/**
* Connect to the leader and wait for the initial status handshake.
*
* Two conditions must be met before start() resolves:
* 1. WebSocket 'open' fires — the TCP/WS handshake succeeded.
* 2. Leader sends `{ role: 'status', extensionConnected }` within
* HANDSHAKE_TIMEOUT_MS — confirms the peer is a real
* customaise-mcp leader AND gives us accurate initial state
* before any request() call can run.
*
* Without (2), a caller that immediately did bridge.request() after
* start() could race the status frame and see extensionConnected=false
* even when the extension is live — we'd reject the request with the
* wrong error.
*/
start(): Promise<void>;
private _connect;
private _handleLeaderFrame;
request(type: string, args?: Record<string, unknown>): Promise<unknown>;
onPush(handler: (type: string, data: any) => void): void;
/**
* Stash the follower process's own MCP client identity and forward
* it to the leader so the leader can include us in the extension's
* hello frame. Safe to call before or after start() — if WS isn't
* open yet, we defer the send until it is.
*
* Idempotent — if the incoming name+version exactly matches the
* last stored value, skip the forward (no point waking the leader
* on MCP-initialize replays with unchanged clientInfo).
*/
setOwnClientInfo(info: BridgeClientInfo): void;
private _forwardClientInfoIfReady;
close(): Promise<void>;
/** Exposed for logs and tests — matches ExtensionBridge.isConnected shape. */
get isConnected(): boolean;
private _log;
}
//# sourceMappingURL=remote-bridge.d.ts.map
{"version":3,"file":"remote-bridge.d.ts","sourceRoot":"","sources":["../src/remote-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAe5D,qBAAa,YAAa,YAAW,MAAM;IACzC,QAAQ,CAAC,IAAI,EAAG,UAAU,CAAU;IAEpC,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,OAAO,CAA6C;IAC5D,OAAO,CAAC,WAAW,CAAoD;IACvE,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,YAAY,CAAiC;IAErD;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAQ;gBAEjC,IAAI,SAAO,EAAE,gBAAgB,SAAS;IAKlD;;;;;;;;;;;;;;OAcG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAMtB,OAAO,CAAC,QAAQ;IAyEhB,OAAO,CAAC,kBAAkB;IAmDpB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA4BjF,MAAM,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI;IAIxD;;;;;;;;;OASG;IACH,gBAAgB,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI;IAS9C,OAAO,CAAC,yBAAyB;IAc3B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAa5B,8EAA8E;IAC9E,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED,OAAO,CAAC,IAAI;CAGb"}
/**
* RemoteBridge — follower-role Bridge implementation.
*
* When a second customaise-mcp process starts up and finds port 4050
* already bound by a sibling (e.g. user has Cursor + Claude Code both
* configured with the same MCP), this class talks to that sibling over
* WebSocket and proxies every bridge.request() through it. The MCP
* server layer (server.ts) doesn't know or care which side of the
* leader/follower divide it's on — same public interface.
*
* Wire protocol matches what ExtensionBridge expects from followers:
* follower → leader : { role: 'req', id, type, args }
* leader → follower: { role: 'res', id, success, result|error }
* { role: 'res-pending', id, expectedTimeoutMs, reason? }
* { role: 'push', type, data }
* { role: 'status', extensionConnected }
*
* Failure modes:
* - Leader goes away: WS close fires. All in-flight requests reject
* with a clear error. Subsequent request() calls attempt to
* promote self to leader (try to bind :port). If promotion fails
* (another follower raced and won), we reconnect as follower.
*/
import { WebSocket } from 'ws';
import { randomUUID } from 'node:crypto';
import { FOLLOWER_ORIGIN } from './extension-bridge.js';
export class RemoteBridge {
role = 'follower';
ws = null;
port;
requestTimeoutMs;
pending = new Map();
pushHandler = null;
extensionConnected = false;
closed = false;
myClientInfo = null;
/**
* Timeout (ms) for the initial status frame after WS open. If the
* leader doesn't send one within this window, we assume we connected
* to something that isn't a customaise-mcp leader and fail start().
*/
HANDSHAKE_TIMEOUT_MS = 5000;
constructor(port = 4050, requestTimeoutMs = 30_000) {
this.port = port;
this.requestTimeoutMs = requestTimeoutMs;
}
/**
* Connect to the leader and wait for the initial status handshake.
*
* Two conditions must be met before start() resolves:
* 1. WebSocket 'open' fires — the TCP/WS handshake succeeded.
* 2. Leader sends `{ role: 'status', extensionConnected }` within
* HANDSHAKE_TIMEOUT_MS — confirms the peer is a real
* customaise-mcp leader AND gives us accurate initial state
* before any request() call can run.
*
* Without (2), a caller that immediately did bridge.request() after
* start() could race the status frame and see extensionConnected=false
* even when the extension is live — we'd reject the request with the
* wrong error.
*/
start() {
return new Promise((resolve, reject) => {
this._connect(resolve, reject);
});
}
_connect(resolve, reject) {
const ws = new WebSocket(`ws://localhost:${this.port}`, {
origin: FOLLOWER_ORIGIN,
});
this.ws = ws;
let settled = false;
let handshakeComplete = false;
const handshakeTimer = setTimeout(() => {
if (settled || handshakeComplete)
return;
settled = true;
try {
ws.close(1002, 'Handshake timeout');
}
catch { /* ignore */ }
reject(new Error(`No leader handshake received within ${this.HANDSHAKE_TIMEOUT_MS}ms on :${this.port}. ` +
`Another process may be holding the port but is not a customaise-mcp leader.`));
}, this.HANDSHAKE_TIMEOUT_MS);
ws.on('open', () => {
this._log(`Connected to leader on :${this.port} (awaiting status handshake)`);
// Don't resolve here — wait for the status frame.
});
ws.on('message', (data) => {
try {
const frame = JSON.parse(data.toString());
// The first status frame doubles as the leader-identity
// handshake: no customaise-mcp peer would send one, so its
// arrival confirms we're talking to a real leader.
if (!handshakeComplete && frame.role === 'status') {
handshakeComplete = true;
clearTimeout(handshakeTimer);
this.extensionConnected = frame.extensionConnected;
// If MCP already called setOwnClientInfo before the WS was
// open, flush the deferred send now that we have a pipe.
this._forwardClientInfoIfReady();
if (!settled) {
settled = true;
resolve();
}
return;
}
this._handleLeaderFrame(frame);
}
catch (err) {
this._log(`Failed to parse leader frame: ${err}`);
}
});
ws.on('close', (code, reason) => {
this._log(`Leader closed connection (code=${code}, reason=${reason.toString()})`);
clearTimeout(handshakeTimer);
this.ws = null;
this.extensionConnected = false;
// Reject any in-flight requests — the leader won't deliver
// responses for them now.
for (const [, pending] of this.pending) {
clearTimeout(pending.timer);
pending.reject(new Error('Leader bridge disconnected before response arrived. Retry the request.'));
}
this.pending.clear();
if (!settled) {
settled = true;
reject(new Error(`Could not connect to leader on :${this.port} — connection closed before handshake`));
}
});
ws.on('error', (err) => {
this._log(`Leader WS error: ${err.message}`);
clearTimeout(handshakeTimer);
if (!settled) {
settled = true;
reject(err);
}
});
}
_handleLeaderFrame(frame) {
switch (frame.role) {
case 'res': {
const pending = this.pending.get(frame.id);
if (!pending) {
this._log(`Received response for unknown request id: ${frame.id}`);
return;
}
this.pending.delete(frame.id);
clearTimeout(pending.timer);
if (frame.success) {
pending.resolve(frame.result);
}
else {
pending.reject(new Error(frame.error || 'Leader relayed an error from the extension'));
}
break;
}
case 'res-pending': {
const pending = this.pending.get(frame.id);
if (!pending)
return;
const extendMs = Math.max(frame.expectedTimeoutMs || 0, this.requestTimeoutMs);
clearTimeout(pending.timer);
pending.timer = setTimeout(() => {
const stillPending = this.pending.get(frame.id);
if (!stillPending)
return;
this.pending.delete(frame.id);
stillPending.reject(new Error(`Request to extension timed out after ${extendMs}ms (type=consent-pending, id=${frame.id})`));
}, extendMs);
this._log(`Request ${frame.id} extended to ${extendMs}ms (reason: ${frame.reason || 'unspecified'})`);
break;
}
case 'push': {
if (this.pushHandler) {
try {
this.pushHandler(frame.type, frame.data);
}
catch (err) {
this._log(`pushHandler threw: ${err.message}`);
}
}
break;
}
case 'status': {
this.extensionConnected = frame.extensionConnected;
break;
}
default: {
this._log(`Unknown leader frame role: ${frame.role}`);
}
}
}
async request(type, args = {}) {
if (this.closed) {
throw new Error('Bridge is closed');
}
if (!this.ws || this.ws.readyState !== WebSocket.OPEN) {
throw new Error('Leader bridge is not connected. The customaise-mcp leader process may have exited.');
}
if (!this.extensionConnected) {
throw new Error('Customaise extension is not connected to the leader bridge. Make sure Chrome is running with the Customaise extension loaded.');
}
const id = randomUUID();
return new Promise((resolve, reject) => {
const timer = setTimeout(() => {
this.pending.delete(id);
reject(new Error(`Request to extension timed out after ${this.requestTimeoutMs}ms (type=${type}, id=${id})`));
}, this.requestTimeoutMs);
this.pending.set(id, { resolve, reject, timer });
const frame = { role: 'req', id, type, args };
this.ws.send(JSON.stringify(frame));
});
}
onPush(handler) {
this.pushHandler = handler;
}
/**
* Stash the follower process's own MCP client identity and forward
* it to the leader so the leader can include us in the extension's
* hello frame. Safe to call before or after start() — if WS isn't
* open yet, we defer the send until it is.
*
* Idempotent — if the incoming name+version exactly matches the
* last stored value, skip the forward (no point waking the leader
* on MCP-initialize replays with unchanged clientInfo).
*/
setOwnClientInfo(info) {
if (!info || typeof info.name !== 'string' || typeof info.version !== 'string')
return;
const next = { name: info.name.slice(0, 128), version: info.version.slice(0, 64) };
const current = this.myClientInfo;
if (current && current.name === next.name && current.version === next.version)
return;
this.myClientInfo = next;
this._forwardClientInfoIfReady();
}
_forwardClientInfoIfReady() {
if (!this.myClientInfo)
return;
if (!this.ws || this.ws.readyState !== WebSocket.OPEN)
return;
try {
this.ws.send(JSON.stringify({
role: 'client-info',
name: this.myClientInfo.name,
version: this.myClientInfo.version,
}));
}
catch (err) {
this._log(`Failed to forward client-info: ${err.message}`);
}
}
async close() {
this.closed = true;
for (const [, pending] of this.pending) {
clearTimeout(pending.timer);
pending.reject(new Error('Bridge is shutting down'));
}
this.pending.clear();
if (this.ws) {
try {
this.ws.close(1000, 'Follower shutting down');
}
catch { /* ignore */ }
this.ws = null;
}
}
/** Exposed for logs and tests — matches ExtensionBridge.isConnected shape. */
get isConnected() {
return this.ws !== null && this.ws.readyState === WebSocket.OPEN && this.extensionConnected;
}
_log(message) {
process.stderr.write(`[customaise-mcp] ${message}\n`);
}
}
//# sourceMappingURL=remote-bridge.js.map
{"version":3,"file":"remote-bridge.js","sourceRoot":"","sources":["../src/remote-bridge.ts"],"names":[],"mappings":"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"}
+14
-0

@@ -5,2 +5,16 @@ # Changelog

## [1.3.0] - 2026-04-23
### Added
- **Multi-IDE support.** Run `customaise-mcp` from more than one IDE at the same time (e.g. Cursor + Claude Code, or Antigravity + Windsurf). Previously a second instance exited with "MCP error -32000: Connection closed" because port 4050 was already taken; now the second instance automatically routes through the first and both IDEs can use the Customaise extension concurrently.
- **Connected-IDE visibility in the extension.** The Customaise sidebar (Settings → Developer Tools) now shows which MCP version is connected and which IDEs are using it — useful to confirm the right agent is wired in before issuing commands.
### Security
- **Loopback-only WebSocket bridge.** WS handshakes from non-loopback addresses are rejected at 403. Closes a narrow LAN-peer probing path. No compat impact — the extension and MCP client both connect via localhost.
- **Handshake validation on the second MCP instance.** If the second instance finds port 4050 held by something that isn't `customaise-mcp`, it fails fast with a clear error instead of hanging.
### Compatibility
- No MCP-client-side contract changes. Existing `.cursor/mcp.json` / `.windsurf/mcp.json` / etc. configs continue to work unchanged.
- Requires Customaise extension 1.3.0+ to see the new connected-IDE panel; older extensions still work with this MCP but won't render the version/client list.
## [1.2.0] - 2026-04-19

@@ -7,0 +21,0 @@

+77
-12
/**
* ExtensionBridge — WebSocket server that connects the MCP server to the
* ExtensionBridge — WebSocket server bridging the MCP server and the
* Customaise Chrome extension.
*
* Architecture:
* MCP Server (stdio) ←→ ExtensionBridge (WS server :4050) ←→ Extension SW (WS client)
* MCP Server (stdio) ←→ ExtensionBridge (WS :4050) ←→ Extension SW (WS client)
* ↑
* └── (WS) ← other customaise-mcp
* processes running as
* followers (for
* multi-IDE setups)
*
* The MCP Node process hosts the WebSocket server because MV3 service workers
* cannot run servers. The extension connects as a WebSocket client.
* This file implements the LEADER role. See `remote-bridge.ts` for the
* follower client and `bridge.ts` for the leader/follower auto-detection
* factory.
*
* The MCP Node process hosts the WebSocket server because MV3 service
* workers cannot run servers. The extension connects as a WebSocket
* client. Additional customaise-mcp processes (e.g. one per IDE window)
* connect as follower clients and proxy their bridge requests through
* this leader.
*/
export declare class ExtensionBridge {
import type { Bridge, BridgeClientInfo } from './bridge.js';
/**
* Origin used by RemoteBridge followers when they connect to a leader.
* Browsers cannot forge Origin, so a webpage can't pose as a follower.
* A same-user local process could, but that's already in scope of the
* pre-existing threat model (a local attacker can forge `chrome-extension://`
* just as easily). Additional defense: we enforce the connecting socket
* is loopback.
*/
export declare const FOLLOWER_ORIGIN = "customaise-mcp-follower://local";
export declare class ExtensionBridge implements Bridge {
readonly role: "leader";
private wss;
private extensionSocket;
private followerSockets;
private followerClientInfos;
private myClientInfo;
private pending;

@@ -18,10 +44,30 @@ private port;

private pushHandler;
private allowedOrigins;
private allowedExtensionOrigins;
private allowInsecure;
constructor(port?: number, requestTimeoutMs?: number);
/**
* Start the WebSocket server and begin listening for the extension client.
* Start the WebSocket server and begin listening for the extension +
* follower clients.
*/
start(): Promise<void>;
/** A new extension client connected (or replaced an existing one). */
private _handleExtensionConnection;
/** A new follower customaise-mcp process connected. */
private _handleFollowerConnection;
/**
* Route an incoming frame from a follower. Currently the only frame
* type followers send is `req` — a request that should be forwarded
* to the extension. Responses (including interim `res-pending`) come
* from the extension and go back through the follower's WS.
*
* Security note: we do NOT reuse the follower-supplied id when
* forwarding to the extension. A malicious/buggy follower could
* supply an id that collides with the leader's own in-flight request
* (or another follower's), causing cross-wire response routing.
* Instead, we generate a fresh server-side id and map it back to
* the follower+origId on the response path. The follower still sees
* its own id in the response frame we relay back.
*/
private _handleFollowerMessage;
/**
* Send a request to the extension and wait for the response.

@@ -41,2 +87,20 @@ * Throws if the extension is not connected or the request times out.

/**
* Record this leader process's own MCP client identity (the IDE that
* spawned us), and refresh the hello frame on the extension side so
* its UI reflects the new entry in the connected-IDEs list.
*
* Idempotent — repeated calls with the same name+version are a
* no-op (no wasted hello frame, no `_broadcastStatus` storm on the
* extension end). Useful because MCP's initialize can re-fire on
* some transport reconnect paths.
*/
setOwnClientInfo(info: BridgeClientInfo): void;
/**
* Build the authoritative hello frame from current state and send to
* the extension if it's connected. Idempotent; safe to call any time
* client-info state changes (leader self-initialize, follower join,
* follower announce, follower leave).
*/
private _sendHelloToExtension;
/**
* Close the WebSocket server and all connections.

@@ -46,5 +110,3 @@ */

/**
* Handle an incoming response from the extension, matching it to a pending request.
*
* Recognises three frame shapes:
* Handle an incoming message from the extension. Recognises:
* 1. Final response — `{ id, success, result|error }` — resolves/rejects + clears.

@@ -57,5 +119,8 @@ * 2. Interim "pending" — `{ id, kind: 'pending', expectedTimeoutMs }` — resets

* 3. Unprompted push — `{ type, data }` with no matching id — forwarded to
* the registered push handler (e.g. status broadcasts).
* the registered push handler + broadcast to all followers.
*/
private _handleResponse;
private _handleExtensionMessage;
private _broadcastPushToFollowers;
private _broadcastStatusToFollowers;
private _sendToFollower;
/**

@@ -62,0 +127,0 @@ * Log to stderr (stdout is reserved for MCP stdio transport).

+1
-1

@@ -1,1 +0,1 @@

{"version":3,"file":"extension-bridge.d.ts","sourceRoot":"","sources":["../src/extension-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AA+CH,qBAAa,eAAe;IAC1B,OAAO,CAAC,GAAG,CAAgC;IAC3C,OAAO,CAAC,eAAe,CAA0B;IACjD,OAAO,CAAC,OAAO,CAAqC;IACpD,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,WAAW,CAAoD;IACvE,OAAO,CAAC,cAAc,CAAc;IACpC,OAAO,CAAC,aAAa,CAAU;gBAEnB,IAAI,SAAO,EAAE,gBAAgB,SAAS;IAqBlD;;OAEG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAgEtB;;;OAGG;IACG,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAsBjF;;OAEG;IACH,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED;;;OAGG;IACH,MAAM,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI;IAIxD;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAyB5B;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,eAAe;IAyCvB;;OAEG;IACH,OAAO,CAAC,IAAI;CAGb"}
{"version":3,"file":"extension-bridge.d.ts","sourceRoot":"","sources":["../src/extension-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAOH,OAAO,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAuC5D;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,oCAAoC,CAAC;AAgEjE,qBAAa,eAAgB,YAAW,MAAM;IAC5C,QAAQ,CAAC,IAAI,EAAG,QAAQ,CAAU;IAElC,OAAO,CAAC,GAAG,CAAgC;IAC3C,OAAO,CAAC,eAAe,CAA0B;IACjD,OAAO,CAAC,eAAe,CAAwB;IAC/C,OAAO,CAAC,mBAAmB,CAA0C;IACrE,OAAO,CAAC,YAAY,CAAiC;IACrD,OAAO,CAAC,OAAO,CAAqC;IACpD,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,WAAW,CAAoD;IACvE,OAAO,CAAC,uBAAuB,CAAc;IAC7C,OAAO,CAAC,aAAa,CAAU;gBAEnB,IAAI,SAAO,EAAE,gBAAgB,SAAS;IAqBlD;;;OAGG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAiEtB,sEAAsE;IACtE,OAAO,CAAC,0BAA0B;IAsClC,uDAAuD;IACvD,OAAO,CAAC,yBAAyB;IAwCjC;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,sBAAsB;IAsE9B;;;OAGG;IACG,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAsBjF;;OAEG;IACH,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED;;;OAGG;IACH,MAAM,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI;IAIxD;;;;;;;;;OASG;IACH,gBAAgB,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI;IAS9C;;;;;OAKG;IACH,OAAO,CAAC,qBAAqB;IAqB7B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA8B5B;;;;;;;;;;OAUG;IACH,OAAO,CAAC,uBAAuB;IA6D/B,OAAO,CAAC,yBAAyB;IAQjC,OAAO,CAAC,2BAA2B;IAQnC,OAAO,CAAC,eAAe;IAOvB;;OAEG;IACH,OAAO,CAAC,IAAI;CAGb"}
/**
* ExtensionBridge — WebSocket server that connects the MCP server to the
* ExtensionBridge — WebSocket server bridging the MCP server and the
* Customaise Chrome extension.
*
* Architecture:
* MCP Server (stdio) ←→ ExtensionBridge (WS server :4050) ←→ Extension SW (WS client)
* MCP Server (stdio) ←→ ExtensionBridge (WS :4050) ←→ Extension SW (WS client)
* ↑
* └── (WS) ← other customaise-mcp
* processes running as
* followers (for
* multi-IDE setups)
*
* The MCP Node process hosts the WebSocket server because MV3 service workers
* cannot run servers. The extension connects as a WebSocket client.
* This file implements the LEADER role. See `remote-bridge.ts` for the
* follower client and `bridge.ts` for the leader/follower auto-detection
* factory.
*
* The MCP Node process hosts the WebSocket server because MV3 service
* workers cannot run servers. The extension connects as a WebSocket
* client. Additional customaise-mcp processes (e.g. one per IDE window)
* connect as follower clients and proxy their bridge requests through
* this leader.
*/
import { WebSocketServer, WebSocket } from 'ws';
import { randomUUID } from 'node:crypto';
import { readFileSync } from 'node:fs';
import { fileURLToPath } from 'node:url';
import { dirname, join } from 'node:path';
/**
* Extension IDs permitted to connect to the bridge.
* Version stamp of this customaise-mcp package. Read from the shipped
* package.json at module load. The extension compares this against its
* own EXPECTED_MCP_VERSION constant to surface update nudges in the
* sidebar UI.
*/
const MCP_VERSION = (() => {
try {
const here = dirname(fileURLToPath(import.meta.url));
const pkgPath = join(here, '..', 'package.json');
return JSON.parse(readFileSync(pkgPath, 'utf-8')).version || '0.0.0';
}
catch {
return '0.0.0';
}
})();
/**
* Extension IDs permitted to connect as the extension client.
*

@@ -33,5 +64,18 @@ * Threat model: any process (browser tab, native daemon) that can reach

];
/**
* Origin used by RemoteBridge followers when they connect to a leader.
* Browsers cannot forge Origin, so a webpage can't pose as a follower.
* A same-user local process could, but that's already in scope of the
* pre-existing threat model (a local attacker can forge `chrome-extension://`
* just as easily). Additional defense: we enforce the connecting socket
* is loopback.
*/
export const FOLLOWER_ORIGIN = 'customaise-mcp-follower://local';
export class ExtensionBridge {
role = 'leader';
wss = null;
extensionSocket = null;
followerSockets = new Set();
followerClientInfos = new Map();
myClientInfo = null;
pending = new Map();

@@ -41,3 +85,3 @@ port;

pushHandler = null;
allowedOrigins;
allowedExtensionOrigins;
allowInsecure;

@@ -55,3 +99,3 @@ constructor(port = 4050, requestTimeoutMs = 30_000) {

const allIds = [...DEFAULT_EXTENSION_IDS, ...extraIds];
this.allowedOrigins = new Set(allIds.map((id) => `chrome-extension://${id}`));
this.allowedExtensionOrigins = new Set(allIds.map((id) => `chrome-extension://${id}`));
// Escape hatch for tests and any non-browser MCP-bridge clients that

@@ -64,3 +108,4 @@ // need to connect without forging a chrome-extension:// origin. Must

/**
* Start the WebSocket server and begin listening for the extension client.
* Start the WebSocket server and begin listening for the extension +
* follower clients.
*/

@@ -73,2 +118,18 @@ start() {

const origin = info.origin || info.req.headers.origin || '';
// Universal loopback guard — first line of defence for every
// connection, extension + follower alike. A LAN attacker can
// still complete the TCP SYN (the port is open on the
// network interface) but fails the WS upgrade with 403.
// Costs nothing for legitimate clients: the Chrome extension
// always resolves `ws://localhost:4050` to a loopback
// address, and follower processes connect via localhost by
// definition. Bypassable only by a same-user local process
// (documented residual risk).
const remoteAddr = info.req.socket.remoteAddress || '';
const isLoopback = remoteAddr === '127.0.0.1' || remoteAddr === '::1' || remoteAddr === '::ffff:127.0.0.1';
if (!isLoopback) {
this._log(`Rejected non-loopback handshake from remoteAddress="${remoteAddr}" origin="${origin}"`);
done(false, 403, 'Forbidden: loopback-only');
return;
}
if (this.allowInsecure) {

@@ -78,6 +139,12 @@ done(true);

}
if (this.allowedOrigins.has(origin)) {
if (this.allowedExtensionOrigins.has(origin)) {
done(true);
return;
}
if (origin === FOLLOWER_ORIGIN) {
// Loopback already enforced above; any follower reaching
// this branch is local by construction.
done(true);
return;
}
this._log(`Rejected WS handshake from origin="${origin}" (not in allowlist)`);

@@ -97,32 +164,168 @@ done(false, 403, 'Forbidden: origin not allowed');

});
this.wss.on('connection', (ws) => {
this._log('Extension client connected');
// Only allow one client at a time (the Customaise extension)
if (this.extensionSocket) {
this._log('Replacing existing extension connection');
this.extensionSocket.close(1000, 'Replaced by new connection');
this.wss.on('connection', (ws, req) => {
const origin = req.headers.origin || '';
if (origin === FOLLOWER_ORIGIN) {
this._handleFollowerConnection(ws);
}
this.extensionSocket = ws;
ws.on('message', (data) => {
try {
const message = JSON.parse(data.toString());
this._handleResponse(message);
}
catch (err) {
this._log(`Failed to parse message from extension: ${err}`);
}
});
ws.on('close', (code, reason) => {
this._log(`Extension client disconnected (code=${code}, reason=${reason.toString()})`);
if (this.extensionSocket === ws) {
this.extensionSocket = null;
}
});
ws.on('error', (err) => {
this._log(`Extension client error: ${err.message}`);
});
else {
this._handleExtensionConnection(ws);
}
});
});
}
/** A new extension client connected (or replaced an existing one). */
_handleExtensionConnection(ws) {
this._log('Extension client connected');
// Only allow one extension at a time.
if (this.extensionSocket) {
this._log('Replacing existing extension connection');
this.extensionSocket.close(1000, 'Replaced by new connection');
}
this.extensionSocket = ws;
this._broadcastStatusToFollowers(true);
// Send hello immediately so the extension UI can populate the MCP
// version + connected-clients pill with whatever we know so far.
// Re-sent whenever client-info state changes (below).
this._sendHelloToExtension();
ws.on('message', (data) => {
try {
const message = JSON.parse(data.toString());
this._handleExtensionMessage(message);
}
catch (err) {
this._log(`Failed to parse message from extension: ${err}`);
}
});
ws.on('close', (code, reason) => {
this._log(`Extension client disconnected (code=${code}, reason=${reason.toString()})`);
if (this.extensionSocket === ws) {
this.extensionSocket = null;
this._broadcastStatusToFollowers(false);
}
});
ws.on('error', (err) => {
this._log(`Extension client error: ${err.message}`);
});
}
/** A new follower customaise-mcp process connected. */
_handleFollowerConnection(ws) {
this._log('Follower client connected');
this.followerSockets.add(ws);
// Send initial status so the follower knows whether the extension is live.
this._sendToFollower(ws, { role: 'status', extensionConnected: this.extensionSocket !== null });
ws.on('message', (data) => {
try {
const message = JSON.parse(data.toString());
this._handleFollowerMessage(ws, message);
}
catch (err) {
this._log(`Failed to parse message from follower: ${err}`);
}
});
ws.on('close', (code, reason) => {
this._log(`Follower client disconnected (code=${code}, reason=${reason.toString()})`);
this.followerSockets.delete(ws);
const hadClientInfo = this.followerClientInfos.has(ws);
this.followerClientInfos.delete(ws);
// Reject any requests still in-flight on behalf of this follower.
for (const [id, pending] of this.pending) {
if (pending.origin === ws) {
clearTimeout(pending.timer);
this.pending.delete(id);
// No one left to tell about the rejection — just drop.
}
}
// If the follower had announced itself, its client entry just
// vanished from the list — refresh the extension's hello so the
// UI doesn't show a stale IDE pill.
if (hadClientInfo)
this._sendHelloToExtension();
});
ws.on('error', (err) => {
this._log(`Follower client error: ${err.message}`);
});
}
/**
* Route an incoming frame from a follower. Currently the only frame
* type followers send is `req` — a request that should be forwarded
* to the extension. Responses (including interim `res-pending`) come
* from the extension and go back through the follower's WS.
*
* Security note: we do NOT reuse the follower-supplied id when
* forwarding to the extension. A malicious/buggy follower could
* supply an id that collides with the leader's own in-flight request
* (or another follower's), causing cross-wire response routing.
* Instead, we generate a fresh server-side id and map it back to
* the follower+origId on the response path. The follower still sees
* its own id in the response frame we relay back.
*/
_handleFollowerMessage(ws, message) {
if (!message || typeof message !== 'object') {
this._log('Follower sent non-object frame');
return;
}
if (message.role === 'client-info') {
const name = message.name;
const version = message.version;
if (typeof name === 'string' && name.length > 0 && typeof version === 'string') {
const next = { name: name.slice(0, 128), version: version.slice(0, 64) };
const current = this.followerClientInfos.get(ws);
// Skip the hello re-broadcast when the follower is just
// re-announcing unchanged info (e.g., MCP initialize reran on
// transport reconnect). Avoids a chatty status ripple to the
// extension's UI fanout.
if (current && current.name === next.name && current.version === next.version)
return;
this.followerClientInfos.set(ws, next);
this._sendHelloToExtension();
}
return;
}
if (message.role !== 'req') {
this._log(`Follower sent unknown role: ${message.role}`);
return;
}
const origId = message.id;
const type = message.type;
const rawArgs = message.args;
if (typeof origId !== 'string' || origId.length === 0) {
this._log('Follower req frame missing/invalid id; dropping');
return;
}
if (typeof type !== 'string' || type.length === 0) {
this._sendToFollower(ws, { role: 'res', id: origId, success: false, error: 'req.type must be a non-empty string' });
return;
}
const args = (rawArgs && typeof rawArgs === 'object' && !Array.isArray(rawArgs)) ? rawArgs : {};
if (!this.extensionSocket || this.extensionSocket.readyState !== WebSocket.OPEN) {
this._sendToFollower(ws, {
role: 'res', id: origId, success: false,
error: 'Customaise extension is not connected. Make sure Chrome is running with the Customaise extension loaded.',
});
return;
}
// Server-side id, decoupled from what the follower provided. The
// response path translates back.
const forwardId = randomUUID();
const timer = setTimeout(() => {
const pending = this.pending.get(forwardId);
if (!pending)
return;
this.pending.delete(forwardId);
this._sendToFollower(ws, {
role: 'res', id: origId, success: false,
error: `Request to extension timed out after ${this.requestTimeoutMs}ms (type=${type}, id=${origId})`,
});
}, this.requestTimeoutMs);
this.pending.set(forwardId, {
origin: ws,
resolve: (result) => this._sendToFollower(ws, { role: 'res', id: origId, success: true, result }),
reject: (err) => this._sendToFollower(ws, { role: 'res', id: origId, success: false, error: err.message }),
timer,
followerOrigId: origId,
});
const request = { id: forwardId, type, args };
this.extensionSocket.send(JSON.stringify(request));
}
/**
* Send a request to the extension and wait for the response.

@@ -141,3 +344,3 @@ * Throws if the extension is not connected or the request times out.

}, this.requestTimeoutMs);
this.pending.set(id, { resolve, reject, timer });
this.pending.set(id, { origin: 'leader', resolve, reject, timer });
const request = { id, type, args };

@@ -161,2 +364,50 @@ this.extensionSocket.send(JSON.stringify(request));

/**
* Record this leader process's own MCP client identity (the IDE that
* spawned us), and refresh the hello frame on the extension side so
* its UI reflects the new entry in the connected-IDEs list.
*
* Idempotent — repeated calls with the same name+version are a
* no-op (no wasted hello frame, no `_broadcastStatus` storm on the
* extension end). Useful because MCP's initialize can re-fire on
* some transport reconnect paths.
*/
setOwnClientInfo(info) {
if (!info || typeof info.name !== 'string' || typeof info.version !== 'string')
return;
const next = { name: info.name.slice(0, 128), version: info.version.slice(0, 64) };
const current = this.myClientInfo;
if (current && current.name === next.name && current.version === next.version)
return;
this.myClientInfo = next;
this._sendHelloToExtension();
}
/**
* Build the authoritative hello frame from current state and send to
* the extension if it's connected. Idempotent; safe to call any time
* client-info state changes (leader self-initialize, follower join,
* follower announce, follower leave).
*/
_sendHelloToExtension() {
if (!this.extensionSocket || this.extensionSocket.readyState !== WebSocket.OPEN)
return;
const clients = [];
if (this.myClientInfo) {
clients.push({ ...this.myClientInfo, role: 'leader' });
}
for (const [, info] of this.followerClientInfos) {
clients.push({ ...info, role: 'follower' });
}
const frame = {
role: 'hello',
mcpVersion: MCP_VERSION,
clients,
};
try {
this.extensionSocket.send(JSON.stringify(frame));
}
catch (err) {
this._log(`Failed to send hello frame: ${err.message}`);
}
}
/**
* Close the WebSocket server and all connections.

@@ -166,3 +417,3 @@ */

// Reject all pending requests
for (const [id, pending] of this.pending) {
for (const [, pending] of this.pending) {
clearTimeout(pending.timer);

@@ -176,2 +427,9 @@ pending.reject(new Error('Bridge is shutting down'));

}
for (const f of this.followerSockets) {
try {
f.close(1001, 'Leader shutting down');
}
catch { /* ignore */ }
}
this.followerSockets.clear();
return new Promise((resolve) => {

@@ -190,5 +448,3 @@ if (this.wss) {

/**
* Handle an incoming response from the extension, matching it to a pending request.
*
* Recognises three frame shapes:
* Handle an incoming message from the extension. Recognises:
* 1. Final response — `{ id, success, result|error }` — resolves/rejects + clears.

@@ -201,5 +457,5 @@ * 2. Interim "pending" — `{ id, kind: 'pending', expectedTimeoutMs }` — resets

* 3. Unprompted push — `{ type, data }` with no matching id — forwarded to
* the registered push handler (e.g. status broadcasts).
* the registered push handler + broadcast to all followers.
*/
_handleResponse(message) {
_handleExtensionMessage(message) {
const pending = message.id ? this.pending.get(message.id) : undefined;

@@ -211,5 +467,19 @@ // Interim "pending" frame — extend the deadline, do NOT resolve.

pending.timer = setTimeout(() => {
const stillPending = this.pending.get(message.id);
if (!stillPending)
return;
this.pending.delete(message.id);
pending.reject(new Error(`Request to extension timed out after ${extendMs}ms (type=consent-pending, id=${message.id})`));
stillPending.reject(new Error(`Request to extension timed out after ${extendMs}ms (type=consent-pending, id=${message.id})`));
}, extendMs);
// Also relay the pending frame to the originating follower so it
// can extend its own client-side timer if it tracks one. Use
// the follower's original id (not our server-side forwardId),
// which is what its local pending map is keyed by.
if (pending.origin !== 'leader' && pending.followerOrigId) {
this._sendToFollower(pending.origin, {
role: 'res-pending', id: pending.followerOrigId,
expectedTimeoutMs: extendMs,
reason: message.reason,
});
}
this._log(`Request ${message.id} extended to ${extendMs}ms (reason: ${message.reason || 'unspecified'})`);

@@ -219,5 +489,15 @@ return;

if (!pending) {
// Check if this is a push message from the extension
if (message.type && this.pushHandler) {
this.pushHandler(message.type, message.data || {});
// Push from the extension (no matching pending request).
if (message.type) {
const pushType = message.type;
const pushData = message.data || {};
if (this.pushHandler) {
try {
this.pushHandler(pushType, pushData);
}
catch (err) {
this._log(`pushHandler threw: ${err.message}`);
}
}
this._broadcastPushToFollowers(pushType, pushData);
}

@@ -239,2 +519,28 @@ else {

}
_broadcastPushToFollowers(type, data) {
if (this.followerSockets.size === 0)
return;
const frame = { role: 'push', type, data };
for (const f of this.followerSockets) {
this._sendToFollower(f, frame);
}
}
_broadcastStatusToFollowers(extensionConnected) {
if (this.followerSockets.size === 0)
return;
const frame = { role: 'status', extensionConnected };
for (const f of this.followerSockets) {
this._sendToFollower(f, frame);
}
}
_sendToFollower(ws, frame) {
if (ws.readyState !== WebSocket.OPEN)
return;
try {
ws.send(JSON.stringify(frame));
}
catch (err) {
this._log(`Failed to send frame to follower: ${err.message}`);
}
}
/**

@@ -241,0 +547,0 @@ * Log to stderr (stdout is reserved for MCP stdio transport).

@@ -1,1 +0,1 @@

{"version":3,"file":"extension-bridge.js","sourceRoot":"","sources":["../src/extension-bridge.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"extension-bridge.js","sourceRoot":"","sources":["../src/extension-bridge.ts"],"names":[],"mappings":"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"}

@@ -8,3 +8,3 @@ /**

*/
import { ExtensionBridge } from './extension-bridge.js';
import type { Bridge } from './bridge.js';
export declare class FileWatcher {

@@ -20,3 +20,3 @@ private watcher;

private debounceMs;
constructor(bridge: ExtensionBridge);
constructor(bridge: Bridge);
/**

@@ -23,0 +23,0 @@ * Start watching a directory for .user.js changes.

@@ -1,1 +0,1 @@

{"version":3,"file":"file-watcher.d.ts","sourceRoot":"","sources":["../src/file-watcher.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAIxD,qBAAa,WAAW;IACtB,OAAO,CAAC,OAAO,CAA0B;IACzC,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,SAAS,CAAc;IAE/B,2EAA2E;IAC3E,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,aAAa,CAAQ;IAE7B,+BAA+B;IAC/B,OAAO,CAAC,cAAc,CAAoD;IAC1E,OAAO,CAAC,UAAU,CAAO;gBAEb,MAAM,EAAE,eAAe;IAInC;;;OAGG;IACH,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IA8B9B;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAOhC;;OAEG;IACH,IAAI,IAAI,IAAI;IAWZ,OAAO,CAAC,gBAAgB;YAqBV,UAAU;CAqCzB"}
{"version":3,"file":"file-watcher.d.ts","sourceRoot":"","sources":["../src/file-watcher.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAI1C,qBAAa,WAAW;IACtB,OAAO,CAAC,OAAO,CAA0B;IACzC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAc;IAE/B,2EAA2E;IAC3E,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,aAAa,CAAQ;IAE7B,+BAA+B;IAC/B,OAAO,CAAC,cAAc,CAAoD;IAC1E,OAAO,CAAC,UAAU,CAAO;gBAEb,MAAM,EAAE,MAAM;IAI1B;;;OAGG;IACH,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IA8B9B;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAOhC;;OAEG;IACH,IAAI,IAAI,IAAI;IAWZ,OAAO,CAAC,gBAAgB;YAqBV,UAAU;CAqCzB"}

@@ -1,1 +0,1 @@

{"version":3,"file":"file-watcher.js","sourceRoot":"","sources":["../src/file-watcher.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"file-watcher.js","sourceRoot":"","sources":["../src/file-watcher.ts"],"names":[],"mappings":"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"}

@@ -23,3 +23,3 @@ #!/usr/bin/env node

import { registerTools, registerPromptsAndResources } from './server.js';
import { ExtensionBridge } from './extension-bridge.js';
import { createBridge } from './bridge.js';
import { FileWatcher } from './file-watcher.js';

@@ -73,5 +73,7 @@ // Single source of truth for the server version: the package.json this

async function main() {
// 1. Start the WebSocket server for the extension to connect to
const bridge = new ExtensionBridge(WS_PORT);
await bridge.start();
// 1. Create the bridge. Leader role if port is free; follower role if
// another customaise-mcp process already owns :WS_PORT. Either way
// the rest of the setup is identical — server.ts and file-watcher
// use the same Bridge interface.
const bridge = await createBridge(WS_PORT);
// 2. Create the MCP server

@@ -100,2 +102,33 @@ const server = new McpServer({

await server.connect(transport);
// 6. Once the IDE completes MCP initialize, capture its clientInfo
// (name + version) and register it with the bridge so the
// extension UI can surface "connected IDE: Cursor 0.42.0" in the
// sidebar. For followers, this info is forwarded to the leader
// over the peer channel; for the leader, it feeds directly into
// the hello frame sent to the extension.
const underlyingServer = server.server;
if (underlyingServer && typeof underlyingServer === 'object') {
const prev = underlyingServer.oninitialized;
underlyingServer.oninitialized = () => {
try {
if (typeof prev === 'function')
prev();
}
catch { /* ignore */ }
try {
const clientInfo = typeof underlyingServer.getClientVersion === 'function'
? underlyingServer.getClientVersion()
: null;
if (clientInfo && typeof clientInfo.name === 'string') {
bridge.setOwnClientInfo({
name: clientInfo.name,
version: typeof clientInfo.version === 'string' ? clientInfo.version : 'unknown',
});
}
}
catch (err) {
process.stderr.write(`[customaise-mcp] Could not read clientInfo: ${err?.message || err}\n`);
}
};
}
process.stderr.write('[customaise-mcp] MCP server running (stdio + WebSocket)\n');

@@ -102,0 +135,0 @@ // Graceful shutdown

@@ -1,1 +0,1 @@

{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
import { ExtensionBridge } from './extension-bridge.js';
import type { Bridge } from './bridge.js';
import { FileWatcher } from './file-watcher.js';

@@ -7,7 +7,7 @@ /**

*/
export declare function registerTools(server: McpServer, bridge: ExtensionBridge, fileWatcher?: FileWatcher): void;
export declare function registerTools(server: McpServer, bridge: Bridge, fileWatcher?: FileWatcher): void;
/**
* Register MCP Prompts and Resources.
*/
export declare function registerPromptsAndResources(server: McpServer, bridge: ExtensionBridge): void;
export declare function registerPromptsAndResources(server: McpServer, bridge: Bridge): void;
//# sourceMappingURL=server.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAoB,MAAM,yCAAyC,CAAC;AAyBtF,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI,CAusBzG;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,GAAG,IAAI,CAgG5F"}
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAoB,MAAM,yCAAyC,CAAC;AAyBtF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI,CAusBhG;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAgGnF"}

@@ -1,1 +0,1 @@

{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
{
"name": "@customaise/mcp",
"version": "1.2.0",
"version": "1.3.0",
"description": "MCP server bridging AI coding agents (Cursor, Claude Code, Codex, Windsurf, Kiro, Antigravity) to the Customaise Chrome extension. 18 tools: UserScripts, AgentScripts, WebMCP calls with HITL consent, visual DOM targeting, tab control.",

@@ -5,0 +5,0 @@ "type": "module",