@darbotlabs/darbot-browser-mcp 0.1.0 โ†’ 0.2.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/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
@@ -41,8 +41,16 @@ npx @darbotlabs/darbot-browser-mcp@latest
41
41
  ### ๐Ÿ”Œ VS Code Extension
42
42
  Install the **"Darbot Browser MCP"** extension from the VS Code marketplace or search for `darbotlabs.darbot-browser-mcp`.
43
43
 
44
+ The extension **automatically configures the MCP server** when installed - just enable MCP in VS Code settings and start the server!
45
+
44
46
  [**๐Ÿ“ฅ Install VS Code Extension**](https://marketplace.visualstudio.com/items?itemName=darbotlabs.darbot-browser-mcp)
45
47
 
48
+ **Quick Setup:**
49
+ 1. Install the extension from VS Code marketplace
50
+ 2. The extension will automatically prompt you to enable MCP and configure the server
51
+ 3. Use Command Palette: "Darbot Browser MCP: Start Server"
52
+ 4. Start chatting with GitHub Copilot using browser automation tools!
53
+
46
54
  ### ๐Ÿ“š NuGet Package (.NET)
47
55
  ```bash
48
56
  # Install for .NET projects
@@ -62,56 +70,56 @@ Install the **Browser MCP Bridge** extension from the Chrome Web Store to share
62
70
  | โŒ Requires vision models | โœ… Pure structured data approach |
63
71
  | โŒ Complex setup and maintenance | โœ… Simple NPM install, ready in seconds |
64
72
  | โŒ Browser-specific code | โœ… Universal MCP protocol |
65
- | โŒ No session management | โœ… Advanced work profiles |
73
+ | โŒ No session management | โœ… Advanced autonomous work profiles |
66
74
 
67
75
  ### ๐Ÿ› ๏ธ Complete Autonomous Toolkit (29 Tools)
68
76
 
69
77
  <details>
70
- <summary><b>๐Ÿ”ง Core Automation</b></summary>
78
+ <summary><b>๐Ÿ”ง Core Autonomous Operations</b></summary>
71
79
 
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
80
+ - `browser_navigate` - Autonomously navigate to any URL
81
+ - `browser_click` - Autonomous intelligent element clicking
82
+ - `browser_type` - Autonomous smart text input with submit options
83
+ - `browser_snapshot` - AI-optimized autonomous accessibility snapshots
84
+ - `browser_wait_for` - Autonomous intelligent waiting conditions
77
85
 
78
86
  </details>
79
87
 
80
88
  <details>
81
- <summary><b>๐Ÿ“ Work Profile Management</b></summary>
89
+ <summary><b>๐Ÿ“ Autonomous Work Profile Management</b></summary>
82
90
 
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
91
+ - `browser_save_profile` - Autonomously save complete browser sessions
92
+ - `browser_switch_profile` - Autonomously load saved profiles
93
+ - `browser_list_profiles` - Autonomously manage all your profiles
94
+ - `browser_delete_profile` - Autonomous clean profile management
87
95
 
88
96
  </details>
89
97
 
90
98
  <details>
91
- <summary><b>๐Ÿ–ผ๏ธ Media & Resources</b></summary>
99
+ <summary><b>๐Ÿ–ผ๏ธ Autonomous Media & Resources</b></summary>
92
100
 
93
- - `browser_take_screenshot` - High-quality screenshots
94
- - `browser_pdf_save` - Generate PDFs from pages
95
- - `browser_file_upload` - Handle file uploads seamlessly
101
+ - `browser_take_screenshot` - Autonomous high-quality screenshots
102
+ - `browser_pdf_save` - Autonomous PDF generation from pages
103
+ - `browser_file_upload` - Autonomous file upload handling
96
104
 
97
105
  </details>
98
106
 
99
107
  <details>
100
- <summary><b>๐Ÿ—‚๏ธ Tab Management</b></summary>
108
+ <summary><b>๐Ÿ—‚๏ธ Autonomous Tab Management</b></summary>
101
109
 
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
110
+ - `browser_tab_new` - Autonomously open new tabs
111
+ - `browser_tab_list` - Autonomously get all open tabs
112
+ - `browser_tab_select` - Autonomously switch between tabs
113
+ - `browser_tab_close` - Autonomous clean tab management
106
114
 
107
115
  </details>
108
116
 
109
117
  <details>
110
- <summary><b>๐Ÿงช Testing & Development</b></summary>
118
+ <summary><b>๐Ÿงช Autonomous Testing & Development</b></summary>
111
119
 
112
- - `browser_generate_playwright_test` - Auto-generate test code
113
- - `browser_console_messages` - Debug with console access
114
- - `browser_network_requests` - Monitor network activity
120
+ - `browser_generate_playwright_test` - Autonomously auto-generate test code
121
+ - `browser_console_messages` - Autonomous debug with console access
122
+ - `browser_network_requests` - Autonomous network activity monitoring
115
123
 
116
124
  </details>
117
125
 
@@ -124,7 +132,16 @@ node utils/generate-links.js
124
132
 
125
133
  ## ๐Ÿš€ Getting Started
126
134
 
127
- First, install the Browser MCP server with your client. A typical configuration looks like this:
135
+ The fastest way to get started is with the VS Code extension, which automatically configures everything for you. For other clients, you'll need to manually configure the MCP server.
136
+
137
+ ### **๐Ÿ”Œ VS Code (Automatic Setup)**
138
+ 1. Install the [VS Code Extension](https://marketplace.visualstudio.com/items?itemName=darbotlabs.darbot-browser-mcp)
139
+ 2. Extension auto-configures MCP settings
140
+ 3. Start the server via Command Palette
141
+ 4. Use with GitHub Copilot Chat!
142
+
143
+ ### **โš™๏ธ Manual Configuration (Other Clients)**
144
+ For Claude Desktop, Cursor, Windsurf, etc., add this configuration:
128
145
 
129
146
  ```js
130
147
  {
@@ -141,13 +158,25 @@ First, install the Browser MCP server with your client. A typical configuration
141
158
 
142
159
  ### ๐Ÿ“ฑ Quick Install Buttons
143
160
 
144
- [<img src="https://img.shields.io/badge/VS_Code-Install_Server-0098FF?style=for-the-badge&logo=visual-studio-code" alt="Install in VS Code">](https://insiders.vscode.dev/redirect?url=vscode%3Amcp%2Finstall%3F%257B%2522name%2522%253A%2522browser%2522%252C%2522command%2522%253A%2522npx%2522%252C%2522args%2522%253A%255B%2522%2540darbotlabs%252Fdarbot-browser-mcp%2540latest%2522%255D%257D) [<img src="https://img.shields.io/badge/VS_Code_Insiders-Install_Server-24bfa5?style=for-the-badge&logo=visual-studio-code" alt="Install in VS Code Insiders">](https://insiders.vscode.dev/redirect?url=vscode-insiders%3Amcp%2Finstall%3F%257B%2522name%2522%253A%2522browser%2522%252C%2522command%2522%253A%2522npx%2522%252C%2522args%2522%253A%255B%2522%2540darbotlabs%252Fdarbot-browser-mcp%2540latest%2522%255D%257D)
161
+ **๐Ÿ”Œ VS Code (Automatic):**
162
+ [<img src="https://img.shields.io/badge/VS_Code-Auto_Install_Extension-0098FF?style=for-the-badge&logo=visual-studio-code" alt="Install VS Code Extension">](https://marketplace.visualstudio.com/items?itemName=darbotlabs.darbot-browser-mcp)
163
+
164
+ **โš™๏ธ Manual Configuration:**
165
+ [<img src="https://img.shields.io/badge/VS_Code-Manual_Server_Config-0098FF?style=for-the-badge&logo=visual-studio-code" alt="Install in VS Code">](https://insiders.vscode.dev/redirect?url=vscode%3Amcp%2Finstall%3F%257B%2522name%2522%253A%2522browser%2522%252C%2522command%2522%253A%2522npx%2522%252C%2522args%2522%253A%255B%2522%2540darbotlabs%252Fdarbot-browser-mcp%2540latest%2522%255D%257D) [<img src="https://img.shields.io/badge/VS_Code_Insiders-Manual_Server_Config-24bfa5?style=for-the-badge&logo=visual-studio-code" alt="Install in VS Code Insiders">](https://insiders.vscode.dev/redirect?url=vscode-insiders%3Amcp%2Finstall%3F%257B%2522name%2522%253A%2522browser%2522%252C%2522command%2522%253A%2522npx%2522%252C%2522args%2522%253A%255B%2522%2540darbotlabs%252Fdarbot-browser-mcp%2540latest%2522%255D%257D)
166
+
167
+
168
+ <details><summary><b>Install in VS Code (Automatic Setup)</b></summary>
145
169
 
170
+ **๐Ÿš€ Recommended: Use the VS Code Extension for automatic setup!**
146
171
 
147
- <details><summary><b>Install in VS Code</b></summary>
172
+ The [Darbot Browser MCP Extension](https://marketplace.visualstudio.com/items?itemName=darbotlabs.darbot-browser-mcp) automatically handles all configuration:
148
173
 
149
- You can also install the Browser MCP server using the VS Code CLI:
174
+ 1. **Install from marketplace**: Search "Darbot Browser MCP" in VS Code extensions
175
+ 2. **Auto-configuration**: Extension prompts to enable MCP and configures the server
176
+ 3. **Start & Use**: Use Command Palette โ†’ "Darbot Browser MCP: Start Server"
177
+ 4. **Chat with Copilot**: Ask GitHub Copilot to "browse to example.com"
150
178
 
179
+ **Manual CLI installation (if you prefer):**
151
180
  ```bash
152
181
  # For VS Code
153
182
  code --add-mcp '{"name":"browser","command":"npx","args":["@darbotlabs/darbot-browser-mcp@latest"]}'
@@ -553,6 +582,7 @@ X Y coordinate space, based on the provided screenshot.
553
582
  - Parameters:
554
583
  - `element` (string): Human-readable element description used to obtain permission to interact with the element
555
584
  - `ref` (string): Exact target element reference from the page snapshot
585
+ - `doubleClick` (boolean, optional): Whether to perform a double click instead of a single click
556
586
  - Read-only: **false**
557
587
 
558
588
  <!-- NOTE: This has been generated via update-readme.js -->
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,13 +1,38 @@
1
1
  {
2
2
  "name": "@darbotlabs/darbot-browser-mcp",
3
- "version": "0.1.0",
4
- "description": "๐Ÿค– Your Autonomous Browser Companion - 29 AI-driven browser tools with work profile support",
3
+ "version": "0.2.0",
4
+ "description": "๐Ÿค– Your Autonomous Browser Companion - 29 AI-driven browser tools with work profile support and VS Code GitHub Copilot agent mode integration",
5
5
  "type": "module",
6
6
  "repository": {
7
7
  "type": "git",
8
8
  "url": "git+https://github.com/darbotlabs/darbot-browser-mcp.git"
9
9
  },
10
10
  "homepage": "https://github.com/darbotlabs/darbot-browser-mcp",
11
+ "keywords": [
12
+ "mcp",
13
+ "browser",
14
+ "autonomous",
15
+ "darbot",
16
+ "automation",
17
+ "testing",
18
+ "screenshot",
19
+ "copilot",
20
+ "ai",
21
+ "edge",
22
+ "chrome",
23
+ "web-automation",
24
+ "playwright",
25
+ "selenium-alternative",
26
+ "browser-testing",
27
+ "accessibility",
28
+ "work-profiles",
29
+ "session-management",
30
+ "github-copilot",
31
+ "model-context-protocol",
32
+ "vscode-extension",
33
+ "agent-mode",
34
+ "copilot-integration"
35
+ ],
11
36
  "engines": {
12
37
  "node": ">=18"
13
38
  },
@@ -25,7 +50,9 @@
25
50
  "run-server": "node cli.js",
26
51
  "run-darbot": "node cli.js",
27
52
  "clean": "rmdir /s /q lib 2>nul || echo Clean completed",
28
- "npm-publish": "npm run clean && npm run build && npm run test && npm publish"
53
+ "npm-publish": "npm run clean && npm run build && npm run test && npm publish",
54
+ "package": "npm run build && npm pack",
55
+ "prepublishOnly": "npm run clean && npm run build"
29
56
  },
30
57
  "exports": {
31
58
  "./package.json": "./package.json",