safari-devtools-mcp 1.2.0 → 1.3.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.
Files changed (62) hide show
  1. package/README.md +15 -0
  2. package/build/src/bin/safari-devtools-mcp.d.ts +7 -0
  3. package/build/src/bin/safari-devtools-mcp.d.ts.map +1 -1
  4. package/build/src/bin/safari-devtools-mcp.js +17 -1
  5. package/build/src/bin/safari-devtools-mcp.js.map +1 -1
  6. package/build/src/index.d.ts +5 -1
  7. package/build/src/index.d.ts.map +1 -1
  8. package/build/src/index.js +33 -80
  9. package/build/src/index.js.map +1 -1
  10. package/build/src/tools/console.d.ts +1 -13
  11. package/build/src/tools/console.d.ts.map +1 -1
  12. package/build/src/tools/console.js +85 -67
  13. package/build/src/tools/console.js.map +1 -1
  14. package/build/src/tools/cookies.d.ts +1 -20
  15. package/build/src/tools/cookies.d.ts.map +1 -1
  16. package/build/src/tools/cookies.js +129 -111
  17. package/build/src/tools/cookies.js.map +1 -1
  18. package/build/src/tools/css.d.ts +1 -6
  19. package/build/src/tools/css.d.ts.map +1 -1
  20. package/build/src/tools/css.js +52 -45
  21. package/build/src/tools/css.js.map +1 -1
  22. package/build/src/tools/input.d.ts +1 -63
  23. package/build/src/tools/input.d.ts.map +1 -1
  24. package/build/src/tools/input.js +311 -253
  25. package/build/src/tools/input.js.map +1 -1
  26. package/build/src/tools/network.d.ts +1 -13
  27. package/build/src/tools/network.d.ts.map +1 -1
  28. package/build/src/tools/network.js +85 -67
  29. package/build/src/tools/network.js.map +1 -1
  30. package/build/src/tools/page-content.d.ts +1 -11
  31. package/build/src/tools/page-content.d.ts.map +1 -1
  32. package/build/src/tools/page-content.js +104 -83
  33. package/build/src/tools/page-content.js.map +1 -1
  34. package/build/src/tools/pages.d.ts +1 -30
  35. package/build/src/tools/pages.d.ts.map +1 -1
  36. package/build/src/tools/pages.js +244 -202
  37. package/build/src/tools/pages.js.map +1 -1
  38. package/build/src/tools/screenshot.d.ts +1 -6
  39. package/build/src/tools/screenshot.d.ts.map +1 -1
  40. package/build/src/tools/screenshot.js +73 -65
  41. package/build/src/tools/screenshot.js.map +1 -1
  42. package/build/src/tools/script.d.ts +1 -6
  43. package/build/src/tools/script.d.ts.map +1 -1
  44. package/build/src/tools/script.js +41 -33
  45. package/build/src/tools/script.js.map +1 -1
  46. package/build/src/tools/scroll.d.ts +1 -10
  47. package/build/src/tools/scroll.d.ts.map +1 -1
  48. package/build/src/tools/scroll.js +50 -40
  49. package/build/src/tools/scroll.js.map +1 -1
  50. package/build/src/tools/snapshot.d.ts +1 -11
  51. package/build/src/tools/snapshot.d.ts.map +1 -1
  52. package/build/src/tools/snapshot.js +79 -68
  53. package/build/src/tools/snapshot.js.map +1 -1
  54. package/build/src/tools/storage.d.ts +1 -17
  55. package/build/src/tools/storage.d.ts.map +1 -1
  56. package/build/src/tools/storage.js +116 -98
  57. package/build/src/tools/storage.js.map +1 -1
  58. package/build/src/tools/types.d.ts +11 -1
  59. package/build/src/tools/types.d.ts.map +1 -1
  60. package/build/src/tools/types.js +3 -1
  61. package/build/src/tools/types.js.map +1 -1
  62. package/package.json +7 -8
@@ -2,110 +2,128 @@
2
2
  * Browser storage tools (localStorage and sessionStorage).
3
3
  */
4
4
  import { z } from 'zod';
5
+ import { defineTool } from './types.js';
5
6
  const STORAGE_TYPES = ['localStorage', 'sessionStorage'];
6
- export const getStorageSchema = {
7
- storageType: z
8
- .enum(STORAGE_TYPES)
9
- .optional()
10
- .describe('Which storage to read. Defaults to "localStorage".'),
11
- key: z
12
- .string()
13
- .optional()
14
- .describe('Specific key to retrieve. When omitted, returns all key-value pairs.'),
15
- };
16
- export const getStorage = async (params, driver) => {
17
- const type = params.storageType ?? 'localStorage';
18
- const key = params.key;
19
- const result = await driver.getStorage(type, key);
20
- if (key) {
21
- if (result === null) {
7
+ export const tools = [
8
+ defineTool({
9
+ name: 'get_storage',
10
+ description: 'Read from localStorage or sessionStorage. Returns all entries or a specific key.',
11
+ slimDescription: 'Read browser storage.',
12
+ schema: {
13
+ storageType: z
14
+ .enum(STORAGE_TYPES)
15
+ .optional()
16
+ .describe('Which storage to read. Defaults to "localStorage".'),
17
+ key: z
18
+ .string()
19
+ .optional()
20
+ .describe('Specific key to retrieve. When omitted, returns all key-value pairs.'),
21
+ },
22
+ handler: async (params, driver) => {
23
+ const type = params.storageType ?? 'localStorage';
24
+ const key = params.key;
25
+ const result = await driver.getStorage(type, key);
26
+ if (key) {
27
+ if (result === null) {
28
+ return {
29
+ content: [
30
+ {
31
+ type: 'text',
32
+ text: `Key "${key}" not found in ${type}.`,
33
+ },
34
+ ],
35
+ };
36
+ }
37
+ return {
38
+ content: [
39
+ {
40
+ type: 'text',
41
+ text: `${type}["${key}"] = ${result}`,
42
+ },
43
+ ],
44
+ };
45
+ }
46
+ const entries = result;
47
+ const keys = Object.keys(entries);
48
+ if (keys.length === 0) {
49
+ return {
50
+ content: [{ type: 'text', text: `${type} is empty.` }],
51
+ };
52
+ }
53
+ const lines = keys.map(k => ` ${k} = ${entries[k]}`);
22
54
  return {
23
55
  content: [
24
56
  {
25
57
  type: 'text',
26
- text: `Key "${key}" not found in ${type}.`,
58
+ text: `${type} (${keys.length} entries):\n\n${lines.join('\n')}`,
27
59
  },
28
60
  ],
29
61
  };
30
- }
31
- return {
32
- content: [
33
- {
34
- type: 'text',
35
- text: `${type}["${key}"] = ${result}`,
36
- },
37
- ],
38
- };
39
- }
40
- const entries = result;
41
- const keys = Object.keys(entries);
42
- if (keys.length === 0) {
43
- return {
44
- content: [{ type: 'text', text: `${type} is empty.` }],
45
- };
46
- }
47
- const lines = keys.map(k => ` ${k} = ${entries[k]}`);
48
- return {
49
- content: [
50
- {
51
- type: 'text',
52
- text: `${type} (${keys.length} entries):\n\n${lines.join('\n')}`,
53
- },
54
- ],
55
- };
56
- };
57
- export const setStorageSchema = {
58
- storageType: z
59
- .enum(STORAGE_TYPES)
60
- .optional()
61
- .describe('Which storage to write to. Defaults to "localStorage".'),
62
- key: z.string().describe('Storage key.'),
63
- value: z.string().describe('Value to store.'),
64
- };
65
- export const setStorage = async (params, driver) => {
66
- const type = params.storageType ?? 'localStorage';
67
- await driver.setStorage(type, params.key, params.value);
68
- return {
69
- content: [
70
- {
71
- type: 'text',
72
- text: `${type}["${params.key}"] set successfully.`,
73
- },
74
- ],
75
- };
76
- };
77
- export const deleteStorageSchema = {
78
- storageType: z
79
- .enum(STORAGE_TYPES)
80
- .optional()
81
- .describe('Which storage to delete from. Defaults to "localStorage".'),
82
- key: z
83
- .string()
84
- .optional()
85
- .describe('Key to delete. When omitted, clears all entries.'),
86
- };
87
- export const deleteStorage = async (params, driver) => {
88
- const type = params.storageType ?? 'localStorage';
89
- const key = params.key;
90
- if (key) {
91
- await driver.deleteStorage(type, key);
92
- return {
93
- content: [
94
- {
95
- type: 'text',
96
- text: `${type}["${key}"] deleted.`,
97
- },
98
- ],
99
- };
100
- }
101
- await driver.clearStorage(type);
102
- return {
103
- content: [
104
- {
105
- type: 'text',
106
- text: `${type} cleared.`,
107
- },
108
- ],
109
- };
110
- };
62
+ },
63
+ }),
64
+ defineTool({
65
+ name: 'set_storage',
66
+ description: 'Write a key-value pair to localStorage or sessionStorage.',
67
+ slimDescription: 'Write to browser storage.',
68
+ schema: {
69
+ storageType: z
70
+ .enum(STORAGE_TYPES)
71
+ .optional()
72
+ .describe('Which storage to write to. Defaults to "localStorage".'),
73
+ key: z.string().describe('Storage key.'),
74
+ value: z.string().describe('Value to store.'),
75
+ },
76
+ handler: async (params, driver) => {
77
+ const type = params.storageType ?? 'localStorage';
78
+ await driver.setStorage(type, params.key, params.value);
79
+ return {
80
+ content: [
81
+ {
82
+ type: 'text',
83
+ text: `${type}["${params.key}"] set successfully.`,
84
+ },
85
+ ],
86
+ };
87
+ },
88
+ }),
89
+ defineTool({
90
+ name: 'delete_storage',
91
+ description: 'Delete a key from localStorage or sessionStorage, or clear all entries.',
92
+ slimDescription: 'Delete from browser storage.',
93
+ schema: {
94
+ storageType: z
95
+ .enum(STORAGE_TYPES)
96
+ .optional()
97
+ .describe('Which storage to delete from. Defaults to "localStorage".'),
98
+ key: z
99
+ .string()
100
+ .optional()
101
+ .describe('Key to delete. When omitted, clears all entries.'),
102
+ },
103
+ handler: async (params, driver) => {
104
+ const type = params.storageType ?? 'localStorage';
105
+ const key = params.key;
106
+ if (key) {
107
+ await driver.deleteStorage(type, key);
108
+ return {
109
+ content: [
110
+ {
111
+ type: 'text',
112
+ text: `${type}["${key}"] deleted.`,
113
+ },
114
+ ],
115
+ };
116
+ }
117
+ await driver.clearStorage(type);
118
+ return {
119
+ content: [
120
+ {
121
+ type: 'text',
122
+ text: `${type} cleared.`,
123
+ },
124
+ ],
125
+ };
126
+ },
127
+ }),
128
+ ];
111
129
  //# sourceMappingURL=storage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../../src/tools/storage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../../src/tools/storage.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,10 @@
1
1
  /**
2
2
  * Shared tool types.
3
3
  */
4
+ import type { z, ZodRawShape, ZodObject } from 'zod';
4
5
  import type { SafariDriver } from '../SafariDriver.js';
5
6
  export interface ToolResult {
7
+ [key: string]: unknown;
6
8
  content: ({
7
9
  type: 'text';
8
10
  text: string;
@@ -13,5 +15,13 @@ export interface ToolResult {
13
15
  })[];
14
16
  isError?: boolean;
15
17
  }
16
- export type ToolHandler = (params: Record<string, unknown>, driver: SafariDriver) => Promise<ToolResult>;
18
+ export interface ToolDef<S extends ZodRawShape = ZodRawShape> {
19
+ name: string;
20
+ description: string;
21
+ /** Shorter description used when the server runs in `--slim` mode. */
22
+ slimDescription?: string;
23
+ schema: S;
24
+ handler: (params: z.infer<ZodObject<S>>, driver: SafariDriver) => Promise<ToolResult>;
25
+ }
26
+ export declare function defineTool<S extends ZodRawShape>(def: ToolDef<S>): ToolDef;
17
27
  //# sourceMappingURL=types.d.ts.map
@@ -1 +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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/tools/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAC,CAAC,EAAE,WAAW,EAAE,SAAS,EAAC,MAAM,KAAK,CAAC;AACnD,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAErD,MAAM,WAAW,UAAU;IACzB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,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,WAAW,OAAO,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW;IAC1D,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,sEAAsE;IACtE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,CAAC,CAAC;IACV,OAAO,EAAE,CACP,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAC7B,MAAM,EAAE,YAAY,KACjB,OAAO,CAAC,UAAU,CAAC,CAAC;CAC1B;AAED,wBAAgB,UAAU,CAAC,CAAC,SAAS,WAAW,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAE1E"}
@@ -1,5 +1,7 @@
1
1
  /**
2
2
  * Shared tool types.
3
3
  */
4
- export {};
4
+ export function defineTool(def) {
5
+ return def;
6
+ }
5
7
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/tools/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/tools/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AA0BH,MAAM,UAAU,UAAU,CAAwB,GAAe;IAC/D,OAAO,GAAyB,CAAC;AACnC,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "safari-devtools-mcp",
3
3
  "mcpName": "io.github.HayoDev/safari-devtools-mcp",
4
- "version": "1.2.0",
4
+ "version": "1.3.0",
5
5
  "description": "Safari DevTools MCP — real browser debugging with network interception, DOM inspection, cookie/storage management, and CSS analysis for AI agents on macOS",
6
6
  "type": "module",
7
7
  "main": "build/src/index.js",
@@ -19,8 +19,10 @@
19
19
  "start": "node build/src/bin/safari-devtools-mcp.js",
20
20
  "dev": "npm run build && npm start",
21
21
  "typecheck": "tsc --noEmit",
22
- "format": "eslint --cache --fix . && oxfmt --write .",
23
- "check-format": "eslint --cache . && oxfmt --check .",
22
+ "lint": "oxlint .",
23
+ "lint:fix": "oxlint --fix .",
24
+ "format": "oxlint --fix . && oxfmt --write .",
25
+ "check-format": "oxlint . && oxfmt --check .",
24
26
  "test": "npm run build && node --test build/tests/**/*.test.js",
25
27
  "test:no-build": "node --test build/tests/**/*.test.js",
26
28
  "prepare": "sh scripts/install-hooks.sh"
@@ -67,13 +69,10 @@
67
69
  "zod": "^3.23.0"
68
70
  },
69
71
  "devDependencies": {
70
- "@eslint/js": "^9.35.0",
71
72
  "@types/node": "^22.10.0",
72
73
  "@types/selenium-webdriver": "^4.1.27",
73
- "eslint": "^9.35.0",
74
- "eslint-config-prettier": "^10.1.8",
75
74
  "oxfmt": "^0.42.0",
76
- "typescript": "^5.7.0",
77
- "typescript-eslint": "^8.43.0"
75
+ "oxlint": "^1.58.0",
76
+ "typescript": "^5.7.0"
78
77
  }
79
78
  }