brms-host 1.0.3 → 1.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/build/index.d.ts CHANGED
@@ -4,5 +4,9 @@
4
4
  *
5
5
  * - Starts an HTTP server on port 3100 exposing MCP via Streamable HTTP
6
6
  * - Starts the native messaging bridge to communicate with the Chrome extension
7
+ *
8
+ * Each Cursor connection gets its own transport + MCP server instance so that
9
+ * reconnects (which send a fresh `initialize`) never hit the "already initialized"
10
+ * error that occurs when a single transport is reused across sessions.
7
11
  */
8
12
  export {};
package/build/index.js CHANGED
@@ -4,6 +4,10 @@
4
4
  *
5
5
  * - Starts an HTTP server on port 3100 exposing MCP via Streamable HTTP
6
6
  * - Starts the native messaging bridge to communicate with the Chrome extension
7
+ *
8
+ * Each Cursor connection gets its own transport + MCP server instance so that
9
+ * reconnects (which send a fresh `initialize`) never hit the "already initialized"
10
+ * error that occurs when a single transport is reused across sessions.
7
11
  */
8
12
  import { createServer as createHttpServer } from 'node:http';
9
13
  import { writeFileSync, appendFileSync } from 'node:fs';
@@ -22,51 +26,98 @@ function debugLog(msg) {
22
26
  catch { }
23
27
  log.info(msg);
24
28
  }
25
- // Catch everything that might kill the process
26
- process.on('exit', (code) => {
27
- debugLog(`Process exiting with code ${code}`);
28
- });
29
- process.on('uncaughtException', (err) => {
30
- debugLog(`UNCAUGHT EXCEPTION: ${err.stack ?? err.message}`);
31
- });
32
- process.on('unhandledRejection', (reason) => {
33
- debugLog(`UNHANDLED REJECTION: ${reason}`);
34
- });
29
+ process.on('exit', (code) => { debugLog(`Process exiting with code ${code}`); });
30
+ process.on('uncaughtException', (err) => { debugLog(`UNCAUGHT EXCEPTION: ${err.stack ?? err.message}`); });
31
+ process.on('unhandledRejection', (reason) => { debugLog(`UNHANDLED REJECTION: ${reason}`); });
35
32
  process.on('SIGTERM', () => debugLog('Received SIGTERM'));
36
33
  process.on('SIGINT', () => debugLog('Received SIGINT'));
37
- // Keep process alive even if stdin closes
38
- process.stdin.on('end', () => {
39
- debugLog('stdin ended — keeping process alive');
40
- });
34
+ // Keep process alive even if stdin closes (native messaging host mode)
35
+ process.stdin.on('end', () => { debugLog('stdin ended — keeping process alive'); });
41
36
  process.stdin.resume();
37
+ const CORS_HEADERS = {
38
+ 'Access-Control-Allow-Origin': '*',
39
+ 'Access-Control-Allow-Methods': 'GET, POST, DELETE, OPTIONS',
40
+ 'Access-Control-Allow-Headers': 'Content-Type, Accept, Mcp-Session-Id',
41
+ };
42
42
  async function main() {
43
43
  writeFileSync(DEBUG_LOG, `=== BRMS Host starting at ${new Date().toISOString()} ===\n`);
44
44
  debugLog(`PID: ${process.pid}, Node: ${process.version}`);
45
- debugLog(`stdin isTTY: ${process.stdin.isTTY}, stdout isTTY: ${process.stdout.isTTY}`);
46
45
  bridge.start();
47
46
  debugLog('Bridge started');
48
- const mcpServer = createServer();
49
- debugLog('MCP server created');
50
- const transport = new StreamableHTTPServerTransport({
51
- sessionIdGenerator: () => randomUUID(),
52
- });
47
+ // Session map: sessionId → transport
48
+ // Each Cursor connection gets its own transport so reconnects start fresh.
49
+ const sessions = new Map();
53
50
  const httpServer = createHttpServer(async (req, res) => {
54
51
  const url = new URL(req.url ?? '/', `http://localhost:${PORT}`);
52
+ // CORS preflight
53
+ if (req.method === 'OPTIONS') {
54
+ res.writeHead(204, CORS_HEADERS);
55
+ res.end();
56
+ return;
57
+ }
58
+ // Attach CORS to every response
59
+ Object.entries(CORS_HEADERS).forEach(([k, v]) => res.setHeader(k, v));
60
+ // ── /health ────────────────────────────────────────────────
61
+ if (url.pathname === '/health') {
62
+ res.writeHead(200, { 'Content-Type': 'application/json' });
63
+ res.end(JSON.stringify({ status: 'ok', extensionConnected: bridge.isConnected() }));
64
+ return;
65
+ }
66
+ // ── /mcp ──────────────────────────────────────────────────
55
67
  if (url.pathname === '/mcp') {
56
68
  try {
57
- // Parse body for POST requests before passing to transport
69
+ // Parse body once for POST requests
70
+ let parsedBody;
58
71
  if (req.method === 'POST') {
59
- const body = await new Promise((resolve, reject) => {
72
+ const raw = await new Promise((resolve, reject) => {
60
73
  let data = '';
61
74
  req.on('data', (chunk) => { data += chunk.toString(); });
62
75
  req.on('end', () => resolve(data));
63
76
  req.on('error', reject);
64
77
  });
65
- const parsedBody = JSON.parse(body);
78
+ try {
79
+ parsedBody = JSON.parse(raw);
80
+ }
81
+ catch {
82
+ res.writeHead(400, { 'Content-Type': 'application/json' });
83
+ res.end(JSON.stringify({ error: 'Invalid JSON' }));
84
+ return;
85
+ }
86
+ }
87
+ const sessionId = req.headers['mcp-session-id'];
88
+ if (req.method === 'POST' && !sessionId) {
89
+ // ── New session ────────────────────────────────────
90
+ // Cursor is connecting (or reconnecting). Always create a fresh
91
+ // transport so `initialize` succeeds even after a prior connection.
92
+ const newId = randomUUID();
93
+ const transport = new StreamableHTTPServerTransport({
94
+ sessionIdGenerator: () => newId,
95
+ });
96
+ transport.onclose = () => {
97
+ sessions.delete(newId);
98
+ debugLog(`Session closed: ${newId}`);
99
+ };
100
+ // Each session gets its own MCP server instance
101
+ const mcpServer = createServer();
102
+ await mcpServer.connect(transport);
103
+ sessions.set(newId, transport);
104
+ debugLog(`New MCP session: ${newId} (total: ${sessions.size})`);
66
105
  await transport.handleRequest(req, res, parsedBody);
67
106
  }
107
+ else if (sessionId && sessions.has(sessionId)) {
108
+ // ── Existing session ───────────────────────────────
109
+ await sessions.get(sessionId).handleRequest(req, res, parsedBody);
110
+ }
111
+ else if (sessionId && !sessions.has(sessionId)) {
112
+ // Unknown session — client should reconnect with a fresh initialize
113
+ debugLog(`Unknown session ID: ${sessionId}`);
114
+ res.writeHead(404, { 'Content-Type': 'application/json' });
115
+ res.end(JSON.stringify({ error: 'Session not found. Send a new initialize request without Mcp-Session-Id.' }));
116
+ }
68
117
  else {
69
- await transport.handleRequest(req, res);
118
+ // GET/DELETE without session ID
119
+ res.writeHead(400, { 'Content-Type': 'application/json' });
120
+ res.end(JSON.stringify({ error: 'Mcp-Session-Id header required' }));
70
121
  }
71
122
  }
72
123
  catch (err) {
@@ -78,19 +129,12 @@ async function main() {
78
129
  }
79
130
  return;
80
131
  }
81
- if (url.pathname === '/health') {
82
- res.writeHead(200, { 'Content-Type': 'application/json' });
83
- res.end(JSON.stringify({ status: 'ok', extensionConnected: bridge.isConnected() }));
84
- return;
85
- }
86
132
  res.writeHead(404);
87
133
  res.end('Not found');
88
134
  });
89
- await mcpServer.connect(transport);
90
- debugLog('MCP connected to transport');
91
135
  httpServer.on('error', (err) => {
92
136
  if (err.code === 'EADDRINUSE') {
93
- debugLog(`Port ${PORT} is already in use — another BRMS instance may be running.`);
137
+ debugLog(`Port ${PORT} is already in use.`);
94
138
  console.error('');
95
139
  console.error(` [brms] Error: port ${PORT} is already in use.`);
96
140
  console.error(` A previous BRMS server may still be running.`);
@@ -106,6 +150,7 @@ async function main() {
106
150
  });
107
151
  httpServer.listen(PORT, () => {
108
152
  debugLog(`HTTP server listening on :${PORT}`);
153
+ console.log(` [brms] MCP server running at http://localhost:${PORT}/mcp`);
109
154
  });
110
155
  }
111
156
  main().catch((err) => {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "brms-host",
3
- "version": "1.0.3",
3
+ "version": "1.0.5",
4
4
  "description": "Native messaging host for BRMS Chrome Extension — bridges browser state to Cursor via MCP",
5
5
  "type": "module",
6
6
  "bin": {