safari-devtools-mcp 0.1.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/LICENSE +21 -0
- package/README.md +268 -0
- package/build/src/SafariDriver.d.ts +56 -0
- package/build/src/SafariDriver.d.ts.map +1 -0
- package/build/src/SafariDriver.js +475 -0
- package/build/src/SafariDriver.js.map +1 -0
- package/build/src/bin/safari-devtools-mcp.d.ts +9 -0
- package/build/src/bin/safari-devtools-mcp.d.ts.map +1 -0
- package/build/src/bin/safari-devtools-mcp.js +42 -0
- package/build/src/bin/safari-devtools-mcp.js.map +1 -0
- package/build/src/formatters/ConsoleFormatter.d.ts +7 -0
- package/build/src/formatters/ConsoleFormatter.d.ts.map +1 -0
- package/build/src/formatters/ConsoleFormatter.js +47 -0
- package/build/src/formatters/ConsoleFormatter.js.map +1 -0
- package/build/src/formatters/NetworkFormatter.d.ts +7 -0
- package/build/src/formatters/NetworkFormatter.d.ts.map +1 -0
- package/build/src/formatters/NetworkFormatter.js +70 -0
- package/build/src/formatters/NetworkFormatter.js.map +1 -0
- package/build/src/formatters/SnapshotFormatter.d.ts +6 -0
- package/build/src/formatters/SnapshotFormatter.d.ts.map +1 -0
- package/build/src/formatters/SnapshotFormatter.js +34 -0
- package/build/src/formatters/SnapshotFormatter.js.map +1 -0
- package/build/src/index.d.ts +13 -0
- package/build/src/index.d.ts.map +1 -0
- package/build/src/index.js +81 -0
- package/build/src/index.js.map +1 -0
- package/build/src/injected/console.d.ts +9 -0
- package/build/src/injected/console.d.ts.map +1 -0
- package/build/src/injected/console.js +119 -0
- package/build/src/injected/console.js.map +1 -0
- package/build/src/injected/network.d.ts +14 -0
- package/build/src/injected/network.d.ts.map +1 -0
- package/build/src/injected/network.js +273 -0
- package/build/src/injected/network.js.map +1 -0
- package/build/src/injected/snapshot.d.ts +9 -0
- package/build/src/injected/snapshot.d.ts.map +1 -0
- package/build/src/injected/snapshot.js +217 -0
- package/build/src/injected/snapshot.js.map +1 -0
- package/build/src/tools/console.d.ts +17 -0
- package/build/src/tools/console.d.ts.map +1 -0
- package/build/src/tools/console.js +76 -0
- package/build/src/tools/console.js.map +1 -0
- package/build/src/tools/input.d.ts +59 -0
- package/build/src/tools/input.d.ts.map +1 -0
- package/build/src/tools/input.js +220 -0
- package/build/src/tools/input.js.map +1 -0
- package/build/src/tools/network.d.ts +17 -0
- package/build/src/tools/network.d.ts.map +1 -0
- package/build/src/tools/network.js +74 -0
- package/build/src/tools/network.js.map +1 -0
- package/build/src/tools/pages.d.ts +36 -0
- package/build/src/tools/pages.d.ts.map +1 -0
- package/build/src/tools/pages.js +236 -0
- package/build/src/tools/pages.js.map +1 -0
- package/build/src/tools/screenshot.d.ts +15 -0
- package/build/src/tools/screenshot.d.ts.map +1 -0
- package/build/src/tools/screenshot.js +70 -0
- package/build/src/tools/screenshot.js.map +1 -0
- package/build/src/tools/script.d.ts +12 -0
- package/build/src/tools/script.d.ts.map +1 -0
- package/build/src/tools/script.js +48 -0
- package/build/src/tools/script.js.map +1 -0
- package/build/src/tools/snapshot.d.ts +17 -0
- package/build/src/tools/snapshot.d.ts.map +1 -0
- package/build/src/tools/snapshot.js +75 -0
- package/build/src/tools/snapshot.js.map +1 -0
- package/build/src/tools/types.d.ts +17 -0
- package/build/src/tools/types.d.ts.map +1 -0
- package/build/src/tools/types.js +5 -0
- package/build/src/tools/types.js.map +1 -0
- package/build/src/types.d.ts +74 -0
- package/build/src/types.d.ts.map +1 -0
- package/build/src/types.js +11 -0
- package/build/src/types.js.map +1 -0
- package/package.json +66 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pages.js","sourceRoot":"","sources":["../../../src/tools/pages.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Screenshot tool.
|
|
3
|
+
* Mirrors chrome-devtools-mcp tool name: take_screenshot
|
|
4
|
+
*
|
|
5
|
+
* Note: Safari WebDriver only supports PNG format and does not support
|
|
6
|
+
* fullPage screenshots natively. Element screenshots are supported via UIDs.
|
|
7
|
+
*/
|
|
8
|
+
import { z } from 'zod';
|
|
9
|
+
import type { ToolHandler } from './types.js';
|
|
10
|
+
export declare const takeScreenshotSchema: {
|
|
11
|
+
uid: z.ZodOptional<z.ZodString>;
|
|
12
|
+
filePath: z.ZodOptional<z.ZodString>;
|
|
13
|
+
};
|
|
14
|
+
export declare const takeScreenshot: ToolHandler;
|
|
15
|
+
//# sourceMappingURL=screenshot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"screenshot.d.ts","sourceRoot":"","sources":["../../../src/tools/screenshot.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAEtB,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,YAAY,CAAC;AAE5C,eAAO,MAAM,oBAAoB;;;CAahC,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,WAoD5B,CAAC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Screenshot tool.
|
|
3
|
+
* Mirrors chrome-devtools-mcp tool name: take_screenshot
|
|
4
|
+
*
|
|
5
|
+
* Note: Safari WebDriver only supports PNG format and does not support
|
|
6
|
+
* fullPage screenshots natively. Element screenshots are supported via UIDs.
|
|
7
|
+
*/
|
|
8
|
+
import { z } from 'zod';
|
|
9
|
+
import { writeFile } from 'fs/promises';
|
|
10
|
+
export const takeScreenshotSchema = {
|
|
11
|
+
uid: z
|
|
12
|
+
.string()
|
|
13
|
+
.optional()
|
|
14
|
+
.describe('The uid of an element on the page from the page content snapshot. If omitted takes a page screenshot.'),
|
|
15
|
+
filePath: z
|
|
16
|
+
.string()
|
|
17
|
+
.optional()
|
|
18
|
+
.describe('The absolute path, or a path relative to the current working directory, to save the screenshot to instead of attaching it to the response.'),
|
|
19
|
+
};
|
|
20
|
+
export const takeScreenshot = async (params, driver) => {
|
|
21
|
+
let base64Data;
|
|
22
|
+
let description;
|
|
23
|
+
if (params.uid) {
|
|
24
|
+
base64Data = await driver.takeElementScreenshot(params.uid);
|
|
25
|
+
description = `Took a screenshot of element with uid "${params.uid}".`;
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
base64Data = await driver.takeScreenshot();
|
|
29
|
+
description = "Took a screenshot of the current page's viewport.";
|
|
30
|
+
}
|
|
31
|
+
if (params.filePath) {
|
|
32
|
+
const buffer = Buffer.from(base64Data, 'base64');
|
|
33
|
+
await writeFile(params.filePath, buffer);
|
|
34
|
+
return {
|
|
35
|
+
content: [
|
|
36
|
+
{
|
|
37
|
+
type: 'text',
|
|
38
|
+
text: `${description}\nSaved screenshot to ${params.filePath}.`,
|
|
39
|
+
},
|
|
40
|
+
],
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
// Check size — if too large, suggest saving to file
|
|
44
|
+
if (base64Data.length >= 2_000_000) {
|
|
45
|
+
const { tmpdir } = await import('os');
|
|
46
|
+
const { join } = await import('path');
|
|
47
|
+
const tempPath = join(tmpdir(), `safari-screenshot-${Date.now()}.png`);
|
|
48
|
+
const buffer = Buffer.from(base64Data, 'base64');
|
|
49
|
+
await writeFile(tempPath, buffer);
|
|
50
|
+
return {
|
|
51
|
+
content: [
|
|
52
|
+
{
|
|
53
|
+
type: 'text',
|
|
54
|
+
text: `${description}\nScreenshot was too large to embed. Saved to ${tempPath}.`,
|
|
55
|
+
},
|
|
56
|
+
],
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
return {
|
|
60
|
+
content: [
|
|
61
|
+
{ type: 'text', text: description },
|
|
62
|
+
{
|
|
63
|
+
type: 'image',
|
|
64
|
+
data: base64Data,
|
|
65
|
+
mimeType: 'image/png',
|
|
66
|
+
},
|
|
67
|
+
],
|
|
68
|
+
};
|
|
69
|
+
};
|
|
70
|
+
//# sourceMappingURL=screenshot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"screenshot.js","sourceRoot":"","sources":["../../../src/tools/screenshot.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AACtB,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AAGtC,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,GAAG,EAAE,CAAC;SACH,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,uGAAuG,CACxG;IACH,QAAQ,EAAE,CAAC;SACR,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,4IAA4I,CAC7I;CACJ,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAgB,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;IAClE,IAAI,UAAkB,CAAC;IACvB,IAAI,WAAmB,CAAC;IAExB,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;QACf,UAAU,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,MAAM,CAAC,GAAa,CAAC,CAAC;QACtE,WAAW,GAAG,0CAA0C,MAAM,CAAC,GAAG,IAAI,CAAC;IACzE,CAAC;SAAM,CAAC;QACN,UAAU,GAAG,MAAM,MAAM,CAAC,cAAc,EAAE,CAAC;QAC3C,WAAW,GAAG,mDAAmD,CAAC;IACpE,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpB,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACjD,MAAM,SAAS,CAAC,MAAM,CAAC,QAAkB,EAAE,MAAM,CAAC,CAAC;QACnD,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,GAAG,WAAW,yBAAyB,MAAM,CAAC,QAAQ,GAAG;iBAChE;aACF;SACF,CAAC;IACJ,CAAC;IAED,oDAAoD;IACpD,IAAI,UAAU,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;QACnC,MAAM,EAAC,MAAM,EAAC,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,EAAC,IAAI,EAAC,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;QACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,qBAAqB,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACvE,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACjD,MAAM,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAClC,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,GAAG,WAAW,iDAAiD,QAAQ,GAAG;iBACjF;aACF;SACF,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO,EAAE;YACP,EAAC,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,WAAW,EAAC;YAC1C;gBACE,IAAI,EAAE,OAAgB;gBACtB,IAAI,EAAE,UAAU;gBAChB,QAAQ,EAAE,WAAW;aACtB;SACF;KACF,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JavaScript evaluation tool.
|
|
3
|
+
* Mirrors chrome-devtools-mcp tool name: evaluate_script
|
|
4
|
+
*/
|
|
5
|
+
import { z } from 'zod';
|
|
6
|
+
import type { ToolHandler } from './types.js';
|
|
7
|
+
export declare const evaluateScriptSchema: {
|
|
8
|
+
function: z.ZodString;
|
|
9
|
+
args: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
10
|
+
};
|
|
11
|
+
export declare const evaluateScript: ToolHandler;
|
|
12
|
+
//# sourceMappingURL=script.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"script.d.ts","sourceRoot":"","sources":["../../../src/tools/script.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AACtB,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,YAAY,CAAC;AAE5C,eAAO,MAAM,oBAAoB;;;CAuBhC,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,WA0B5B,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JavaScript evaluation tool.
|
|
3
|
+
* Mirrors chrome-devtools-mcp tool name: evaluate_script
|
|
4
|
+
*/
|
|
5
|
+
import { z } from 'zod';
|
|
6
|
+
export const evaluateScriptSchema = {
|
|
7
|
+
function: z.string().describe(`A JavaScript function declaration to be executed in the currently selected page.
|
|
8
|
+
Example without arguments: \`() => {
|
|
9
|
+
return document.title
|
|
10
|
+
}\` or \`async () => {
|
|
11
|
+
return await fetch("example.com")
|
|
12
|
+
}\`.
|
|
13
|
+
Example with arguments: \`(el) => {
|
|
14
|
+
return el.innerText;
|
|
15
|
+
}\`
|
|
16
|
+
`),
|
|
17
|
+
args: z
|
|
18
|
+
.array(z
|
|
19
|
+
.string()
|
|
20
|
+
.describe('The uid of an element on the page from the page content snapshot'))
|
|
21
|
+
.optional()
|
|
22
|
+
.describe('An optional list of element UIDs to pass as arguments.'),
|
|
23
|
+
};
|
|
24
|
+
export const evaluateScript = async (params, driver) => {
|
|
25
|
+
try {
|
|
26
|
+
const result = await driver.evaluateScript(params.function, params.args);
|
|
27
|
+
return {
|
|
28
|
+
content: [
|
|
29
|
+
{
|
|
30
|
+
type: 'text',
|
|
31
|
+
text: `Script ran on page and returned:\n\`\`\`json\n${result}\n\`\`\``,
|
|
32
|
+
},
|
|
33
|
+
],
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
return {
|
|
38
|
+
content: [
|
|
39
|
+
{
|
|
40
|
+
type: 'text',
|
|
41
|
+
text: `Script evaluation failed: ${error instanceof Error ? error.message : String(error)}`,
|
|
42
|
+
},
|
|
43
|
+
],
|
|
44
|
+
isError: true,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
//# sourceMappingURL=script.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"script.js","sourceRoot":"","sources":["../../../src/tools/script.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAGtB,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAC3B;;;;;;;;;CASH,CACE;IACD,IAAI,EAAE,CAAC;SACJ,KAAK,CACJ,CAAC;SACE,MAAM,EAAE;SACR,QAAQ,CACP,kEAAkE,CACnE,CACJ;SACA,QAAQ,EAAE;SACV,QAAQ,CAAC,wDAAwD,CAAC;CACtE,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAgB,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;IAClE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,CACxC,MAAM,CAAC,QAAkB,EACzB,MAAM,CAAC,IAA4B,CACpC,CAAC;QAEF,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,iDAAiD,MAAM,UAAU;iBACxE;aACF;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,6BAA6B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;iBAC5F;aACF;YACD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DOM snapshot and wait tools.
|
|
3
|
+
* Mirrors chrome-devtools-mcp tool names: take_snapshot, wait_for
|
|
4
|
+
*/
|
|
5
|
+
import { z } from 'zod';
|
|
6
|
+
import type { ToolHandler } from './types.js';
|
|
7
|
+
export declare const takeSnapshotSchema: {
|
|
8
|
+
verbose: z.ZodOptional<z.ZodBoolean>;
|
|
9
|
+
filePath: z.ZodOptional<z.ZodString>;
|
|
10
|
+
};
|
|
11
|
+
export declare const takeSnapshot: ToolHandler;
|
|
12
|
+
export declare const waitForSchema: {
|
|
13
|
+
text: z.ZodArray<z.ZodString, "many">;
|
|
14
|
+
timeout: z.ZodOptional<z.ZodNumber>;
|
|
15
|
+
};
|
|
16
|
+
export declare const waitFor: ToolHandler;
|
|
17
|
+
//# sourceMappingURL=snapshot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../../../src/tools/snapshot.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAGtB,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,YAAY,CAAC;AAE5C,eAAO,MAAM,kBAAkB;;;CAa9B,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,WAmB1B,CAAC;AAEF,eAAO,MAAM,aAAa;;;CAWzB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,WA6BrB,CAAC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DOM snapshot and wait tools.
|
|
3
|
+
* Mirrors chrome-devtools-mcp tool names: take_snapshot, wait_for
|
|
4
|
+
*/
|
|
5
|
+
import { z } from 'zod';
|
|
6
|
+
import { writeFile } from 'fs/promises';
|
|
7
|
+
import { formatSnapshot } from '../formatters/SnapshotFormatter.js';
|
|
8
|
+
export const takeSnapshotSchema = {
|
|
9
|
+
verbose: z
|
|
10
|
+
.boolean()
|
|
11
|
+
.optional()
|
|
12
|
+
.describe('Whether to include all possible information (tag names, attributes). Default is false.'),
|
|
13
|
+
filePath: z
|
|
14
|
+
.string()
|
|
15
|
+
.optional()
|
|
16
|
+
.describe('The absolute path, or a path relative to the current working directory, to save the snapshot to instead of attaching it to the response.'),
|
|
17
|
+
};
|
|
18
|
+
export const takeSnapshot = async (params, driver) => {
|
|
19
|
+
const tree = await driver.takeSnapshot(params.verbose);
|
|
20
|
+
const text = formatSnapshot(tree, params.verbose);
|
|
21
|
+
if (params.filePath) {
|
|
22
|
+
await writeFile(params.filePath, text, 'utf-8');
|
|
23
|
+
return {
|
|
24
|
+
content: [
|
|
25
|
+
{
|
|
26
|
+
type: 'text',
|
|
27
|
+
text: `Snapshot saved to ${params.filePath}.`,
|
|
28
|
+
},
|
|
29
|
+
],
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
return {
|
|
33
|
+
content: [{ type: 'text', text }],
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
export const waitForSchema = {
|
|
37
|
+
text: z
|
|
38
|
+
.array(z.string())
|
|
39
|
+
.min(1)
|
|
40
|
+
.describe('Non-empty list of texts. Resolves when any value appears on the page.'),
|
|
41
|
+
timeout: z
|
|
42
|
+
.number()
|
|
43
|
+
.optional()
|
|
44
|
+
.describe('Timeout in milliseconds. Default is 30000.'),
|
|
45
|
+
};
|
|
46
|
+
export const waitFor = async (params, driver) => {
|
|
47
|
+
const texts = params.text;
|
|
48
|
+
const timeout = params.timeout;
|
|
49
|
+
try {
|
|
50
|
+
const found = await driver.waitForText(texts, timeout);
|
|
51
|
+
// Take a snapshot after waiting
|
|
52
|
+
const tree = await driver.takeSnapshot();
|
|
53
|
+
const snapshotText = formatSnapshot(tree);
|
|
54
|
+
return {
|
|
55
|
+
content: [
|
|
56
|
+
{
|
|
57
|
+
type: 'text',
|
|
58
|
+
text: `Element matching "${found}" found.\n\n${snapshotText}`,
|
|
59
|
+
},
|
|
60
|
+
],
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
return {
|
|
65
|
+
content: [
|
|
66
|
+
{
|
|
67
|
+
type: 'text',
|
|
68
|
+
text: error instanceof Error ? error.message : String(error),
|
|
69
|
+
},
|
|
70
|
+
],
|
|
71
|
+
isError: true,
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
//# sourceMappingURL=snapshot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../../src/tools/snapshot.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AACtB,OAAO,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AACtC,OAAO,EAAC,cAAc,EAAC,MAAM,oCAAoC,CAAC;AAGlE,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,OAAO,EAAE,CAAC;SACP,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CACP,wFAAwF,CACzF;IACH,QAAQ,EAAE,CAAC;SACR,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,0IAA0I,CAC3I;CACJ,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAgB,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;IAChE,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,OAA8B,CAAC,CAAC;IAC9E,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,OAA8B,CAAC,CAAC;IAEzE,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpB,MAAM,SAAS,CAAC,MAAM,CAAC,QAAkB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAC1D,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,qBAAqB,MAAM,CAAC,QAAQ,GAAG;iBAC9C;aACF;SACF,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO,EAAE,CAAC,EAAC,IAAI,EAAE,MAAe,EAAE,IAAI,EAAC,CAAC;KACzC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,IAAI,EAAE,CAAC;SACJ,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACP,uEAAuE,CACxE;IACH,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,4CAA4C,CAAC;CAC1D,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAgB,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;IAC3D,MAAM,KAAK,GAAG,MAAM,CAAC,IAAgB,CAAC;IACtC,MAAM,OAAO,GAAG,MAAM,CAAC,OAA6B,CAAC;IAErD,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACvD,gCAAgC;QAChC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,YAAY,EAAE,CAAC;QACzC,MAAM,YAAY,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;QAE1C,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,qBAAqB,KAAK,eAAe,YAAY,EAAE;iBAC9D;aACF;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;iBAC7D;aACF;YACD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared tool types.
|
|
3
|
+
*/
|
|
4
|
+
import type { SafariDriver } from '../SafariDriver.js';
|
|
5
|
+
export interface ToolResult {
|
|
6
|
+
content: ({
|
|
7
|
+
type: 'text';
|
|
8
|
+
text: string;
|
|
9
|
+
} | {
|
|
10
|
+
type: 'image';
|
|
11
|
+
data: string;
|
|
12
|
+
mimeType: string;
|
|
13
|
+
})[];
|
|
14
|
+
isError?: boolean;
|
|
15
|
+
}
|
|
16
|
+
export type ToolHandler = (params: Record<string, unknown>, driver: SafariDriver) => Promise<ToolResult>;
|
|
17
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/tools/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAErD,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,CACL;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,GAC5B;QAAC,IAAI,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAC,CAClD,EAAE,CAAC;IACJ,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,MAAM,WAAW,GAAG,CACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,MAAM,EAAE,YAAY,KACjB,OAAO,CAAC,UAAU,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/tools/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core type definitions for Safari DevTools MCP.
|
|
3
|
+
*/
|
|
4
|
+
export interface ConsoleLogEntry {
|
|
5
|
+
msgid: number;
|
|
6
|
+
level: ConsoleLevel;
|
|
7
|
+
message: string;
|
|
8
|
+
timestamp: number;
|
|
9
|
+
source?: string;
|
|
10
|
+
stackTrace?: string;
|
|
11
|
+
args?: string[];
|
|
12
|
+
}
|
|
13
|
+
export type ConsoleLevel = 'log' | 'debug' | 'info' | 'error' | 'warn' | 'trace' | 'assert' | 'dir' | 'table' | 'clear' | 'count' | 'timeEnd';
|
|
14
|
+
export interface NetworkLogEntry {
|
|
15
|
+
reqid: number;
|
|
16
|
+
url: string;
|
|
17
|
+
method: string;
|
|
18
|
+
status: number;
|
|
19
|
+
statusText: string;
|
|
20
|
+
resourceType: ResourceType;
|
|
21
|
+
startTime: number;
|
|
22
|
+
duration: number;
|
|
23
|
+
transferSize: number;
|
|
24
|
+
encodedBodySize: number;
|
|
25
|
+
decodedBodySize: number;
|
|
26
|
+
requestHeaders?: Record<string, string>;
|
|
27
|
+
responseHeaders?: Record<string, string>;
|
|
28
|
+
/** Whether this entry was captured from Performance API (pre-injection) */
|
|
29
|
+
historical: boolean;
|
|
30
|
+
error?: string;
|
|
31
|
+
/** Request body (for intercepted requests) */
|
|
32
|
+
requestBody?: string;
|
|
33
|
+
/** Response body (for intercepted requests) */
|
|
34
|
+
responseBody?: string;
|
|
35
|
+
/** MIME type of the response */
|
|
36
|
+
mimeType?: string;
|
|
37
|
+
}
|
|
38
|
+
export type ResourceType = 'document' | 'stylesheet' | 'image' | 'media' | 'font' | 'script' | 'xhr' | 'fetch' | 'websocket' | 'other';
|
|
39
|
+
export interface SnapshotNode {
|
|
40
|
+
uid: string;
|
|
41
|
+
role: string;
|
|
42
|
+
name: string;
|
|
43
|
+
value?: string;
|
|
44
|
+
description?: string;
|
|
45
|
+
children: SnapshotNode[];
|
|
46
|
+
tagName?: string;
|
|
47
|
+
attributes?: Record<string, string>;
|
|
48
|
+
}
|
|
49
|
+
export interface PageInfo {
|
|
50
|
+
pageId: number;
|
|
51
|
+
url: string;
|
|
52
|
+
title: string;
|
|
53
|
+
isSelected: boolean;
|
|
54
|
+
}
|
|
55
|
+
export interface SafariSessionOptions {
|
|
56
|
+
headless?: boolean;
|
|
57
|
+
enableInspection?: boolean;
|
|
58
|
+
enableProfiling?: boolean;
|
|
59
|
+
}
|
|
60
|
+
export interface ToolCategory {
|
|
61
|
+
DEBUGGING: 'debugging';
|
|
62
|
+
NAVIGATION: 'navigation';
|
|
63
|
+
INPUT: 'input';
|
|
64
|
+
NETWORK: 'network';
|
|
65
|
+
EMULATION: 'emulation';
|
|
66
|
+
}
|
|
67
|
+
export declare const ToolCategories: {
|
|
68
|
+
readonly DEBUGGING: "debugging";
|
|
69
|
+
readonly NAVIGATION: "navigation";
|
|
70
|
+
readonly INPUT: "input";
|
|
71
|
+
readonly NETWORK: "network";
|
|
72
|
+
readonly EMULATION: "emulation";
|
|
73
|
+
};
|
|
74
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,YAAY,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,MAAM,YAAY,GACpB,KAAK,GACL,OAAO,GACP,MAAM,GACN,OAAO,GACP,MAAM,GACN,OAAO,GACP,QAAQ,GACR,KAAK,GACL,OAAO,GACP,OAAO,GACP,OAAO,GACP,SAAS,CAAC;AAEd,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,YAAY,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,2EAA2E;IAC3E,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8CAA8C;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+CAA+C;IAC/C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gCAAgC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,YAAY,GACpB,UAAU,GACV,YAAY,GACZ,OAAO,GACP,OAAO,GACP,MAAM,GACN,QAAQ,GACR,KAAK,GACL,OAAO,GACP,WAAW,GACX,OAAO,CAAC;AAEZ,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,WAAW,CAAC;IACvB,UAAU,EAAE,YAAY,CAAC;IACzB,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,SAAS,CAAC;IACnB,SAAS,EAAE,WAAW,CAAC;CACxB;AAED,eAAO,MAAM,cAAc;;;;;;CAMjB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AA+FH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,SAAS,EAAE,WAAW;IACtB,UAAU,EAAE,YAAY;IACxB,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,WAAW;CACd,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "safari-devtools-mcp",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "MCP server for Safari DevTools — browser debugging and automation for AI coding agents",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "build/src/index.js",
|
|
7
|
+
"bin": {
|
|
8
|
+
"safari-devtools-mcp": "build/src/bin/safari-devtools-mcp.js"
|
|
9
|
+
},
|
|
10
|
+
"files": [
|
|
11
|
+
"build/src",
|
|
12
|
+
"LICENSE",
|
|
13
|
+
"!*.tsbuildinfo"
|
|
14
|
+
],
|
|
15
|
+
"scripts": {
|
|
16
|
+
"build": "tsc",
|
|
17
|
+
"clean": "rm -rf build",
|
|
18
|
+
"start": "node build/src/bin/safari-devtools-mcp.js",
|
|
19
|
+
"dev": "npm run build && npm start",
|
|
20
|
+
"typecheck": "tsc --noEmit",
|
|
21
|
+
"format": "eslint --cache --fix . && prettier --write --cache .",
|
|
22
|
+
"check-format": "eslint --cache . && prettier --check --cache .",
|
|
23
|
+
"test": "npm run build && node --test build/tests/**/*.test.js",
|
|
24
|
+
"test:no-build": "node --test build/tests/**/*.test.js"
|
|
25
|
+
},
|
|
26
|
+
"repository": {
|
|
27
|
+
"type": "git",
|
|
28
|
+
"url": "https://github.com/HayoDev/safari-devtools-mcp.git"
|
|
29
|
+
},
|
|
30
|
+
"author": "",
|
|
31
|
+
"license": "MIT",
|
|
32
|
+
"bugs": {
|
|
33
|
+
"url": "https://github.com/HayoDev/safari-devtools-mcp/issues"
|
|
34
|
+
},
|
|
35
|
+
"homepage": "https://github.com/HayoDev/safari-devtools-mcp#readme",
|
|
36
|
+
"keywords": [
|
|
37
|
+
"mcp",
|
|
38
|
+
"safari",
|
|
39
|
+
"devtools",
|
|
40
|
+
"debugging",
|
|
41
|
+
"browser-automation",
|
|
42
|
+
"model-context-protocol",
|
|
43
|
+
"ai-coding"
|
|
44
|
+
],
|
|
45
|
+
"engines": {
|
|
46
|
+
"node": ">=18.0.0"
|
|
47
|
+
},
|
|
48
|
+
"os": [
|
|
49
|
+
"darwin"
|
|
50
|
+
],
|
|
51
|
+
"dependencies": {
|
|
52
|
+
"@modelcontextprotocol/sdk": "^1.27.0",
|
|
53
|
+
"selenium-webdriver": "^4.26.1",
|
|
54
|
+
"zod": "^3.23.0"
|
|
55
|
+
},
|
|
56
|
+
"devDependencies": {
|
|
57
|
+
"@eslint/js": "^9.35.0",
|
|
58
|
+
"@stylistic/eslint-plugin": "^5.4.0",
|
|
59
|
+
"@types/node": "^22.10.0",
|
|
60
|
+
"@types/selenium-webdriver": "^4.1.27",
|
|
61
|
+
"eslint": "^9.35.0",
|
|
62
|
+
"prettier": "^3.6.0",
|
|
63
|
+
"typescript": "^5.7.0",
|
|
64
|
+
"typescript-eslint": "^8.43.0"
|
|
65
|
+
}
|
|
66
|
+
}
|