@playwright-repl/mcp 0.24.1 → 0.25.0

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/README.md CHANGED
@@ -278,6 +278,32 @@ Each agent has access to `run_command` and `run_script` via the MCP server and r
278
278
  - **Prefer keyword commands** for common actions — they're shorter and more reliable than raw Playwright API
279
279
  - **Fall back to Playwright API** when keyword commands are ambiguous (e.g. two elements match the same text) — use `exact: true` or scope with a locator chain
280
280
 
281
+ ## HTTP Server
282
+
283
+ The MCP server also starts an HTTP server on port `9223` for fast CLI command access. When the MCP server is running, you can send commands from the terminal without MCP protocol overhead:
284
+
285
+ ```bash
286
+ # Send commands to the running MCP server via HTTP
287
+ playwright-repl --http --command "snapshot"
288
+ playwright-repl --http --command "click e5"
289
+
290
+ # Or directly with curl
291
+ curl -X POST http://localhost:9223/run -d '{"command":"snapshot"}'
292
+ ```
293
+
294
+ Custom HTTP port:
295
+
296
+ ```json
297
+ {
298
+ "mcpServers": {
299
+ "playwright-repl": {
300
+ "command": "playwright-repl-mcp",
301
+ "args": ["--http-port", "9224"]
302
+ }
303
+ }
304
+ }
305
+ ```
306
+
281
307
  ## Custom port
282
308
 
283
309
  By default the MCP server listens on port `9876`. To use a different port:
package/dist/index.js CHANGED
@@ -2,12 +2,32 @@
2
2
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
3
3
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
4
4
  import { z } from 'zod';
5
+ import http from 'node:http';
5
6
  import { COMMANDS, CATEGORIES } from '@playwright-repl/core';
6
7
  import pkg from '../package.json' with { type: 'json' };
7
8
  import { createBridgeRunner } from './bridge.js';
8
9
  import { createEvaluateRunner } from './evaluate.js';
9
10
  import { createStandaloneRunner } from './standalone.js';
10
- import { logStartup, logEvent, logToolCall, logToolResult, logError, LOG_FILE } from './logger.js';
11
+ import { logStartup, logEvent, logToolCall, logToolResult, logError, logHttp, LOG_FILE } from './logger.js';
12
+ // ─── Process exit handlers — log why the process dies ───────────────────────
13
+ process.on('uncaughtException', (err) => {
14
+ logError('uncaughtException', err);
15
+ process.exit(1);
16
+ });
17
+ process.on('unhandledRejection', (reason) => {
18
+ logError('unhandledRejection', reason);
19
+ });
20
+ process.on('SIGTERM', () => {
21
+ logEvent('Received SIGTERM — exiting');
22
+ process.exit(0);
23
+ });
24
+ process.on('SIGINT', () => {
25
+ logEvent('Received SIGINT — exiting');
26
+ process.exit(0);
27
+ });
28
+ process.on('exit', (code) => {
29
+ logEvent(`Process exiting (code: ${code})`);
30
+ });
11
31
  const argv = process.argv.slice(2);
12
32
  const standalone = argv.includes('--standalone');
13
33
  const headed = argv.includes('--headed');
@@ -27,6 +47,83 @@ else {
27
47
  }
28
48
  const { runner, descriptions } = runnerModule;
29
49
  logStartup(standalone ? 'standalone' : 'bridge', `log → ${LOG_FILE}`);
50
+ // ─── HTTP server for --command --http piggybacking ──────────────────────────
51
+ const httpPort = (() => {
52
+ const idx = argv.indexOf('--http-port');
53
+ if (idx !== -1 && argv[idx + 1])
54
+ return parseInt(argv[idx + 1], 10);
55
+ return 9223;
56
+ })();
57
+ startHttpServer(httpPort, runner);
58
+ function startHttpServer(port, r) {
59
+ const server = http.createServer(async (req, res) => {
60
+ res.setHeader('Access-Control-Allow-Origin', '*');
61
+ if (req.method === 'GET' && req.url === '/health') {
62
+ res.writeHead(200, { 'Content-Type': 'application/json' });
63
+ res.end(JSON.stringify({ status: 'ok' }));
64
+ return;
65
+ }
66
+ if (req.method === 'POST' && req.url === '/run') {
67
+ const t0 = Date.now();
68
+ let command = '';
69
+ try {
70
+ const body = await readBody(req);
71
+ ({ command } = JSON.parse(body));
72
+ logHttp(`→ ${command}`);
73
+ const result = await r.runCommand(command);
74
+ const ms = Date.now() - t0;
75
+ logHttp(`${result.isError ? '✗' : '✓'} ${command} (${ms}ms)`);
76
+ res.writeHead(200, { 'Content-Type': 'application/json' });
77
+ res.end(JSON.stringify(result));
78
+ }
79
+ catch (e) {
80
+ logHttp(`✗ ${command} — ${e.message}`);
81
+ res.writeHead(500, { 'Content-Type': 'application/json' });
82
+ res.end(JSON.stringify({ text: e.message, isError: true }));
83
+ }
84
+ return;
85
+ }
86
+ if (req.method === 'POST' && req.url === '/run-script') {
87
+ const t0 = Date.now();
88
+ let language = 'pw';
89
+ try {
90
+ const body = await readBody(req);
91
+ const parsed = JSON.parse(body);
92
+ const script = parsed.script;
93
+ language = parsed.language || 'pw';
94
+ const preview = script.split('\n')[0].slice(0, 60);
95
+ logHttp(`→ [${language}] ${preview}${script.length > preview.length ? '…' : ''}`);
96
+ const result = await r.runScript(script, language);
97
+ const ms = Date.now() - t0;
98
+ logHttp(`${result.isError ? '✗' : '✓'} [${language}] (${ms}ms)`);
99
+ res.writeHead(200, { 'Content-Type': 'application/json' });
100
+ res.end(JSON.stringify(result));
101
+ }
102
+ catch (e) {
103
+ logHttp(`✗ [${language}] — ${e.message}`);
104
+ res.writeHead(500, { 'Content-Type': 'application/json' });
105
+ res.end(JSON.stringify({ text: e.message, isError: true }));
106
+ }
107
+ return;
108
+ }
109
+ res.writeHead(404);
110
+ res.end('Not found');
111
+ });
112
+ server.listen(port, () => {
113
+ logEvent(`HTTP server on port ${port}`);
114
+ });
115
+ server.on('error', (e) => {
116
+ logEvent(`HTTP server failed: ${e.message}`);
117
+ });
118
+ }
119
+ function readBody(req) {
120
+ return new Promise((resolve, reject) => {
121
+ let data = '';
122
+ req.on('data', (chunk) => data += chunk);
123
+ req.on('end', () => resolve(data));
124
+ req.on('error', reject);
125
+ });
126
+ }
30
127
  // ─── MCP server ──────────────────────────────────────────────────────────────
31
128
  const server = new McpServer({ name: 'playwright-repl', version: pkg.version });
32
129
  server.registerTool('run_command', {
package/dist/logger.d.ts CHANGED
@@ -6,10 +6,12 @@
6
6
  * captures stderr.
7
7
  */
8
8
  declare const LOG_FILE: string;
9
+ declare const HTTP_LOG_FILE: string;
9
10
  export declare function logStartup(mode: string, detail: string): void;
10
11
  export declare function logEvent(event: string): void;
11
12
  export declare function logToolCall(tool: string, input: Record<string, unknown>): void;
12
13
  export declare function logToolResult(tool: string, isError: boolean, text: string | undefined, durationMs: number): void;
13
14
  export declare function logError(context: string, err: unknown): void;
14
- export { LOG_FILE };
15
+ export declare function logHttp(message: string): void;
16
+ export { LOG_FILE, HTTP_LOG_FILE };
15
17
  //# sourceMappingURL=logger.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,QAAA,MAAM,QAAQ,QAA2B,CAAC;AAoC1C,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAE7D;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAE5C;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAQ9E;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAIhH;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,IAAI,CAG5D;AAED,OAAO,EAAE,QAAQ,EAAE,CAAC"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,QAAA,MAAM,QAAQ,QAA2B,CAAC;AAC1C,QAAA,MAAM,aAAa,QAA4B,CAAC;AAoChD,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAE7D;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAE5C;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAQ9E;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAIhH;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,IAAI,CAG5D;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAK7C;AAED,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC"}
package/dist/logger.js CHANGED
@@ -10,6 +10,7 @@ import { join } from 'node:path';
10
10
  import { homedir } from 'node:os';
11
11
  const LOG_DIR = join(homedir(), '.playwright-repl');
12
12
  const LOG_FILE = join(LOG_DIR, 'mcp.log');
13
+ const HTTP_LOG_FILE = join(LOG_DIR, 'http.log');
13
14
  /** Maximum characters kept from a result text in the log. */
14
15
  const MAX_RESULT_LENGTH = 200;
15
16
  let enabled = true;
@@ -54,15 +55,23 @@ export function logToolCall(tool, input) {
54
55
  return `${k}=${truncate(s, 120)}`;
55
56
  })
56
57
  .join(' ');
57
- write('info', `→ ${tool}(${args})`);
58
+ write('info', `-> ${tool}(${args})`);
58
59
  }
59
60
  export function logToolResult(tool, isError, text, durationMs) {
60
61
  const status = isError ? 'ERROR' : 'OK';
61
62
  const summary = text ? truncate(text.replace(/\n/g, '\\n')) : '(empty)';
62
- write('info', `← ${tool} [${status}] ${durationMs}ms ${summary}`);
63
+ write('info', `<- ${tool} [${status}] ${durationMs}ms ${summary}`);
63
64
  }
64
65
  export function logError(context, err) {
65
66
  const msg = err instanceof Error ? err.message : String(err);
66
67
  write('error', `${context}: ${msg}`);
67
68
  }
68
- export { LOG_FILE };
69
+ export function logHttp(message) {
70
+ if (!enabled)
71
+ return;
72
+ try {
73
+ appendFileSync(HTTP_LOG_FILE, `${ts()} ${message}\n`);
74
+ }
75
+ catch { }
76
+ }
77
+ export { LOG_FILE, HTTP_LOG_FILE };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@playwright-repl/mcp",
3
3
  "description": "MCP server — AI agents control your real Chrome browser",
4
- "version": "0.24.1",
4
+ "version": "0.25.0",
5
5
  "type": "module",
6
6
  "bin": {
7
7
  "playwright-repl-mcp": "./dist/index.js"
@@ -17,9 +17,9 @@
17
17
  "@modelcontextprotocol/sdk": "^1.10.0",
18
18
  "@playwright/test": "^1.59.1",
19
19
  "zod": "^3.24.0",
20
- "@playwright-repl/browser-extension": "0.24.1",
21
- "playwright-repl": "0.24.1",
22
- "@playwright-repl/core": "0.24.1"
20
+ "@playwright-repl/browser-extension": "0.25.0",
21
+ "@playwright-repl/core": "0.25.0",
22
+ "playwright-repl": "0.25.0"
23
23
  },
24
24
  "scripts": {
25
25
  "build": "tsc --build tsconfig.build.json"
@@ -1 +0,0 @@
1
- {"version":3,"file":"http-transport.d.ts","sourceRoot":"","sources":["../src/http-transport.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAWH,OAAO,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAU7D,wBAAsB,kBAAkB,CACpC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,kBAAkB,EAChC,IAAI,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAsHf"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"http-transport.js","sourceRoot":"","sources":["../src/http-transport.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"server-factory.d.ts","sourceRoot":"","sources":["../src/server-factory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKpE,OAAO,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAE7D,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,GAAG,SAAS,CA2F9E"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"server-factory.js","sourceRoot":"","sources":["../src/server-factory.ts"],"names":[],"mappings":"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"}