browser-devtools-mcp 0.1.0 → 0.1.2
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 +21 -3
- package/dist/index.js +9 -2
- package/dist/index.js.map +1 -1
- package/dist/server-info.js +2 -2
- package/dist/server.js +10 -2
- package/dist/server.js.map +1 -1
- package/dist/tools/content/save-as-pdf.js +1 -1
- package/dist/tools/figma/compare-page-with-design.js +1 -1
- package/dist/tools/figma/compare-page-with-design.js.map +1 -1
- package/dist/tools/interaction/press-key.js +67 -4
- package/dist/tools/interaction/press-key.js.map +1 -1
- package/dist/tools/navigation/index.js +7 -1
- package/dist/tools/navigation/index.js.map +1 -1
- package/dist/tools/navigation/reload.js +76 -0
- package/dist/tools/navigation/reload.js.map +1 -0
- package/dist/tools/o11y/get-web-vitals.js +1 -1
- package/package.json +11 -4
package/README.md
CHANGED
|
@@ -509,6 +509,10 @@ The server can be configured using environment variables:
|
|
|
509
509
|
|
|
510
510
|
**Parameters:**
|
|
511
511
|
- `key` (string, required): Key to press (e.g., "Enter", "Escape", "Tab")
|
|
512
|
+
- `selector` (string, optional): CSS selector to focus before sending the key
|
|
513
|
+
- `holdMs` (number, optional): Duration in milliseconds to hold the key (repeat duration if `repeat` is true)
|
|
514
|
+
- `repeat` (boolean, optional, default: false): If true, simulates key auto-repeat by pressing repeatedly during `holdMs`
|
|
515
|
+
- `repeatIntervalMs` (number, optional, default: 50, min: 10): Interval between repeated key presses in ms (only when `repeat` is true)
|
|
512
516
|
</details>
|
|
513
517
|
|
|
514
518
|
<details>
|
|
@@ -628,6 +632,20 @@ The server can be configured using environment variables:
|
|
|
628
632
|
<summary><code>navigation_go-forward</code> - Navigates forward in browser history.</summary>
|
|
629
633
|
</details>
|
|
630
634
|
|
|
635
|
+
<details>
|
|
636
|
+
<summary><code>navigation_reload</code> - Reloads the current page.</summary>
|
|
637
|
+
|
|
638
|
+
**Parameters:**
|
|
639
|
+
- `timeout` (number, optional): Maximum operation time in milliseconds (default: 0 - no timeout)
|
|
640
|
+
- `waitUntil` (enum, optional): When to consider navigation succeeded - "load", "domcontentloaded", "networkidle", or "commit" (default: "load")
|
|
641
|
+
|
|
642
|
+
**Returns:**
|
|
643
|
+
- `url` (string): Final URL after reload
|
|
644
|
+
- `status` (number): HTTP status code
|
|
645
|
+
- `statusText` (string): HTTP status text
|
|
646
|
+
- `ok` (boolean): Whether reload was successful (2xx status)
|
|
647
|
+
</details>
|
|
648
|
+
|
|
631
649
|
### Run Tools
|
|
632
650
|
|
|
633
651
|
<details>
|
|
@@ -728,7 +746,7 @@ The server can be configured using environment variables:
|
|
|
728
746
|
</details>
|
|
729
747
|
|
|
730
748
|
<details>
|
|
731
|
-
<summary><code>
|
|
749
|
+
<summary><code>o11y_get-web-vitals</code> - Collects Web Vitals-style performance metrics and provides recommendations based on Google's thresholds.</summary>
|
|
732
750
|
|
|
733
751
|
**Parameters:**
|
|
734
752
|
- `waitMs` (number, optional): Optional wait duration in milliseconds before reading metrics (default: 0, max: 30000). Useful to allow LCP/INP/CLS to settle after interactions
|
|
@@ -1009,7 +1027,7 @@ The server can be configured using environment variables:
|
|
|
1009
1027
|
### Figma Tools
|
|
1010
1028
|
|
|
1011
1029
|
<details>
|
|
1012
|
-
<summary><code>
|
|
1030
|
+
<summary><code>figma_compare-page-with-design</code> - Compares the current page UI against a Figma design snapshot and returns a combined similarity score.</summary>
|
|
1013
1031
|
|
|
1014
1032
|
**Parameters:**
|
|
1015
1033
|
- `figmaFileKey` (string, required): Figma file key (the part after /file/ in Figma URL)
|
|
@@ -1200,7 +1218,7 @@ This server enables AI assistants to:
|
|
|
1200
1218
|
4. Check console messages with `o11y_get-console-messages` for errors
|
|
1201
1219
|
5. Monitor HTTP requests with `o11y_get-http-requests` to see API calls
|
|
1202
1220
|
6. Capture accessibility snapshots with `a11y_take-aria-snapshot` and `accessibility_take-ax-tree-snapshot` to understand page structure
|
|
1203
|
-
7. Compare page with Figma design using `
|
|
1221
|
+
7. Compare page with Figma design using `figma_compare-page-with-design` to validate design parity
|
|
1204
1222
|
8. Interact with elements using `interaction_click`, `interaction_fill`, etc.
|
|
1205
1223
|
9. Extract content using `content_get-as-html` or `content_get-as-text`
|
|
1206
1224
|
10. Save the page as PDF using `content_save-as-pdf` for documentation
|
package/dist/index.js
CHANGED
|
@@ -37,6 +37,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
37
37
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
38
38
|
};
|
|
39
39
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
+
exports.default = createServer;
|
|
40
41
|
const config = __importStar(require("./config"));
|
|
41
42
|
const logger = __importStar(require("./logger"));
|
|
42
43
|
const server_1 = require("./server");
|
|
@@ -97,7 +98,7 @@ function _getConfig() {
|
|
|
97
98
|
}
|
|
98
99
|
async function _startStdioServer() {
|
|
99
100
|
const transport = new stdio_js_1.StdioServerTransport();
|
|
100
|
-
await (0, server_1.
|
|
101
|
+
await (0, server_1.createAndConnectServer)(transport, {
|
|
101
102
|
config: _getConfig(),
|
|
102
103
|
});
|
|
103
104
|
}
|
|
@@ -140,7 +141,7 @@ async function _createTransport(ctx) {
|
|
|
140
141
|
logger.debug(`MCP session closed with id ${sessionId}`);
|
|
141
142
|
},
|
|
142
143
|
});
|
|
143
|
-
holder.server = await (0, server_1.
|
|
144
|
+
holder.server = await (0, server_1.createAndConnectServer)(transport, {
|
|
144
145
|
config: serverConfig,
|
|
145
146
|
});
|
|
146
147
|
return transport;
|
|
@@ -328,4 +329,10 @@ main().catch((err) => {
|
|
|
328
329
|
logger.error('MCP server error', err);
|
|
329
330
|
process.exit(1);
|
|
330
331
|
});
|
|
332
|
+
function createServer({ config, session, env }) {
|
|
333
|
+
const mcpServer = (0, server_1.createServer)({
|
|
334
|
+
config: _getConfig(),
|
|
335
|
+
});
|
|
336
|
+
return mcpServer.server;
|
|
337
|
+
}
|
|
331
338
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/server-info.js
CHANGED
|
@@ -81,7 +81,7 @@ UI debugging guidance for AI agents:
|
|
|
81
81
|
semantics (labels, roles, disabled state, focusability) match the visible UI.
|
|
82
82
|
- Before taking screenshots or snapshots, wait for network idle to ensure page stability.
|
|
83
83
|
- Use Web Vitals tool to assess performance and identify optimization opportunities.
|
|
84
|
-
- For design validation, use "
|
|
84
|
+
- For design validation, use "figma_compare-page-with-design" to compare live page UI against Figma designs:
|
|
85
85
|
- Use "semantic" MSSIM mode for comparing real data vs design data (less sensitive to text/value differences)
|
|
86
86
|
- Use "raw" MSSIM mode only when expecting near pixel-identical output
|
|
87
87
|
- If layout mismatch is suspected, run with fullPage=true first, then retry with a selector for the problematic region
|
|
@@ -123,7 +123,7 @@ When asked to check for UI problems, layout issues, or visual bugs, ALWAYS follo
|
|
|
123
123
|
- Best for understanding page hierarchy and accessibility issues
|
|
124
124
|
- Use in combination with AX tree snapshot for comprehensive analysis
|
|
125
125
|
|
|
126
|
-
5. **Design Comparison** (if Figma design is available): Call "
|
|
126
|
+
5. **Design Comparison** (if Figma design is available): Call "figma_compare-page-with-design" tool
|
|
127
127
|
- Compares live page UI against Figma design snapshot
|
|
128
128
|
- Returns combined similarity score using multiple signals (MSSIM, image embedding, text embedding)
|
|
129
129
|
- Use "semantic" mode for real data vs design data comparisons
|
package/dist/server.js
CHANGED
|
@@ -34,6 +34,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.createServer = createServer;
|
|
37
|
+
exports.createAndConnectServer = createAndConnectServer;
|
|
37
38
|
exports.createSession = createSession;
|
|
38
39
|
const logger = __importStar(require("./logger"));
|
|
39
40
|
const server_info_1 = require("./server-info");
|
|
@@ -81,7 +82,7 @@ function _toResponse(response) {
|
|
|
81
82
|
isError: false,
|
|
82
83
|
};
|
|
83
84
|
}
|
|
84
|
-
|
|
85
|
+
function createServer(opts) {
|
|
85
86
|
const server = new mcp_js_1.McpServer({
|
|
86
87
|
name: server_info_1.SERVER_NAME,
|
|
87
88
|
version: server_info_1.SERVER_VERSION,
|
|
@@ -107,7 +108,7 @@ async function createServer(transport, opts) {
|
|
|
107
108
|
description: "Defines the assistant's general reasoning and tool usage rules.",
|
|
108
109
|
messages,
|
|
109
110
|
}));
|
|
110
|
-
const toolExecutor = new tools_1.ToolExecutor(() =>
|
|
111
|
+
const toolExecutor = new tools_1.ToolExecutor(() => opts.sessionIdProvider ? opts.sessionIdProvider() : '');
|
|
111
112
|
const createToolCallback = (tool) => {
|
|
112
113
|
return async (args) => {
|
|
113
114
|
try {
|
|
@@ -132,6 +133,13 @@ async function createServer(transport, opts) {
|
|
|
132
133
|
outputSchema: t.outputSchema(),
|
|
133
134
|
}, createToolCallback(t));
|
|
134
135
|
});
|
|
136
|
+
return server;
|
|
137
|
+
}
|
|
138
|
+
async function createAndConnectServer(transport, opts) {
|
|
139
|
+
const server = createServer({
|
|
140
|
+
config: opts.config,
|
|
141
|
+
sessionIdProvider: () => transport.sessionId,
|
|
142
|
+
});
|
|
135
143
|
await server.connect(transport);
|
|
136
144
|
return server;
|
|
137
145
|
}
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgFA,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgFA,oCA6EC;AAED,wDAcC;AAED,sCAUC;AAxLD,iDAAmC;AACnC,+CAKuB;AACvB,mCAOiB;AAEjB,oEAAoE;AAcpE,SAAS,SAAS,CACd,QAAoB;IAEpB,IACI,OAAO,IAAI,QAAQ;QACnB,QAAQ,CAAC,KAAK,KAAK,IAAI;QACvB,OAAO,QAAQ,CAAC,KAAK,KAAK,QAAQ;QAClC,MAAM,IAAI,QAAQ,CAAC,KAAK;QACxB,UAAU,IAAI,QAAQ,CAAC,KAAK;QAC5B,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;QACpC,OAAO,QAAQ,CAAC,KAAK,CAAC,QAAQ,KAAK,QAAQ,EAC7C,CAAC;QACC,MAAM,KAAK,GACP,QACH,CAAC,KAAK,CAAC;QACR,OAAQ,QAAgB,CAAC,KAAK,CAAC;QAC/B,OAAO,KAAK,CAAC;IACjB,CAAC;AACL,CAAC;AAED,SAAS,WAAW,CAAC,QAAoB;IACrC,MAAM,KAAK,GAA6C,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC5E,MAAM,QAAQ,GAAU,EAAE,CAAC;IAC3B,QAAQ,CAAC,IAAI,CAAC;QACV,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;KAC1C,CAAC,CAAC;IACH,IAAI,KAAK,EAAE,CAAC;QACR,IAAI,KAAK,CAAC,QAAQ,KAAK,eAAe,EAAE,CAAC;YACrC,QAAQ,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAC3B,QAAQ,EAAE,KAAK,CAAC,QAAQ;aAC3B,CAAC,CAAC;QACP,CAAC;aAAM,CAAC;YACJ,QAAQ,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBACnC,QAAQ,EAAE,KAAK,CAAC,QAAQ;aAC3B,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IACD,OAAO;QACH,OAAO,EAAE,QAAQ;QACjB,iBAAiB,EAAE,QAAe;QAClC,OAAO,EAAE,KAAK;KACjB,CAAC;AACN,CAAC;AAED,SAAgB,YAAY,CAAC,IAG5B;IACG,MAAM,MAAM,GAAc,IAAI,kBAAS,CACnC;QACI,IAAI,EAAE,yBAAW;QACjB,OAAO,EAAE,4BAAc;KAC1B,EACD;QACI,YAAY,EAAE;YACV,SAAS,EAAE,EAAE;YACb,KAAK,EAAE,EAAE;SACZ;QACD,YAAY,EAAE,IAAA,mCAAqB,GAAE;KACxC,CACJ,CAAC;IAEF,MAAM,QAAQ,GAAU,EAAE,CAAC;IAC3B,QAAQ,CAAC,IAAI,CAAC;QACV,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE;YACL,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,iCAAmB;SAC5B;KACJ,CAAC,CAAC;IAEH,MAAM,CAAC,cAAc,CACjB,gBAAgB,EAChB;QACI,KAAK,EAAE,uBAAuB;QAC9B,WAAW,EAAE,uCAAuC;KACvD,EACD,KAAK,IAAI,EAAE,CAAC,CAAC;QACT,WAAW,EACP,iEAAiE;QACrE,QAAQ;KACX,CAAC,CACL,CAAC;IAEF,MAAM,YAAY,GAAiB,IAAI,oBAAY,CAAC,GAAW,EAAE,CAC7D,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CACzD,CAAC;IAEF,MAAM,kBAAkB,GAAG,CAAC,IAAU,EAAE,EAAE;QACtC,OAAO,KAAK,EAAE,IAAe,EAA2B,EAAE;YACtD,IAAI,CAAC;gBACD,MAAM,QAAQ,GAAe,MAAM,YAAY,CAAC,WAAW,CACvD,IAAI,EACJ,IAAI,CACP,CAAC;gBACF,OAAO,WAAW,CAAC,QAAQ,CAAC,CAAC;YACjC,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBAClB,OAAO;oBACH,OAAO,EAAE;wBACL,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,KAAK,CAAC,OAAO,EAAE,EAAE;qBACpD;oBACD,OAAO,EAAE,IAAI;iBAChB,CAAC;YACN,CAAC;QACL,CAAC,CAAC;IACN,CAAC,CAAC;IAEF,aAAK,CAAC,OAAO,CAAC,CAAC,CAAO,EAAQ,EAAE;QAC5B,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACjD,MAAM,CAAC,YAAY,CACf,CAAC,CAAC,IAAI,EAAE,EACR;YACI,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE;YAC5B,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE;YAC5B,YAAY,EAAE,CAAC,CAAC,YAAY,EAAE;SAC1B,EACR,kBAAkB,CAAC,CAAC,CAAQ,CAC/B,CAAC;IACN,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAClB,CAAC;AAEM,KAAK,UAAU,sBAAsB,CACxC,SAAoB,EACpB,IAEC;IAED,MAAM,MAAM,GAAc,YAAY,CAAC;QACnC,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,iBAAiB,EAAE,GAAW,EAAE,CAAC,SAAS,CAAC,SAAmB;KACjE,CAAC,CAAC;IAEH,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhC,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,SAAgB,aAAa,CACzB,SAAY,EACZ,MAAiB;IAEjB,OAAO;QACH,SAAS;QACT,MAAM;QACN,MAAM,EAAE,KAAK;QACb,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE;KAC3B,CAAC;AACN,CAAC"}
|
|
@@ -10,7 +10,7 @@ const path_1 = __importDefault(require("path"));
|
|
|
10
10
|
const zod_1 = require("zod");
|
|
11
11
|
var SizeUnit;
|
|
12
12
|
(function (SizeUnit) {
|
|
13
|
-
SizeUnit["
|
|
13
|
+
SizeUnit["PIXEL"] = "px";
|
|
14
14
|
SizeUnit["INCH"] = "in";
|
|
15
15
|
SizeUnit["CENTIMETER"] = "cm";
|
|
16
16
|
SizeUnit["MILLIMETER"] = "mm";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compare-page-with-design.js","sourceRoot":"","sources":["../../../src/tools/figma/compare-page-with-design.ts"],"names":[],"mappings":";;;AASA,uCAA6C;AAM7C,mDAA2D;AAE3D,6BAAwB;AAExB,MAAM,uBAAuB,GAAU,KAAK,CAAC;AAC7C,MAAM,iBAAiB,GAAY,IAAI,CAAC;AACxC,MAAM,kBAAkB,GAAe,UAAU,CAAC;AAkFlD,MAAa,qBAAqB;IAC9B,IAAI;QACA,OAAO,
|
|
1
|
+
{"version":3,"file":"compare-page-with-design.js","sourceRoot":"","sources":["../../../src/tools/figma/compare-page-with-design.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,33 +2,96 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.PressKey = void 0;
|
|
4
4
|
const zod_1 = require("zod");
|
|
5
|
+
const DEFAULT_REPEAT_INTERVAL_MS = 50;
|
|
6
|
+
const MIN_REPEAT_INTERVAL_MS = 10;
|
|
5
7
|
class PressKey {
|
|
6
8
|
name() {
|
|
7
9
|
return 'interaction_press-key';
|
|
8
10
|
}
|
|
9
11
|
description() {
|
|
10
|
-
return
|
|
12
|
+
return `
|
|
13
|
+
Presses a keyboard key with optional "hold" and auto-repeat behavior.
|
|
14
|
+
|
|
15
|
+
Key facts:
|
|
16
|
+
- keyboard.press(key, { delay }) does NOT trigger OS-style auto-repeat.
|
|
17
|
+
- Some UI behaviors (especially scrolling) require repeated keydown events.
|
|
18
|
+
- Use repeat=true + holdMs to approximate real keyboard holding.
|
|
19
|
+
|
|
20
|
+
Execution logic:
|
|
21
|
+
- If selector is provided, the element is focused first.
|
|
22
|
+
- If holdMs is omitted or repeat=false:
|
|
23
|
+
→ a single keyboard.press() is executed.
|
|
24
|
+
- If holdMs is provided AND repeat=true:
|
|
25
|
+
→ keyboard.press() is called repeatedly until holdMs elapses.
|
|
26
|
+
`.trim();
|
|
11
27
|
}
|
|
12
28
|
inputSchema() {
|
|
13
29
|
return {
|
|
14
30
|
key: zod_1.z
|
|
15
31
|
.string()
|
|
16
|
-
.describe('
|
|
32
|
+
.describe('Keyboard key to press (e.g. "Enter", "ArrowDown", "a").'),
|
|
17
33
|
selector: zod_1.z
|
|
18
34
|
.string()
|
|
19
|
-
.describe('Optional CSS selector to focus before
|
|
35
|
+
.describe('Optional CSS selector to focus before sending the key.')
|
|
20
36
|
.optional(),
|
|
37
|
+
holdMs: zod_1.z
|
|
38
|
+
.number()
|
|
39
|
+
.int()
|
|
40
|
+
.min(0)
|
|
41
|
+
.describe('Optional duration in milliseconds to hold the key. With repeat=true, this is the total repeat duration.')
|
|
42
|
+
.optional(),
|
|
43
|
+
repeat: zod_1.z
|
|
44
|
+
.boolean()
|
|
45
|
+
.optional()
|
|
46
|
+
.default(false)
|
|
47
|
+
.describe('If true, simulates key auto-repeat by pressing the key repeatedly (useful for scrolling).'),
|
|
48
|
+
repeatIntervalMs: zod_1.z
|
|
49
|
+
.number()
|
|
50
|
+
.int()
|
|
51
|
+
.min(MIN_REPEAT_INTERVAL_MS)
|
|
52
|
+
.optional()
|
|
53
|
+
.default(DEFAULT_REPEAT_INTERVAL_MS)
|
|
54
|
+
.describe(`Interval between repeated key presses in ms (only when repeat=true).`),
|
|
21
55
|
};
|
|
22
56
|
}
|
|
23
57
|
outputSchema() {
|
|
24
58
|
return {};
|
|
25
59
|
}
|
|
26
60
|
async handle(context, args) {
|
|
61
|
+
/**
|
|
62
|
+
* Focus target element if selector is provided.
|
|
63
|
+
* Otherwise, key events go to the currently focused element or page.
|
|
64
|
+
*/
|
|
27
65
|
if (args.selector) {
|
|
28
66
|
const element = await context.page.waitForSelector(args.selector);
|
|
29
67
|
await element.focus();
|
|
30
68
|
}
|
|
31
|
-
|
|
69
|
+
const holdMs = args.holdMs ?? 0;
|
|
70
|
+
const repeat = args.repeat === true;
|
|
71
|
+
/**
|
|
72
|
+
* Simple case:
|
|
73
|
+
* - No hold requested OR repeat disabled
|
|
74
|
+
* - Single press with optional delay
|
|
75
|
+
*/
|
|
76
|
+
if (holdMs <= 0 || repeat === false) {
|
|
77
|
+
await context.page.keyboard.press(args.key, holdMs > 0 ? { delay: holdMs } : undefined);
|
|
78
|
+
return {};
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Auto-repeat simulation:
|
|
82
|
+
* - Repeated key presses until holdMs elapses
|
|
83
|
+
* - Approximates native keyboard repeat behavior
|
|
84
|
+
*/
|
|
85
|
+
const repeatIntervalMs = typeof args.repeatIntervalMs === 'number' &&
|
|
86
|
+
Number.isFinite(args.repeatIntervalMs) &&
|
|
87
|
+
args.repeatIntervalMs >= MIN_REPEAT_INTERVAL_MS
|
|
88
|
+
? Math.floor(args.repeatIntervalMs)
|
|
89
|
+
: DEFAULT_REPEAT_INTERVAL_MS;
|
|
90
|
+
const startMs = Date.now();
|
|
91
|
+
while (Date.now() - startMs < holdMs) {
|
|
92
|
+
await context.page.keyboard.press(args.key);
|
|
93
|
+
await context.page.waitForTimeout(repeatIntervalMs);
|
|
94
|
+
}
|
|
32
95
|
return {};
|
|
33
96
|
}
|
|
34
97
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"press-key.js","sourceRoot":"","sources":["../../../src/tools/interaction/press-key.ts"],"names":[],"mappings":";;;AAUA,6BAAwB;
|
|
1
|
+
{"version":3,"file":"press-key.js","sourceRoot":"","sources":["../../../src/tools/interaction/press-key.ts"],"names":[],"mappings":";;;AAUA,6BAAwB;AAExB,MAAM,0BAA0B,GAAW,EAAE,CAAC;AAC9C,MAAM,sBAAsB,GAAW,EAAE,CAAC;AAoE1C,MAAa,QAAQ;IACjB,IAAI;QACA,OAAO,uBAAuB,CAAC;IACnC,CAAC;IAED,WAAW;QACP,OAAO;;;;;;;;;;;;;;SAcN,CAAC,IAAI,EAAE,CAAC;IACb,CAAC;IAED,WAAW;QACP,OAAO;YACH,GAAG,EAAE,OAAC;iBACD,MAAM,EAAE;iBACR,QAAQ,CACL,yDAAyD,CAC5D;YACL,QAAQ,EAAE,OAAC;iBACN,MAAM,EAAE;iBACR,QAAQ,CACL,wDAAwD,CAC3D;iBACA,QAAQ,EAAE;YACf,MAAM,EAAE,OAAC;iBACJ,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,CACL,yGAAyG,CAC5G;iBACA,QAAQ,EAAE;YACf,MAAM,EAAE,OAAC;iBACJ,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,KAAK,CAAC;iBACd,QAAQ,CACL,2FAA2F,CAC9F;YACL,gBAAgB,EAAE,OAAC;iBACd,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,GAAG,CAAC,sBAAsB,CAAC;iBAC3B,QAAQ,EAAE;iBACV,OAAO,CAAC,0BAA0B,CAAC;iBACnC,QAAQ,CACL,sEAAsE,CACzE;SACR,CAAC;IACN,CAAC;IAED,YAAY;QACR,OAAO,EAAE,CAAC;IACd,CAAC;IAED,KAAK,CAAC,MAAM,CACR,OAA0B,EAC1B,IAAmB;QAEnB;;;WAGG;QACH,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,MAAM,OAAO,GAAkB,MAAM,OAAO,CAAC,IAAI,CAAC,eAAe,CAC7D,IAAI,CAAC,QAAQ,CAChB,CAAC;YACF,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;QAC1B,CAAC;QAED,MAAM,MAAM,GAAW,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;QACxC,MAAM,MAAM,GAAY,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC;QAE7C;;;;WAIG;QACH,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;YAClC,MAAM,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAC7B,IAAI,CAAC,GAAG,EACR,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS,CAC7C,CAAC;YACF,OAAO,EAAE,CAAC;QACd,CAAC;QAED;;;;WAIG;QACH,MAAM,gBAAgB,GAClB,OAAO,IAAI,CAAC,gBAAgB,KAAK,QAAQ;YACzC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC;YACtC,IAAI,CAAC,gBAAgB,IAAI,sBAAsB;YAC3C,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC;YACnC,CAAC,CAAC,0BAA0B,CAAC;QAErC,MAAM,OAAO,GAAW,IAAI,CAAC,GAAG,EAAE,CAAC;QAEnC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,GAAG,MAAM,EAAE,CAAC;YACnC,MAAM,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC5C,MAAM,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;QACxD,CAAC;QAED,OAAO,EAAE,CAAC;IACd,CAAC;CACJ;AAvHD,4BAuHC"}
|
|
@@ -4,5 +4,11 @@ exports.tools = void 0;
|
|
|
4
4
|
const go_back_1 = require("./go-back");
|
|
5
5
|
const go_forward_1 = require("./go-forward");
|
|
6
6
|
const go_to_1 = require("./go-to");
|
|
7
|
-
|
|
7
|
+
const reload_1 = require("./reload");
|
|
8
|
+
exports.tools = [
|
|
9
|
+
new go_back_1.GoBack(),
|
|
10
|
+
new go_forward_1.GoForward(),
|
|
11
|
+
new go_to_1.GoTo(),
|
|
12
|
+
new reload_1.Reload(),
|
|
13
|
+
];
|
|
8
14
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/navigation/index.ts"],"names":[],"mappings":";;;AACA,uCAAmC;AACnC,6CAAyC;AACzC,mCAA+B;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/navigation/index.ts"],"names":[],"mappings":";;;AACA,uCAAmC;AACnC,6CAAyC;AACzC,mCAA+B;AAC/B,qCAAkC;AAErB,QAAA,KAAK,GAAW;IACzB,IAAI,gBAAM,EAAE;IACZ,IAAI,sBAAS,EAAE;IACf,IAAI,YAAI,EAAE;IACV,IAAI,eAAM,EAAE;CACf,CAAC"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Reload = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const DEFAULT_TIMEOUT_MS = 0;
|
|
6
|
+
const DEFAULT_WAIT_UNTIL = 'load';
|
|
7
|
+
class Reload {
|
|
8
|
+
name() {
|
|
9
|
+
return 'navigation_reload';
|
|
10
|
+
}
|
|
11
|
+
description() {
|
|
12
|
+
return `
|
|
13
|
+
Reloads the current page.
|
|
14
|
+
In case of multiple redirects, the navigation resolves with the response of the last redirect.
|
|
15
|
+
If the reload does not produce a response, returns empty response.
|
|
16
|
+
`;
|
|
17
|
+
}
|
|
18
|
+
inputSchema() {
|
|
19
|
+
return {
|
|
20
|
+
timeout: zod_1.z
|
|
21
|
+
.number()
|
|
22
|
+
.int()
|
|
23
|
+
.nonnegative()
|
|
24
|
+
.describe('Maximum operation time in milliseconds. Defaults to `0` - no timeout.')
|
|
25
|
+
.optional()
|
|
26
|
+
.default(DEFAULT_TIMEOUT_MS),
|
|
27
|
+
waitUntil: zod_1.z
|
|
28
|
+
.enum(['load', 'domcontentloaded', 'networkidle', 'commit'])
|
|
29
|
+
.describe(`
|
|
30
|
+
When to consider operation succeeded, defaults to \`load\`. Events can be either:
|
|
31
|
+
- \`domcontentloaded\`: Consider operation to be finished when the \`DOMContentLoaded\` event is fired.
|
|
32
|
+
- \`load\`: Consider operation to be finished when the \`load\` event is fired.
|
|
33
|
+
- \`networkidle\`: **DISCOURAGED** consider operation to be finished when there are no network connections for
|
|
34
|
+
at least \`500\` ms. Don't use this method for testing, rely on web assertions to assess readiness instead.
|
|
35
|
+
- \`commit\`: Consider operation to be finished when network response is received and the document started loading.`)
|
|
36
|
+
.optional()
|
|
37
|
+
.default(DEFAULT_WAIT_UNTIL),
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
outputSchema() {
|
|
41
|
+
return {
|
|
42
|
+
url: zod_1.z
|
|
43
|
+
.string()
|
|
44
|
+
.describe('Contains the URL of the reloaded page.')
|
|
45
|
+
.optional(),
|
|
46
|
+
status: zod_1.z
|
|
47
|
+
.number()
|
|
48
|
+
.int()
|
|
49
|
+
.positive()
|
|
50
|
+
.describe('Contains the status code of the reloaded page (e.g., 200 for a success).')
|
|
51
|
+
.optional(),
|
|
52
|
+
statusText: zod_1.z
|
|
53
|
+
.string()
|
|
54
|
+
.describe('Contains the status text of the reloaded page (e.g. usually an "OK" for a success).')
|
|
55
|
+
.optional(),
|
|
56
|
+
ok: zod_1.z
|
|
57
|
+
.boolean()
|
|
58
|
+
.describe('Contains a boolean stating whether the reloaded page was successful (status in the range 200-299) or not.')
|
|
59
|
+
.optional(),
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
async handle(context, args) {
|
|
63
|
+
const response = await context.page.reload({
|
|
64
|
+
timeout: args.timeout,
|
|
65
|
+
waitUntil: args.waitUntil,
|
|
66
|
+
});
|
|
67
|
+
return {
|
|
68
|
+
url: response?.url(),
|
|
69
|
+
status: response?.status(),
|
|
70
|
+
statusText: response?.statusText(),
|
|
71
|
+
ok: response?.ok(),
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
exports.Reload = Reload;
|
|
76
|
+
//# sourceMappingURL=reload.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reload.js","sourceRoot":"","sources":["../../../src/tools/navigation/reload.ts"],"names":[],"mappings":";;;AAUA,6BAAwB;AAExB,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAC7B,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAclC,MAAa,MAAM;IACf,IAAI;QACA,OAAO,mBAAmB,CAAC;IAC/B,CAAC;IAED,WAAW;QACP,OAAO;;;;SAIN,CAAC;IACN,CAAC;IAED,WAAW;QACP,OAAO;YACH,OAAO,EAAE,OAAC;iBACL,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,WAAW,EAAE;iBACb,QAAQ,CACL,uEAAuE,CAC1E;iBACA,QAAQ,EAAE;iBACV,OAAO,CAAC,kBAAkB,CAAC;YAChC,SAAS,EAAE,OAAC;iBACP,IAAI,CAAC,CAAC,MAAM,EAAE,kBAAkB,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;iBAC3D,QAAQ,CACL;;;;;;oHAMgG,CACnG;iBACA,QAAQ,EAAE;iBACV,OAAO,CAAC,kBAAkB,CAAC;SACnC,CAAC;IACN,CAAC;IAED,YAAY;QACR,OAAO;YACH,GAAG,EAAE,OAAC;iBACD,MAAM,EAAE;iBACR,QAAQ,CAAC,wCAAwC,CAAC;iBAClD,QAAQ,EAAE;YACf,MAAM,EAAE,OAAC;iBACJ,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,QAAQ,EAAE;iBACV,QAAQ,CACL,0EAA0E,CAC7E;iBACA,QAAQ,EAAE;YACf,UAAU,EAAE,OAAC;iBACR,MAAM,EAAE;iBACR,QAAQ,CACL,qFAAqF,CACxF;iBACA,QAAQ,EAAE;YACf,EAAE,EAAE,OAAC;iBACA,OAAO,EAAE;iBACT,QAAQ,CACL,2GAA2G,CAC9G;iBACA,QAAQ,EAAE;SAClB,CAAC;IACN,CAAC;IAED,KAAK,CAAC,MAAM,CACR,OAA0B,EAC1B,IAAiB;QAEjB,MAAM,QAAQ,GAAoB,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;YACxD,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,SAAS,EAAE,IAAI,CAAC,SAAS;SAC5B,CAAC,CAAC;QACH,OAAO;YACH,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE;YACpB,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE;YAC1B,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE;YAClC,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;SACrB,CAAC;IACN,CAAC;CACJ;AApFD,wBAoFC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "browser-devtools-mcp",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "MCP Server for Browser Dev Tools",
|
|
5
5
|
"private": false,
|
|
6
6
|
"type": "commonjs",
|
|
@@ -13,7 +13,10 @@
|
|
|
13
13
|
},
|
|
14
14
|
"author": "Serkan Ozal <serkanozal86@gmail.com> (https://github.com/serkan-ozal)",
|
|
15
15
|
"homepage": "https://github.com/serkan-ozal/browser-devtools-mcp",
|
|
16
|
-
"repository":
|
|
16
|
+
"repository": {
|
|
17
|
+
"type": "git",
|
|
18
|
+
"url": "https://github.com/serkan-ozal/browser-devtools-mcp.git"
|
|
19
|
+
},
|
|
17
20
|
"license": "MIT",
|
|
18
21
|
"keywords": [
|
|
19
22
|
"ai",
|
|
@@ -26,6 +29,7 @@
|
|
|
26
29
|
"publishConfig": {
|
|
27
30
|
"access": "public"
|
|
28
31
|
},
|
|
32
|
+
"mcpName": "io.github.serkan-ozal/browser-devtools-mcp",
|
|
29
33
|
"scripts": {
|
|
30
34
|
"clean": "rimraf dist",
|
|
31
35
|
"build:otel": "node scripts/build-otel.mjs",
|
|
@@ -40,7 +44,8 @@
|
|
|
40
44
|
"lint:format": "prettier --config .prettierrc.json --write ./src/*.ts ./src/**/*.ts ./src/**/**/*.ts ./src/**/**/**/*.ts",
|
|
41
45
|
"release:patch": "release-it --ci -VV --git.commit --git.push --git.tag --git.tagName='v${version}' --github.release --github.releaseNotes='echo \"Release ${version}\"' --no-git.requireCleanWorkingDir --no-git.requireUpstream --npm.publish --npm.skipChecks",
|
|
42
46
|
"release:minor": "release-it minor --ci -VV --git.commit --git.push --git.tag --git.tagName='v${version}' --github.release --github.releaseNotes='echo \"Release ${version}\"' --no-git.requireCleanWorkingDir --no-git.requireUpstream --npm.publish --npm.skipChecks",
|
|
43
|
-
"release:major": "release-it major --ci -VV --git.commit --git.push --git.tag --git.tagName='v${version}' --github.release --github.releaseNotes='echo \"Release ${version}\"' --no-git.requireCleanWorkingDir --no-git.requireUpstream --npm.publish --npm.skipChecks"
|
|
47
|
+
"release:major": "release-it major --ci -VV --git.commit --git.push --git.tag --git.tagName='v${version}' --github.release --github.releaseNotes='echo \"Release ${version}\"' --no-git.requireCleanWorkingDir --no-git.requireUpstream --npm.publish --npm.skipChecks",
|
|
48
|
+
"mcpb:pack": "mkdir -p .mcpb && mcpb pack && mv browser-devtools-mcp.mcpb .mcpb/browser-devtools.mcpb"
|
|
44
49
|
},
|
|
45
50
|
"files": [
|
|
46
51
|
"dist/",
|
|
@@ -49,6 +54,7 @@
|
|
|
49
54
|
"LICENSE"
|
|
50
55
|
],
|
|
51
56
|
"devDependencies": {
|
|
57
|
+
"@anthropic-ai/mcpb": "^2.1.2",
|
|
52
58
|
"@opentelemetry/auto-instrumentations-web": "^0.54.0",
|
|
53
59
|
"@opentelemetry/context-zone": "^2.2.0",
|
|
54
60
|
"@opentelemetry/exporter-trace-otlp-http": "^0.208.0",
|
|
@@ -82,6 +88,7 @@
|
|
|
82
88
|
"playwright": "^1.57.0",
|
|
83
89
|
"pngjs": "^7.0.0",
|
|
84
90
|
"sharp": "^0.34.5",
|
|
85
|
-
"ssim.js": "^3.5.0"
|
|
91
|
+
"ssim.js": "^3.5.0",
|
|
92
|
+
"zod": "^3.24.3"
|
|
86
93
|
}
|
|
87
94
|
}
|