@darbotlabs/darbot-browser-mcp 0.1.0 โ†’ 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  **๐Ÿค– Your Autonomous Browser Companion - Powered by AI**
6
6
 
7
- A Model Context Protocol (MCP) server that provides intelligent browser automation capabilities. This server enables AI models to interact with web pages through structured accessibility snapshots, delivering autonomous browsing without requiring vision models. Optimized for Microsoft Edge with comprehensive work profile support.
7
+ A Model Context Protocol (MCP) server that provides intelligent autonomous browser capabilities. This server enables AI models to interact with web pages through structured accessibility snapshots, delivering autonomous browsing without requiring vision models. Optimized for Microsoft Edge with comprehensive work profile support.
8
8
 
9
9
  [![NPM Version](https://img.shields.io/npm/v/@darbotlabs/darbot-browser-mcp?style=flat-square&color=0098FF)](https://www.npmjs.com/package/@darbotlabs/darbot-browser-mcp)
10
10
  [![Downloads](https://img.shields.io/npm/dm/@darbotlabs/darbot-browser-mcp?style=flat-square&color=0098FF)](https://www.npmjs.com/package/@darbotlabs/darbot-browser-mcp)
@@ -17,7 +17,7 @@ A Model Context Protocol (MCP) server that provides intelligent browser automati
17
17
  - **๐Ÿง  AI-friendly** - No vision models needed, operates purely on structured data
18
18
  - **๐ŸŽฏ Deterministic** - Avoids ambiguity common with screenshot-based approaches
19
19
  - **๐Ÿ”„ Work Profiles** - Save and restore complete browser sessions
20
- - **๐Ÿ› ๏ธ 29 Autonomous Tools** - Comprehensive browser automation capabilities
20
+ - **๐Ÿ› ๏ธ 29 Autonomous Tools** - Comprehensive autonomous browser capabilities
21
21
  - **โšก Multi-Platform** - Available as NPM package, VS Code extension, NuGet package, and browser extension
22
22
 
23
23
  ## ๐Ÿ“‹ Requirements
@@ -62,56 +62,56 @@ Install the **Browser MCP Bridge** extension from the Chrome Web Store to share
62
62
  | โŒ Requires vision models | โœ… Pure structured data approach |
63
63
  | โŒ Complex setup and maintenance | โœ… Simple NPM install, ready in seconds |
64
64
  | โŒ Browser-specific code | โœ… Universal MCP protocol |
65
- | โŒ No session management | โœ… Advanced work profiles |
65
+ | โŒ No session management | โœ… Advanced autonomous work profiles |
66
66
 
67
67
  ### ๐Ÿ› ๏ธ Complete Autonomous Toolkit (29 Tools)
68
68
 
69
69
  <details>
70
- <summary><b>๐Ÿ”ง Core Automation</b></summary>
70
+ <summary><b>๐Ÿ”ง Core Autonomous Operations</b></summary>
71
71
 
72
- - `browser_navigate` - Navigate to any URL
73
- - `browser_click` - Intelligent element clicking
74
- - `browser_type` - Smart text input with submit options
75
- - `browser_snapshot` - AI-optimized accessibility snapshots
76
- - `browser_wait_for` - Intelligent waiting conditions
72
+ - `browser_navigate` - Autonomously navigate to any URL
73
+ - `browser_click` - Autonomous intelligent element clicking
74
+ - `browser_type` - Autonomous smart text input with submit options
75
+ - `browser_snapshot` - AI-optimized autonomous accessibility snapshots
76
+ - `browser_wait_for` - Autonomous intelligent waiting conditions
77
77
 
78
78
  </details>
79
79
 
80
80
  <details>
81
- <summary><b>๐Ÿ“ Work Profile Management</b></summary>
81
+ <summary><b>๐Ÿ“ Autonomous Work Profile Management</b></summary>
82
82
 
83
- - `browser_save_profile` - Save complete browser sessions
84
- - `browser_switch_profile` - Instantly load saved profiles
85
- - `browser_list_profiles` - Manage all your profiles
86
- - `browser_delete_profile` - Clean profile management
83
+ - `browser_save_profile` - Autonomously save complete browser sessions
84
+ - `browser_switch_profile` - Autonomously load saved profiles
85
+ - `browser_list_profiles` - Autonomously manage all your profiles
86
+ - `browser_delete_profile` - Autonomous clean profile management
87
87
 
88
88
  </details>
89
89
 
90
90
  <details>
91
- <summary><b>๐Ÿ–ผ๏ธ Media & Resources</b></summary>
91
+ <summary><b>๐Ÿ–ผ๏ธ Autonomous Media & Resources</b></summary>
92
92
 
93
- - `browser_take_screenshot` - High-quality screenshots
94
- - `browser_pdf_save` - Generate PDFs from pages
95
- - `browser_file_upload` - Handle file uploads seamlessly
93
+ - `browser_take_screenshot` - Autonomous high-quality screenshots
94
+ - `browser_pdf_save` - Autonomous PDF generation from pages
95
+ - `browser_file_upload` - Autonomous file upload handling
96
96
 
97
97
  </details>
98
98
 
99
99
  <details>
100
- <summary><b>๐Ÿ—‚๏ธ Tab Management</b></summary>
100
+ <summary><b>๐Ÿ—‚๏ธ Autonomous Tab Management</b></summary>
101
101
 
102
- - `browser_tab_new` - Open new tabs programmatically
103
- - `browser_tab_list` - Get all open tabs
104
- - `browser_tab_select` - Switch between tabs
105
- - `browser_tab_close` - Clean tab management
102
+ - `browser_tab_new` - Autonomously open new tabs
103
+ - `browser_tab_list` - Autonomously get all open tabs
104
+ - `browser_tab_select` - Autonomously switch between tabs
105
+ - `browser_tab_close` - Autonomous clean tab management
106
106
 
107
107
  </details>
108
108
 
109
109
  <details>
110
- <summary><b>๐Ÿงช Testing & Development</b></summary>
110
+ <summary><b>๐Ÿงช Autonomous Testing & Development</b></summary>
111
111
 
112
- - `browser_generate_playwright_test` - Auto-generate test code
113
- - `browser_console_messages` - Debug with console access
114
- - `browser_network_requests` - Monitor network activity
112
+ - `browser_generate_playwright_test` - Autonomously auto-generate test code
113
+ - `browser_console_messages` - Autonomous debug with console access
114
+ - `browser_network_requests` - Autonomous network activity monitoring
115
115
 
116
116
  </details>
117
117
 
package/lib/config.js CHANGED
@@ -28,8 +28,7 @@ const defaultConfig = {
28
28
  args: [
29
29
  '--disable-popup-blocking',
30
30
  '--allow-popups',
31
- `--disable-extensions-except=${process.env.EXTENSION_PATH || '/default/path/to/extension'}`, // Use EXTENSION_PATH environment variable or fallback to default
32
- `--load-extension=${process.env.EXTENSION_PATH || '/default/path/to/extension'}`, // Use EXTENSION_PATH environment variable or fallback to default
31
+ '--disable-extensions', // Disable all extensions to prevent manifest errors
33
32
  ],
34
33
  },
35
34
  contextOptions: {
@@ -19,8 +19,8 @@ const close = defineTool({
19
19
  capability: 'core',
20
20
  schema: {
21
21
  name: 'browser_close',
22
- title: 'Close browser',
23
- description: 'Close the page',
22
+ title: 'Autonomous browser closure',
23
+ description: 'Autonomously close the browser session and terminate all operations',
24
24
  inputSchema: z.object({}),
25
25
  type: 'readOnly',
26
26
  },
@@ -37,8 +37,8 @@ const resize = captureSnapshot => defineTool({
37
37
  capability: 'core',
38
38
  schema: {
39
39
  name: 'browser_resize',
40
- title: 'Resize browser window',
41
- description: 'Resize the browser window',
40
+ title: 'Autonomous window resizing',
41
+ description: 'Autonomously resize the browser window to specific dimensions for optimal viewing',
42
42
  inputSchema: z.object({
43
43
  width: z.number().describe('Width of the browser window'),
44
44
  height: z.number().describe('Height of the browser window'),
@@ -19,8 +19,8 @@ const console = defineTool({
19
19
  capability: 'core',
20
20
  schema: {
21
21
  name: 'browser_console_messages',
22
- title: 'Get console messages',
23
- description: 'Returns all console messages',
22
+ title: 'Autonomous console monitoring',
23
+ description: 'Autonomously retrieve all browser console messages for debugging and analysis',
24
24
  inputSchema: z.object({}),
25
25
  type: 'readOnly',
26
26
  },
@@ -19,8 +19,8 @@ const handleDialog = captureSnapshot => defineTool({
19
19
  capability: 'core',
20
20
  schema: {
21
21
  name: 'browser_handle_dialog',
22
- title: 'Handle a dialog',
23
- description: 'Handle a dialog',
22
+ title: 'Autonomous dialog handling',
23
+ description: 'Autonomously handle browser dialog boxes (alerts, confirmations, prompts)',
24
24
  inputSchema: z.object({
25
25
  accept: z.boolean().describe('Whether to accept the dialog.'),
26
26
  promptText: z.string().optional().describe('The text of the prompt in case of a prompt dialog.'),
@@ -19,8 +19,8 @@ const uploadFile = captureSnapshot => defineTool({
19
19
  capability: 'files',
20
20
  schema: {
21
21
  name: 'browser_file_upload',
22
- title: 'Upload files',
23
- description: 'Upload one or multiple files',
22
+ title: 'Autonomous file upload',
23
+ description: 'Autonomously upload one or multiple files when a file chooser dialog appears',
24
24
  inputSchema: z.object({
25
25
  paths: z.array(z.string()).describe('The absolute paths to the files to upload. Can be a single file or multiple files.'),
26
26
  }),
@@ -22,8 +22,8 @@ const install = defineTool({
22
22
  capability: 'install',
23
23
  schema: {
24
24
  name: 'browser_install',
25
- title: 'Install the browser specified in the config',
26
- description: 'Install the browser specified in the config. Call this if you get an error about the browser not being installed.',
25
+ title: 'Autonomous browser installation',
26
+ description: 'Autonomously install the required browser engine specified in configuration. Use this to resolve browser installation errors.',
27
27
  inputSchema: z.object({}),
28
28
  type: 'destructive',
29
29
  },
@@ -19,8 +19,8 @@ const pressKey = captureSnapshot => defineTool({
19
19
  capability: 'core',
20
20
  schema: {
21
21
  name: 'browser_press_key',
22
- title: 'Press a key',
23
- description: 'Press a key on the keyboard',
22
+ title: 'Autonomous keyboard input',
23
+ description: 'Autonomously press keys on the keyboard to interact with the web page',
24
24
  inputSchema: z.object({
25
25
  key: z.string().describe('Name of the key to press or a character to generate, such as `ArrowLeft` or `a`'),
26
26
  }),
@@ -20,7 +20,7 @@ const navigate = captureSnapshot => defineTool({
20
20
  schema: {
21
21
  name: 'browser_navigate',
22
22
  title: 'Navigate to a URL',
23
- description: 'Navigate to a URL',
23
+ description: 'Autonomously navigate the browser to any URL. Use this command to launch and direct the browser to websites.',
24
24
  inputSchema: z.object({
25
25
  url: z.string().describe('The URL to navigate to'),
26
26
  }),
@@ -45,7 +45,7 @@ const goBack = captureSnapshot => defineTool({
45
45
  schema: {
46
46
  name: 'browser_navigate_back',
47
47
  title: 'Go back',
48
- description: 'Go back to the previous page',
48
+ description: 'Autonomously navigate back to the previous page in browser history',
49
49
  inputSchema: z.object({}),
50
50
  type: 'readOnly',
51
51
  },
@@ -68,7 +68,7 @@ const goForward = captureSnapshot => defineTool({
68
68
  schema: {
69
69
  name: 'browser_navigate_forward',
70
70
  title: 'Go forward',
71
- description: 'Go forward to the next page',
71
+ description: 'Autonomously navigate forward to the next page in browser history',
72
72
  inputSchema: z.object({}),
73
73
  type: 'readOnly',
74
74
  },
@@ -19,8 +19,8 @@ const requests = defineTool({
19
19
  capability: 'core',
20
20
  schema: {
21
21
  name: 'browser_network_requests',
22
- title: 'List network requests',
23
- description: 'Returns all network requests since loading the page',
22
+ title: 'Autonomous network monitoring',
23
+ description: 'Autonomously capture and analyze all network requests made since page load for debugging',
24
24
  inputSchema: z.object({}),
25
25
  type: 'readOnly',
26
26
  },
package/lib/tools/pdf.js CHANGED
@@ -24,8 +24,8 @@ const pdf = defineTool({
24
24
  capability: 'pdf',
25
25
  schema: {
26
26
  name: 'browser_pdf_save',
27
- title: 'Save as PDF',
28
- description: 'Save page as PDF',
27
+ title: 'Autonomous PDF generation',
28
+ description: 'Autonomously save the current web page as a PDF document for archival or sharing',
29
29
  inputSchema: pdfSchema,
30
30
  type: 'readOnly',
31
31
  },
@@ -159,8 +159,8 @@ export const browserSaveProfile = defineTool({
159
159
  capability: 'core',
160
160
  schema: {
161
161
  name: 'browser_save_profile',
162
- title: 'Save Work Profile',
163
- description: 'Save the current browser state as a work profile',
162
+ title: 'Autonomous profile saving',
163
+ description: 'Autonomously save the current browser state as a reusable work profile for later restoration',
164
164
  inputSchema: saveProfileSchema,
165
165
  type: 'destructive',
166
166
  },
@@ -184,8 +184,8 @@ export const browserSwitchProfile = defineTool({
184
184
  capability: 'core',
185
185
  schema: {
186
186
  name: 'browser_switch_profile',
187
- title: 'Switch Work Profile',
188
- description: 'Switch to a saved work profile',
187
+ title: 'Autonomous profile switching',
188
+ description: 'Autonomously switch to a previously saved work profile, restoring browser state and session',
189
189
  inputSchema: switchProfileSchema,
190
190
  type: 'destructive',
191
191
  },
@@ -209,8 +209,8 @@ export const browserListProfiles = defineTool({
209
209
  capability: 'core',
210
210
  schema: {
211
211
  name: 'browser_list_profiles',
212
- title: 'List Work Profiles',
213
- description: 'List all saved work profiles',
212
+ title: 'Autonomous profile listing',
213
+ description: 'Autonomously list all saved work profiles with their details and creation information',
214
214
  inputSchema: listProfilesSchema,
215
215
  type: 'readOnly',
216
216
  },
@@ -248,8 +248,8 @@ export const browserDeleteProfile = defineTool({
248
248
  capability: 'core',
249
249
  schema: {
250
250
  name: 'browser_delete_profile',
251
- title: 'Delete Work Profile',
252
- description: 'Delete a saved work profile',
251
+ title: 'Autonomous profile deletion',
252
+ description: 'Autonomously delete a saved work profile permanently from storage',
253
253
  inputSchema: deleteProfileSchema,
254
254
  type: 'destructive',
255
255
  },
@@ -33,8 +33,8 @@ const screenshot = defineTool({
33
33
  capability: 'core',
34
34
  schema: {
35
35
  name: 'browser_take_screenshot',
36
- title: 'Take a screenshot',
37
- description: `Take a screenshot of the current page. You can't perform actions based on the screenshot, use browser_snapshot for actions.`,
36
+ title: 'Autonomous screenshot capture',
37
+ description: `Autonomously take visual screenshots of the current page or specific elements. Use browser_snapshot for structured page data instead of visual screenshots.`,
38
38
  inputSchema: screenshotSchema,
39
39
  type: 'readOnly',
40
40
  },
@@ -21,8 +21,8 @@ const snapshot = defineTool({
21
21
  capability: 'core',
22
22
  schema: {
23
23
  name: 'browser_snapshot',
24
- title: 'Page snapshot',
25
- description: 'Capture accessibility snapshot of the current page, this is better than screenshot',
24
+ title: 'Autonomous page snapshot',
25
+ description: 'Autonomously capture a detailed accessibility snapshot of the current page for analysis. This provides structured page content better than a screenshot.',
26
26
  inputSchema: z.object({}),
27
27
  type: 'readOnly',
28
28
  },
@@ -46,8 +46,8 @@ const click = defineTool({
46
46
  capability: 'core',
47
47
  schema: {
48
48
  name: 'browser_click',
49
- title: 'Click',
50
- description: 'Perform click on a web page',
49
+ title: 'Autonomous click',
50
+ description: 'Autonomously perform click interactions on web page elements',
51
51
  inputSchema: clickSchema,
52
52
  type: 'destructive',
53
53
  },
@@ -75,8 +75,8 @@ const drag = defineTool({
75
75
  capability: 'core',
76
76
  schema: {
77
77
  name: 'browser_drag',
78
- title: 'Drag mouse',
79
- description: 'Perform drag and drop between two elements',
78
+ title: 'Autonomous drag & drop',
79
+ description: 'Autonomously perform drag and drop operations between web page elements',
80
80
  inputSchema: z.object({
81
81
  startElement: z.string().describe('Human-readable source element description used to obtain the permission to interact with the element'),
82
82
  startRef: z.string().describe('Exact source element reference from the page snapshot'),
@@ -105,8 +105,8 @@ const hover = defineTool({
105
105
  capability: 'core',
106
106
  schema: {
107
107
  name: 'browser_hover',
108
- title: 'Hover mouse',
109
- description: 'Hover over element on page',
108
+ title: 'Autonomous hover',
109
+ description: 'Autonomously hover over specific elements on the web page',
110
110
  inputSchema: elementSchema,
111
111
  type: 'readOnly',
112
112
  },
@@ -134,8 +134,8 @@ const type = defineTool({
134
134
  capability: 'core',
135
135
  schema: {
136
136
  name: 'browser_type',
137
- title: 'Type text',
138
- description: 'Type text into editable element',
137
+ title: 'Autonomous text input',
138
+ description: 'Autonomously type text into editable elements on the web page',
139
139
  inputSchema: typeSchema,
140
140
  type: 'destructive',
141
141
  },
@@ -174,8 +174,8 @@ const selectOption = defineTool({
174
174
  capability: 'core',
175
175
  schema: {
176
176
  name: 'browser_select_option',
177
- title: 'Select option',
178
- description: 'Select an option in a dropdown',
177
+ title: 'Autonomous dropdown selection',
178
+ description: 'Autonomously select options in dropdown menus on the web page',
179
179
  inputSchema: selectOptionSchema,
180
180
  type: 'destructive',
181
181
  },
package/lib/tools/tabs.js CHANGED
@@ -19,8 +19,8 @@ const listTabs = defineTool({
19
19
  capability: 'tabs',
20
20
  schema: {
21
21
  name: 'browser_tab_list',
22
- title: 'List tabs',
23
- description: 'List browser tabs',
22
+ title: 'Autonomous tab listing',
23
+ description: 'Autonomously list all open browser tabs and their current status',
24
24
  inputSchema: z.object({}),
25
25
  type: 'readOnly',
26
26
  },
@@ -43,8 +43,8 @@ const selectTab = captureSnapshot => defineTool({
43
43
  capability: 'tabs',
44
44
  schema: {
45
45
  name: 'browser_tab_select',
46
- title: 'Select a tab',
47
- description: 'Select a tab by index',
46
+ title: 'Autonomous tab selection',
47
+ description: 'Autonomously select and switch to a specific browser tab by index',
48
48
  inputSchema: z.object({
49
49
  index: z.number().describe('The index of the tab to select'),
50
50
  }),
@@ -66,8 +66,8 @@ const newTab = captureSnapshot => defineTool({
66
66
  capability: 'tabs',
67
67
  schema: {
68
68
  name: 'browser_tab_new',
69
- title: 'Open a new tab',
70
- description: 'Open a new tab',
69
+ title: 'Autonomous new tab creation',
70
+ description: 'Autonomously open a new browser tab, optionally navigating to a specified URL',
71
71
  inputSchema: z.object({
72
72
  url: z.string().optional().describe('The URL to navigate to in the new tab. If not provided, the new tab will be blank.'),
73
73
  }),
@@ -91,8 +91,8 @@ const closeTab = captureSnapshot => defineTool({
91
91
  capability: 'tabs',
92
92
  schema: {
93
93
  name: 'browser_tab_close',
94
- title: 'Close a tab',
95
- description: 'Close a tab',
94
+ title: 'Autonomous tab closure',
95
+ description: 'Autonomously close a browser tab by index, or close the current tab if no index specified',
96
96
  inputSchema: z.object({
97
97
  index: z.number().optional().describe('The index of the tab to close. Closes current tab if not provided.'),
98
98
  }),
@@ -24,8 +24,8 @@ const generateTest = defineTool({
24
24
  capability: 'testing',
25
25
  schema: {
26
26
  name: 'browser_generate_playwright_test',
27
- title: 'Generate a Playwright test',
28
- description: 'Generate a Playwright test for given scenario',
27
+ title: 'Autonomous test generation',
28
+ description: 'Autonomously generate Playwright test code for browser automation scenarios and user workflows',
29
29
  inputSchema: generateTestSchema,
30
30
  type: 'readOnly',
31
31
  },
package/lib/tools/wait.js CHANGED
@@ -19,8 +19,8 @@ const wait = captureSnapshot => defineTool({
19
19
  capability: 'wait',
20
20
  schema: {
21
21
  name: 'browser_wait_for',
22
- title: 'Wait for',
23
- description: 'Wait for text to appear or disappear or a specified time to pass',
22
+ title: 'Autonomous wait conditions',
23
+ description: 'Autonomously wait for specific conditions: text appearance, text disappearance, or time duration',
24
24
  inputSchema: z.object({
25
25
  time: z.number().optional().describe('The time to wait in seconds'),
26
26
  text: z.string().optional().describe('The text to wait for'),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@darbotlabs/darbot-browser-mcp",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "๐Ÿค– Your Autonomous Browser Companion - 29 AI-driven browser tools with work profile support",
5
5
  "type": "module",
6
6
  "repository": {