@pyrokine/mcp-chrome 1.0.0 → 1.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.
Files changed (103) hide show
  1. package/README.md +176 -86
  2. package/dist/cdp/client.d.ts +10 -0
  3. package/dist/cdp/client.d.ts.map +1 -1
  4. package/dist/cdp/client.js +48 -18
  5. package/dist/cdp/client.js.map +1 -1
  6. package/dist/cdp/launcher.d.ts.map +1 -1
  7. package/dist/cdp/launcher.js +14 -4
  8. package/dist/cdp/launcher.js.map +1 -1
  9. package/dist/core/auto-wait.d.ts +7 -0
  10. package/dist/core/auto-wait.d.ts.map +1 -1
  11. package/dist/core/auto-wait.js +14 -4
  12. package/dist/core/auto-wait.js.map +1 -1
  13. package/dist/core/errors.d.ts +1 -0
  14. package/dist/core/errors.d.ts.map +1 -1
  15. package/dist/core/errors.js +32 -7
  16. package/dist/core/errors.js.map +1 -1
  17. package/dist/core/index.d.ts +1 -0
  18. package/dist/core/index.d.ts.map +1 -1
  19. package/dist/core/index.js +1 -0
  20. package/dist/core/index.js.map +1 -1
  21. package/dist/core/locator.d.ts +12 -0
  22. package/dist/core/locator.d.ts.map +1 -1
  23. package/dist/core/locator.js +73 -10
  24. package/dist/core/locator.js.map +1 -1
  25. package/dist/core/session.d.ts +66 -10
  26. package/dist/core/session.d.ts.map +1 -1
  27. package/dist/core/session.js +261 -60
  28. package/dist/core/session.js.map +1 -1
  29. package/dist/core/types.d.ts +11 -0
  30. package/dist/core/types.d.ts.map +1 -1
  31. package/dist/core/types.js +5 -2
  32. package/dist/core/types.js.map +1 -1
  33. package/dist/core/unified-session.d.ts +431 -0
  34. package/dist/core/unified-session.d.ts.map +1 -0
  35. package/dist/core/unified-session.js +1010 -0
  36. package/dist/core/unified-session.js.map +1 -0
  37. package/dist/extension/bridge.d.ts +222 -0
  38. package/dist/extension/bridge.d.ts.map +1 -0
  39. package/dist/extension/bridge.js +421 -0
  40. package/dist/extension/bridge.js.map +1 -0
  41. package/dist/extension/http-server.d.ts +58 -0
  42. package/dist/extension/http-server.d.ts.map +1 -0
  43. package/dist/extension/http-server.js +313 -0
  44. package/dist/extension/http-server.js.map +1 -0
  45. package/dist/extension/index.d.ts +7 -0
  46. package/dist/extension/index.d.ts.map +1 -0
  47. package/dist/extension/index.js +6 -0
  48. package/dist/extension/index.js.map +1 -0
  49. package/dist/extension/native-host-installer.d.ts +21 -0
  50. package/dist/extension/native-host-installer.d.ts.map +1 -0
  51. package/dist/extension/native-host-installer.js +147 -0
  52. package/dist/extension/native-host-installer.js.map +1 -0
  53. package/dist/extension/socket-server.d.ts +32 -0
  54. package/dist/extension/socket-server.d.ts.map +1 -0
  55. package/dist/extension/socket-server.js +177 -0
  56. package/dist/extension/socket-server.js.map +1 -0
  57. package/dist/extension/ws-server.d.ts +40 -0
  58. package/dist/extension/ws-server.d.ts.map +1 -0
  59. package/dist/extension/ws-server.js +246 -0
  60. package/dist/extension/ws-server.js.map +1 -0
  61. package/dist/index.js +6 -4
  62. package/dist/index.js.map +1 -1
  63. package/dist/native-host/index.js +280 -0
  64. package/dist/native-host/mcp-chrome-host +2 -0
  65. package/dist/tools/browse.d.ts +4 -0
  66. package/dist/tools/browse.d.ts.map +1 -1
  67. package/dist/tools/browse.js +137 -25
  68. package/dist/tools/browse.js.map +1 -1
  69. package/dist/tools/cookies.d.ts +33 -25
  70. package/dist/tools/cookies.d.ts.map +1 -1
  71. package/dist/tools/cookies.js +124 -38
  72. package/dist/tools/cookies.js.map +1 -1
  73. package/dist/tools/evaluate.d.ts +15 -0
  74. package/dist/tools/evaluate.d.ts.map +1 -1
  75. package/dist/tools/evaluate.js +87 -23
  76. package/dist/tools/evaluate.js.map +1 -1
  77. package/dist/tools/extract.d.ts +28 -2
  78. package/dist/tools/extract.d.ts.map +1 -1
  79. package/dist/tools/extract.js +319 -198
  80. package/dist/tools/extract.js.map +1 -1
  81. package/dist/tools/input.d.ts +30 -0
  82. package/dist/tools/input.d.ts.map +1 -1
  83. package/dist/tools/input.js +167 -19
  84. package/dist/tools/input.js.map +1 -1
  85. package/dist/tools/logs.d.ts +4 -0
  86. package/dist/tools/logs.d.ts.map +1 -1
  87. package/dist/tools/logs.js +102 -68
  88. package/dist/tools/logs.js.map +1 -1
  89. package/dist/tools/manage.d.ts +16 -0
  90. package/dist/tools/manage.d.ts.map +1 -1
  91. package/dist/tools/manage.js +215 -10
  92. package/dist/tools/manage.js.map +1 -1
  93. package/dist/tools/schema.d.ts +86 -13
  94. package/dist/tools/schema.d.ts.map +1 -1
  95. package/dist/tools/schema.js +240 -1
  96. package/dist/tools/schema.js.map +1 -1
  97. package/dist/tools/wait.d.ts +30 -0
  98. package/dist/tools/wait.d.ts.map +1 -1
  99. package/dist/tools/wait.js +329 -115
  100. package/dist/tools/wait.js.map +1 -1
  101. package/package.json +4 -5
  102. package/scripts/start-chrome-headless.sh +0 -37
  103. package/scripts/start-chrome.sh +0 -41
@@ -8,8 +8,8 @@
8
8
  * - idle: 等待网络空闲
9
9
  */
10
10
  import { z } from 'zod';
11
- import { formatErrorResponse, getSession, TimeoutError } from '../core/index.js';
12
- import { targetJsonSchema, targetZodSchema } from './schema.js';
11
+ import { formatErrorResponse, getSession, getUnifiedSession, TimeoutError } from '../core/index.js';
12
+ import { targetJsonSchema, targetToFindParams, targetZodSchema } from './schema.js';
13
13
  /**
14
14
  * wait 工具定义
15
15
  */
@@ -37,10 +37,18 @@ export const waitToolDefinition = {
37
37
  type: 'number',
38
38
  description: '毫秒(time)',
39
39
  },
40
+ tabId: {
41
+ type: 'string',
42
+ description: '目标 Tab ID(可选,仅 Extension 模式)。不指定则使用当前 attach 的 tab。可操作非当前 attach 的 tab。CDP 模式下忽略此参数',
43
+ },
40
44
  timeout: {
41
45
  type: 'number',
42
46
  description: '超时',
43
47
  },
48
+ frame: {
49
+ oneOf: [{ type: 'string' }, { type: 'number' }],
50
+ description: 'iframe 定位(可选,仅 Extension 模式)。CSS 选择器(如 "iframe#main")或索引(如 0)。不指定则在主框架操作',
51
+ },
44
52
  },
45
53
  required: ['for'],
46
54
  },
@@ -53,7 +61,9 @@ const waitSchema = z.object({
53
61
  target: targetZodSchema.optional(),
54
62
  state: z.enum(['visible', 'hidden', 'attached', 'detached']).optional(),
55
63
  ms: z.number().optional(),
64
+ tabId: z.string().optional(),
56
65
  timeout: z.number().optional(),
66
+ frame: z.union([z.string(), z.number()]).optional(),
57
67
  });
58
68
  /**
59
69
  * wait 工具处理器
@@ -61,135 +71,339 @@ const waitSchema = z.object({
61
71
  export async function handleWait(params) {
62
72
  try {
63
73
  const args = waitSchema.parse(params);
64
- const session = getSession();
74
+ const unifiedSession = getUnifiedSession();
75
+ const mode = unifiedSession.getMode();
65
76
  const timeout = args.timeout ?? 30000;
66
- switch (args.for) {
67
- case 'element': {
68
- if (!args.target) {
69
- return {
70
- content: [
71
- {
72
- type: 'text',
73
- text: JSON.stringify({
74
- error: {
75
- code: 'INVALID_ARGUMENT',
76
- message: '等待元素需要 target 参数',
77
+ return await unifiedSession.withTabId(args.tabId, async () => {
78
+ return await unifiedSession.withFrame(args.frame, async () => {
79
+ switch (args.for) {
80
+ case 'element': {
81
+ if (!args.target) {
82
+ return {
83
+ content: [
84
+ {
85
+ type: 'text',
86
+ text: JSON.stringify({
87
+ error: {
88
+ code: 'INVALID_ARGUMENT',
89
+ message: '等待元素需要 target 参数',
90
+ },
91
+ }),
77
92
  },
78
- }),
79
- },
80
- ],
81
- isError: true,
82
- };
83
- }
84
- const state = args.state ?? 'visible';
85
- await waitForElement(session, args.target, state, timeout);
86
- return {
87
- content: [
88
- {
89
- type: 'text',
90
- text: JSON.stringify({
91
- success: true,
92
- waited: 'element',
93
- state,
94
- }),
95
- },
96
- ],
97
- };
98
- }
99
- case 'navigation': {
100
- // 等待页面加载完成
101
- await waitForNavigation(session, timeout);
102
- const sessionState = session.getState();
103
- return {
104
- content: [
105
- {
106
- type: 'text',
107
- text: JSON.stringify({
108
- success: true,
109
- waited: 'navigation',
110
- url: sessionState?.url,
111
- title: sessionState?.title,
112
- }),
113
- },
114
- ],
115
- };
116
- }
117
- case 'time': {
118
- if (!args.ms) {
119
- return {
120
- content: [
121
- {
122
- type: 'text',
123
- text: JSON.stringify({
124
- error: {
125
- code: 'INVALID_ARGUMENT',
126
- message: '等待时间需要 ms 参数',
93
+ ],
94
+ isError: true,
95
+ };
96
+ }
97
+ const state = args.state ?? 'visible';
98
+ if (mode === 'extension') {
99
+ await waitForElementExtension(unifiedSession, args.target, state, timeout);
100
+ }
101
+ else {
102
+ const session = getSession();
103
+ await waitForElement(session, args.target, state, timeout);
104
+ }
105
+ return {
106
+ content: [
107
+ {
108
+ type: 'text',
109
+ text: JSON.stringify({
110
+ success: true,
111
+ waited: 'element',
112
+ state,
113
+ mode,
114
+ }),
115
+ },
116
+ ],
117
+ };
118
+ }
119
+ case 'navigation': {
120
+ if (mode === 'extension') {
121
+ // Extension 模式:轮询 document.readyState 等待页面加载完成
122
+ const navStart = Date.now();
123
+ let navCompleted = false;
124
+ let navLastError = null;
125
+ while (Date.now() - navStart < timeout) {
126
+ if (!unifiedSession.isExtensionConnected()) {
127
+ navLastError = new Error('Extension 未连接');
128
+ await new Promise(resolve => setTimeout(resolve, 100));
129
+ continue;
130
+ }
131
+ try {
132
+ const remaining = timeout - (Date.now() - navStart);
133
+ const readyState = await unifiedSession.evaluate('document.readyState', undefined, remaining);
134
+ // evaluate 带 timeout 时,Extension 断连会静默回退 CDP,返回错误 tab 的数据
135
+ if (!unifiedSession.isExtensionConnected()) {
136
+ navLastError = new Error('Extension 在 evaluate 期间断开');
137
+ await new Promise(resolve => setTimeout(resolve, 100));
138
+ continue;
139
+ }
140
+ if (readyState === 'complete') {
141
+ navCompleted = true;
142
+ break;
143
+ }
144
+ }
145
+ catch (err) {
146
+ // 页面正在导航中,evaluate 可能失败
147
+ navLastError = err instanceof Error ? err : new Error(String(err));
148
+ }
149
+ await new Promise(resolve => setTimeout(resolve, 100));
150
+ }
151
+ if (!navCompleted) {
152
+ const msg = `等待导航完成超时 (${timeout}ms)`;
153
+ throw new TimeoutError(navLastError ? `${msg}: ${navLastError.message}` : msg);
154
+ }
155
+ // 从实际 tab 中查询 URL/title,而非依赖全局缓存状态(支持 tabId 参数)
156
+ const navRemaining = timeout - (Date.now() - navStart);
157
+ let navUrl = null;
158
+ let navTitle = null;
159
+ if (navRemaining > 0) {
160
+ try {
161
+ const pageInfo = await unifiedSession.evaluate('({url: location.href, title: document.title})', undefined, navRemaining);
162
+ // CDP 回退的数据来自错误 tab,丢弃
163
+ if (unifiedSession.isExtensionConnected()) {
164
+ navUrl = pageInfo.url;
165
+ navTitle = pageInfo.title;
166
+ }
167
+ }
168
+ catch {
169
+ // 预算耗尽或连接断开,降级返回(导航本身已成功)
170
+ }
171
+ }
172
+ return {
173
+ content: [
174
+ {
175
+ type: 'text',
176
+ text: JSON.stringify({
177
+ success: true,
178
+ waited: 'navigation',
179
+ url: navUrl,
180
+ title: navTitle,
181
+ mode,
182
+ }),
127
183
  },
128
- }),
129
- },
130
- ],
131
- isError: true,
132
- };
133
- }
134
- await new Promise((resolve) => setTimeout(resolve, args.ms));
135
- return {
136
- content: [
137
- {
138
- type: 'text',
139
- text: JSON.stringify({
140
- success: true,
141
- waited: 'time',
142
- ms: args.ms,
143
- }),
144
- },
145
- ],
146
- };
147
- }
148
- case 'idle': {
149
- // 等待网络空闲
150
- await waitForNetworkIdle(session, timeout);
151
- return {
152
- content: [
153
- {
154
- type: 'text',
155
- text: JSON.stringify({
156
- success: true,
157
- waited: 'idle',
158
- }),
159
- },
160
- ],
161
- };
162
- }
163
- default:
164
- return {
165
- content: [
166
- {
167
- type: 'text',
168
- text: JSON.stringify({
169
- error: {
170
- code: 'INVALID_ARGUMENT',
171
- message: `未知等待类型: ${args.for}`,
184
+ ],
185
+ };
186
+ }
187
+ // CDP 模式
188
+ const session = getSession();
189
+ await waitForNavigation(session, timeout);
190
+ const sessionState = session.getState();
191
+ return {
192
+ content: [
193
+ {
194
+ type: 'text',
195
+ text: JSON.stringify({
196
+ success: true,
197
+ waited: 'navigation',
198
+ url: sessionState?.url,
199
+ title: sessionState?.title,
200
+ mode,
201
+ }),
172
202
  },
173
- }),
174
- },
175
- ],
176
- isError: true,
177
- };
178
- }
203
+ ],
204
+ };
205
+ }
206
+ case 'time': {
207
+ if (!args.ms) {
208
+ return {
209
+ content: [
210
+ {
211
+ type: 'text',
212
+ text: JSON.stringify({
213
+ error: {
214
+ code: 'INVALID_ARGUMENT',
215
+ message: '等待时间需要 ms 参数',
216
+ },
217
+ }),
218
+ },
219
+ ],
220
+ isError: true,
221
+ };
222
+ }
223
+ await new Promise((resolve) => setTimeout(resolve, args.ms));
224
+ return {
225
+ content: [
226
+ {
227
+ type: 'text',
228
+ text: JSON.stringify({
229
+ success: true,
230
+ waited: 'time',
231
+ ms: args.ms,
232
+ }),
233
+ },
234
+ ],
235
+ };
236
+ }
237
+ case 'idle': {
238
+ if (mode === 'extension') {
239
+ // Extension 模式:等待 document.readyState === 'complete' + 额外网络静默期
240
+ const idleStart = Date.now();
241
+ let idleCompleted = false;
242
+ let idleLastError = null;
243
+ while (Date.now() - idleStart < timeout) {
244
+ if (!unifiedSession.isExtensionConnected()) {
245
+ idleLastError = new Error('Extension 未连接');
246
+ await new Promise(resolve => setTimeout(resolve, 100));
247
+ continue;
248
+ }
249
+ try {
250
+ const remaining = timeout - (Date.now() - idleStart);
251
+ const readyState = await unifiedSession.evaluate('document.readyState', undefined, remaining);
252
+ // evaluate 带 timeout 时,Extension 断连会静默回退 CDP,返回错误 tab 的数据
253
+ if (!unifiedSession.isExtensionConnected()) {
254
+ idleLastError = new Error('Extension 在 evaluate 期间断开');
255
+ await new Promise(resolve => setTimeout(resolve, 100));
256
+ continue;
257
+ }
258
+ if (readyState === 'complete') {
259
+ idleCompleted = true;
260
+ break;
261
+ }
262
+ }
263
+ catch (err) {
264
+ idleLastError = err instanceof Error ? err : new Error(String(err));
265
+ }
266
+ await new Promise(resolve => setTimeout(resolve, 100));
267
+ }
268
+ if (!idleCompleted) {
269
+ const msg = `等待网络空闲超时 (${timeout}ms)`;
270
+ throw new TimeoutError(idleLastError ? `${msg}: ${idleLastError.message}` : msg);
271
+ }
272
+ // 额外等待确保网络请求结束,受 timeout 约束
273
+ const idleRemaining = timeout - (Date.now() - idleStart);
274
+ if (idleRemaining > 0) {
275
+ await new Promise(resolve => setTimeout(resolve, Math.min(500, idleRemaining)));
276
+ }
277
+ return {
278
+ content: [
279
+ {
280
+ type: 'text',
281
+ text: JSON.stringify({
282
+ success: true,
283
+ waited: 'idle',
284
+ mode,
285
+ }),
286
+ },
287
+ ],
288
+ };
289
+ }
290
+ // CDP 模式
291
+ const session = getSession();
292
+ await waitForNetworkIdle(session, timeout);
293
+ return {
294
+ content: [
295
+ {
296
+ type: 'text',
297
+ text: JSON.stringify({
298
+ success: true,
299
+ waited: 'idle',
300
+ mode,
301
+ }),
302
+ },
303
+ ],
304
+ };
305
+ }
306
+ default:
307
+ return {
308
+ content: [
309
+ {
310
+ type: 'text',
311
+ text: JSON.stringify({
312
+ error: {
313
+ code: 'INVALID_ARGUMENT',
314
+ message: `未知等待类型: ${args.for}`,
315
+ },
316
+ }),
317
+ },
318
+ ],
319
+ isError: true,
320
+ };
321
+ }
322
+ }); // withFrame
323
+ }); // withTabId
179
324
  }
180
325
  catch (error) {
181
326
  return formatErrorResponse(error);
182
327
  }
183
328
  }
184
329
  /**
185
- * 等待元素
330
+ * Extension 模式:等待元素
331
+ */
332
+ async function waitForElementExtension(unifiedSession, target, state, timeout) {
333
+ const startTime = Date.now();
334
+ const retryDelay = 100;
335
+ const { selector, text, xpath } = targetToFindParams(target);
336
+ let lastError = null;
337
+ while (true) {
338
+ const elapsed = Date.now() - startTime;
339
+ if (elapsed >= timeout) {
340
+ const msg = `等待元素 ${JSON.stringify(target)} 状态 ${state} 超时 (${timeout}ms)`;
341
+ throw new TimeoutError(lastError ? `${msg}: ${lastError.message}` : msg);
342
+ }
343
+ // 未连接时跳过 find(),避免阻塞超出用户 timeout
344
+ if (!unifiedSession.isExtensionConnected()) {
345
+ lastError = new Error('Extension 未连接');
346
+ await new Promise(resolve => setTimeout(resolve, retryDelay));
347
+ continue;
348
+ }
349
+ try {
350
+ const remaining = timeout - elapsed;
351
+ const elements = await unifiedSession.find(selector, text, xpath, remaining);
352
+ const found = elements.length > 0;
353
+ switch (state) {
354
+ case 'attached':
355
+ case 'visible': {
356
+ if (found) {
357
+ if (state === 'visible') {
358
+ const rect = elements[0].rect;
359
+ if (rect.width > 0 && rect.height > 0) {
360
+ return;
361
+ }
362
+ }
363
+ else {
364
+ return;
365
+ }
366
+ }
367
+ break;
368
+ }
369
+ case 'detached':
370
+ case 'hidden': {
371
+ if (!found) {
372
+ return;
373
+ }
374
+ if (state === 'hidden' && found) {
375
+ const rect = elements[0].rect;
376
+ if (rect.width === 0 || rect.height === 0) {
377
+ return;
378
+ }
379
+ }
380
+ break;
381
+ }
382
+ }
383
+ }
384
+ catch (err) {
385
+ // find() 在元素不存在时返回空数组(不抛异常),此处异常是真正的错误。
386
+ // 暂时性错误(RPC 超时、发送失败、连接断开)可重试,其他确定性错误立即抛出
387
+ if (err instanceof Error && /Request timeout|Failed to send|disconnect|未连接|stopped|replaced/i.test(err.message)) {
388
+ lastError = err;
389
+ await new Promise(resolve => setTimeout(resolve, retryDelay));
390
+ continue;
391
+ }
392
+ throw err;
393
+ }
394
+ await new Promise(resolve => setTimeout(resolve, retryDelay));
395
+ }
396
+ }
397
+ /**
398
+ * CDP 模式:等待元素
186
399
  */
187
400
  async function waitForElement(session, target, state, timeout) {
188
401
  const startTime = Date.now();
189
402
  const retryDelay = 100;
190
403
  while (Date.now() - startTime < timeout) {
191
404
  try {
192
- const locator = session.createLocator(target);
405
+ const remaining = timeout - (Date.now() - startTime);
406
+ const locator = session.createLocator(target, { timeout: remaining });
193
407
  switch (state) {
194
408
  case 'attached':
195
409
  case 'visible': {
@@ -1 +1 @@
1
- {"version":3,"file":"wait.js","sourceRoot":"","sources":["../../src/tools/wait.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wait.js","sourceRoot":"","sources":["../../src/tools/wait.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pyrokine/mcp-chrome",
3
- "version": "1.0.0",
3
+ "version": "1.1.0",
4
4
  "description": "Chrome browser automation MCP Server using Chrome DevTools Protocol",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
@@ -22,12 +22,12 @@
22
22
  "license": "MIT",
23
23
  "dependencies": {
24
24
  "@modelcontextprotocol/sdk": "^1.0.0",
25
- "ws": "^8.18.0",
25
+ "ws": "^8.19.0",
26
26
  "zod": "^3.24.0"
27
27
  },
28
28
  "devDependencies": {
29
29
  "@types/node": "^22.0.0",
30
- "@types/ws": "^8.5.0",
30
+ "@types/ws": "^8.18.1",
31
31
  "typescript": "^5.7.0"
32
32
  },
33
33
  "engines": {
@@ -37,7 +37,6 @@
37
37
  "mcp-chrome": "./dist/index.js"
38
38
  },
39
39
  "files": [
40
- "dist",
41
- "scripts"
40
+ "dist"
42
41
  ]
43
42
  }
@@ -1,37 +0,0 @@
1
- #!/bin/bash
2
-
3
- # MCP Browser - Chrome 无头模式启动脚本
4
- # 启动无头 Chrome(适合服务器环境)
5
-
6
- PORT="${1:-9222}"
7
-
8
- echo "Starting Chrome in headless mode on port $PORT..."
9
-
10
- # 检测操作系统和 Chrome 路径
11
- if [[ "$OSTYPE" == "darwin"* ]]; then
12
- CHROME_PATH="/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
13
- elif [[ "$OSTYPE" == "linux-gnu"* ]]; then
14
- if command -v google-chrome &> /dev/null; then
15
- CHROME_PATH="google-chrome"
16
- elif command -v google-chrome-stable &> /dev/null; then
17
- CHROME_PATH="google-chrome-stable"
18
- elif command -v chromium &> /dev/null; then
19
- CHROME_PATH="chromium"
20
- else
21
- echo "Error: Chrome/Chromium not found"
22
- exit 1
23
- fi
24
- else
25
- echo "Error: Unsupported OS"
26
- exit 1
27
- fi
28
-
29
- # 启动无头 Chrome
30
- "$CHROME_PATH" \
31
- --headless=new \
32
- --remote-debugging-port="$PORT" \
33
- --disable-gpu \
34
- --no-sandbox \
35
- --disable-dev-shm-usage \
36
- --window-size=1920,1080 \
37
- "$@"
@@ -1,41 +0,0 @@
1
- #!/bin/bash
2
-
3
- # MCP Browser - Chrome 启动脚本
4
- # 启动带远程调试端口的 Chrome 浏览器
5
-
6
- PORT="${1:-9222}"
7
- PROFILE_DIR="${HOME}/.chrome-mcp-profile"
8
-
9
- echo "Starting Chrome with remote debugging on port $PORT..."
10
- echo "Profile directory: $PROFILE_DIR"
11
-
12
- # 检测操作系统
13
- if [[ "$OSTYPE" == "darwin"* ]]; then
14
- # macOS
15
- CHROME_PATH="/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
16
- elif [[ "$OSTYPE" == "linux-gnu"* ]]; then
17
- # Linux
18
- if command -v google-chrome &> /dev/null; then
19
- CHROME_PATH="google-chrome"
20
- elif command -v google-chrome-stable &> /dev/null; then
21
- CHROME_PATH="google-chrome-stable"
22
- elif command -v chromium &> /dev/null; then
23
- CHROME_PATH="chromium"
24
- elif command -v chromium-browser &> /dev/null; then
25
- CHROME_PATH="chromium-browser"
26
- else
27
- echo "Error: Chrome/Chromium not found"
28
- exit 1
29
- fi
30
- else
31
- echo "Error: Unsupported OS"
32
- exit 1
33
- fi
34
-
35
- # 启动 Chrome
36
- "$CHROME_PATH" \
37
- --remote-debugging-port="$PORT" \
38
- --user-data-dir="$PROFILE_DIR" \
39
- --no-first-run \
40
- --no-default-browser-check \
41
- "$@"