@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 +61 -31
- package/lib/config.js +1 -2
- package/lib/tools/common.js +4 -4
- package/lib/tools/console.js +2 -2
- package/lib/tools/dialogs.js +2 -2
- package/lib/tools/files.js +2 -2
- package/lib/tools/install.js +2 -2
- package/lib/tools/keyboard.js +2 -2
- package/lib/tools/navigate.js +3 -3
- package/lib/tools/network.js +2 -2
- package/lib/tools/pdf.js +2 -2
- package/lib/tools/profiles.js +8 -8
- package/lib/tools/screenshot.js +2 -2
- package/lib/tools/snapshot.js +12 -12
- package/lib/tools/tabs.js +8 -8
- package/lib/tools/testing.js +2 -2
- package/lib/tools/wait.js +2 -2
- package/package.json +30 -3
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
|
|
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
|
[](https://www.npmjs.com/package/@darbotlabs/darbot-browser-mcp)
|
|
10
10
|
[](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
|
|
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
|
|
78
|
+
<summary><b>๐ง Core Autonomous Operations</b></summary>
|
|
71
79
|
|
|
72
|
-
- `browser_navigate` -
|
|
73
|
-
- `browser_click` -
|
|
74
|
-
- `browser_type` -
|
|
75
|
-
- `browser_snapshot` - AI-optimized accessibility snapshots
|
|
76
|
-
- `browser_wait_for` -
|
|
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` -
|
|
84
|
-
- `browser_switch_profile` -
|
|
85
|
-
- `browser_list_profiles` -
|
|
86
|
-
- `browser_delete_profile` -
|
|
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` -
|
|
94
|
-
- `browser_pdf_save` -
|
|
95
|
-
- `browser_file_upload` -
|
|
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` -
|
|
103
|
-
- `browser_tab_list` -
|
|
104
|
-
- `browser_tab_select` -
|
|
105
|
-
- `browser_tab_close` -
|
|
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` -
|
|
113
|
-
- `browser_console_messages` -
|
|
114
|
-
- `browser_network_requests` -
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
172
|
+
The [Darbot Browser MCP Extension](https://marketplace.visualstudio.com/items?itemName=darbotlabs.darbot-browser-mcp) automatically handles all configuration:
|
|
148
173
|
|
|
149
|
-
|
|
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
|
-
|
|
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: {
|
package/lib/tools/common.js
CHANGED
|
@@ -19,8 +19,8 @@ const close = defineTool({
|
|
|
19
19
|
capability: 'core',
|
|
20
20
|
schema: {
|
|
21
21
|
name: 'browser_close',
|
|
22
|
-
title: '
|
|
23
|
-
description: '
|
|
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: '
|
|
41
|
-
description: '
|
|
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'),
|
package/lib/tools/console.js
CHANGED
|
@@ -19,8 +19,8 @@ const console = defineTool({
|
|
|
19
19
|
capability: 'core',
|
|
20
20
|
schema: {
|
|
21
21
|
name: 'browser_console_messages',
|
|
22
|
-
title: '
|
|
23
|
-
description: '
|
|
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
|
},
|
package/lib/tools/dialogs.js
CHANGED
|
@@ -19,8 +19,8 @@ const handleDialog = captureSnapshot => defineTool({
|
|
|
19
19
|
capability: 'core',
|
|
20
20
|
schema: {
|
|
21
21
|
name: 'browser_handle_dialog',
|
|
22
|
-
title: '
|
|
23
|
-
description: '
|
|
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.'),
|
package/lib/tools/files.js
CHANGED
|
@@ -19,8 +19,8 @@ const uploadFile = captureSnapshot => defineTool({
|
|
|
19
19
|
capability: 'files',
|
|
20
20
|
schema: {
|
|
21
21
|
name: 'browser_file_upload',
|
|
22
|
-
title: '
|
|
23
|
-
description: '
|
|
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
|
}),
|
package/lib/tools/install.js
CHANGED
|
@@ -22,8 +22,8 @@ const install = defineTool({
|
|
|
22
22
|
capability: 'install',
|
|
23
23
|
schema: {
|
|
24
24
|
name: 'browser_install',
|
|
25
|
-
title: '
|
|
26
|
-
description: '
|
|
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
|
},
|
package/lib/tools/keyboard.js
CHANGED
|
@@ -19,8 +19,8 @@ const pressKey = captureSnapshot => defineTool({
|
|
|
19
19
|
capability: 'core',
|
|
20
20
|
schema: {
|
|
21
21
|
name: 'browser_press_key',
|
|
22
|
-
title: '
|
|
23
|
-
description: '
|
|
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
|
}),
|
package/lib/tools/navigate.js
CHANGED
|
@@ -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: '
|
|
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: '
|
|
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: '
|
|
71
|
+
description: 'Autonomously navigate forward to the next page in browser history',
|
|
72
72
|
inputSchema: z.object({}),
|
|
73
73
|
type: 'readOnly',
|
|
74
74
|
},
|
package/lib/tools/network.js
CHANGED
|
@@ -19,8 +19,8 @@ const requests = defineTool({
|
|
|
19
19
|
capability: 'core',
|
|
20
20
|
schema: {
|
|
21
21
|
name: 'browser_network_requests',
|
|
22
|
-
title: '
|
|
23
|
-
description: '
|
|
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: '
|
|
28
|
-
description: '
|
|
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
|
},
|
package/lib/tools/profiles.js
CHANGED
|
@@ -159,8 +159,8 @@ export const browserSaveProfile = defineTool({
|
|
|
159
159
|
capability: 'core',
|
|
160
160
|
schema: {
|
|
161
161
|
name: 'browser_save_profile',
|
|
162
|
-
title: '
|
|
163
|
-
description: '
|
|
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: '
|
|
188
|
-
description: '
|
|
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: '
|
|
213
|
-
description: '
|
|
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: '
|
|
252
|
-
description: '
|
|
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
|
},
|
package/lib/tools/screenshot.js
CHANGED
|
@@ -33,8 +33,8 @@ const screenshot = defineTool({
|
|
|
33
33
|
capability: 'core',
|
|
34
34
|
schema: {
|
|
35
35
|
name: 'browser_take_screenshot',
|
|
36
|
-
title: '
|
|
37
|
-
description: `
|
|
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
|
},
|
package/lib/tools/snapshot.js
CHANGED
|
@@ -21,8 +21,8 @@ const snapshot = defineTool({
|
|
|
21
21
|
capability: 'core',
|
|
22
22
|
schema: {
|
|
23
23
|
name: 'browser_snapshot',
|
|
24
|
-
title: '
|
|
25
|
-
description: '
|
|
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: '
|
|
50
|
-
description: '
|
|
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: '
|
|
79
|
-
description: '
|
|
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: '
|
|
109
|
-
description: '
|
|
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: '
|
|
138
|
-
description: '
|
|
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: '
|
|
178
|
-
description: '
|
|
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: '
|
|
23
|
-
description: '
|
|
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: '
|
|
47
|
-
description: '
|
|
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: '
|
|
70
|
-
description: '
|
|
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: '
|
|
95
|
-
description: '
|
|
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
|
}),
|
package/lib/tools/testing.js
CHANGED
|
@@ -24,8 +24,8 @@ const generateTest = defineTool({
|
|
|
24
24
|
capability: 'testing',
|
|
25
25
|
schema: {
|
|
26
26
|
name: 'browser_generate_playwright_test',
|
|
27
|
-
title: '
|
|
28
|
-
description: '
|
|
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: '
|
|
23
|
-
description: '
|
|
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.
|
|
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",
|