1
- # ➡️ browser-use mcp server
1
+ # browser-use-mcp-server
2
+
3
+ <div align =" center " >
2
4
3
5
[ ![ Twitter URL] ( https://img.shields.io/twitter/url/https/twitter.com/cobrowser.svg?style=social&label=Follow%20%40cobrowser )] ( https://x.com/cobrowser )
4
6
[ ![ PyPI version] ( https://badge.fury.io/py/browser-use-mcp-server.svg )] ( https://pypi.org/project/browser-use-mcp-server/ )
5
7
6
- [ browser-use ] ( https://github.com/browser-use/browser-use ) MCP Server with SSE +
7
- stdio transport
8
+ ** An MCP server that enables AI agents to control web browsers using
9
+ [ browser-use ] ( https://github.com/browser-use/browser-use ) . **
8
10
9
- ### Requirements
11
+ </ div >
10
12
11
- - [ uv] ( https://github.com/astral-sh/uv )
12
- - [ mcp-proxy] ( https://github.com/sparfenyuk/mcp-proxy ) (for stdio)
13
+ ## Prerequisites
13
14
14
- ```
15
- # 1. Install uv
15
+ - [ uv] ( https://github.com/astral-sh/uv ) - Fast Python package manager
16
+ - [ Playwright] ( https://playwright.dev/ ) - Browser automation
17
+ - [ mcp-proxy] ( https://github.com/sparfenyuk/mcp-proxy ) - Required for stdio mode
18
+
19
+ ``` bash
20
+ # Install prerequisites
16
21
curl -LsSf https://astral.sh/uv/install.sh | sh
17
- # 2. Install mcp-proxy pypi package via uv
18
22
uv tool install mcp-proxy
23
+ uv tool update-shell
19
24
```
20
25
21
- ### Quickstart
26
+ ## Environment
22
27
23
- Starting in SSE mode :
28
+ Create a ` .env ` file :
24
29
25
- ``` bash
26
- uv sync
27
- uv pip install playwright
28
- uv run playwright install --with-deps --no-shell chromium
29
- uv run server --port 8000
30
+ ```
31
+ OPENAI_API_KEY=your-api-key
32
+ CHROME_PATH=optional/path/to/chrome
33
+ PATIENT=false # Set to true if API calls should wait for task completion
30
34
```
31
35
32
- With stdio mode:
36
+ ## Installation
33
37
34
38
``` bash
35
- # Run with stdio mode and specify a proxy port
36
- uv run server --stdio --proxy-port 8001
37
-
38
- # Or just stdio mode (random proxy port)
39
- uv run server --stdio
39
+ # Install dependencies
40
+ uv sync
41
+ uv pip install playwright
42
+ uv run playwright install --with-deps --no-shell chromium
40
43
```
41
44
42
- - the .env requires the following:
43
-
44
- ```
45
- OPENAI_API_KEY=[your api key]
46
- CHROME_PATH=[only change this if you have a custom chrome build]
47
- PATIENT=false # Set to true if you want api calls to wait for tasks to complete (default is false)
48
- ```
45
+ ## Usage
49
46
50
- When building the docker image, you can use Docker secrets for VNC password:
47
+ ### SSE Mode
51
48
52
49
``` bash
53
- # With Docker secrets (recommended for production)
54
- echo " your-secure-password" > vnc_password.txt
55
- docker run -v $( pwd) /vnc_password.txt:/run/secrets/vnc_password your-image-name
56
-
57
- # Or during development with the default password
58
- docker build .
50
+ # Run directly from source
51
+ uv run server --port 8000
59
52
```
60
53
61
- ### Tools
54
+ ### stdio Mode
62
55
63
- - [x] SSE transport
64
- - [x] stdio transport (via mcp-proxy)
65
- - [x] browser_use - Initiates browser tasks with URL and action
66
- - [x] browser_get_result - Retrieves results of async browser tasks
67
- - [x] VNC server - stream the dockerized browser to your client
68
-
69
- ### VNC
70
-
71
- the dockerfile has a vnc server with a default password of browser-use. connect
72
- to it:
56
+ ``` bash
57
+ # 1. Build and install globally
58
+ uv build
59
+ uv tool uninstall browser-use-mcp-server 2> /dev/null || true
60
+ uv tool install dist/browser_use_mcp_server-* .whl
73
61
62
+ # 2. Run with stdio transport
63
+ browser-use-mcp-server run server --port 8000 --stdio --proxy-port 9000
74
64
```
75
- docker build -t browser-use-mcp-server .
76
- docker run --rm -p8000:8000 -p5900:5900 browser-use-mcp-server
77
- git clone https://github.com/novnc/noVNC
78
- cd noVNC
79
- ./utils/novnc_proxy --vnc localhost:5900
80
- ```
81
-
82
- <p align =" center " >
83
- <img width =" 428 " alt =" Screenshot 2025-03-24 at 12 03 15 PM " src =" https://github.com/user-attachments/assets/45bc5bee-418d-4182-94f5-db84b4fc0b3a " />
84
- <br >
85
- <img width =" 428 " alt =" Screenshot 2025-03-24 at 12 11 42 PM " src =" https://github.com/user-attachments/assets/7db53f41-fc00-4e48-8892-f7108096f9c4 " />
86
- </p >
87
-
88
- ### Supported Clients
89
-
90
- - cursor.ai
91
- - claude desktop
92
- - claude code
93
- - windsurf ([ windsurf] ( https://codeium.com/windsurf ) doesn't support SSE, only
94
- stdio)
95
65
96
- #### SSE Mode
66
+ ## Client Configuration
97
67
98
- After running the server in SSE mode, add http://localhost:8000/sse to your
99
- client UI, or in a mcp.json file:
68
+ ### SSE Mode
100
69
101
70
``` json
102
71
{
@@ -108,20 +77,7 @@ client UI, or in a mcp.json file:
108
77
}
109
78
```
110
79
111
- #### stdio Mode
112
-
113
- When running in stdio mode, the server will automatically start both the SSE
114
- server and mcp-proxy. The proxy handles the conversion between stdio and SSE
115
- protocols. No additional configuration is needed - just start your client and it
116
- will communicate with the server through stdin/stdout.
117
-
118
- Install the cli
119
-
120
- ``` bash
121
- uv pip install -e .
122
- ```
123
-
124
- And then e.g., in Windsurf, paste:
80
+ ### stdio Mode
125
81
126
82
``` json
127
83
{
@@ -136,41 +92,115 @@ And then e.g., in Windsurf, paste:
136
92
" --stdio" ,
137
93
" --proxy-port" ,
138
94
" 9000"
139
- ]
95
+ ],
96
+ "env" : {
97
+ "OPENAI_API_KEY" : " your-api-key"
98
+ }
140
99
}
141
100
}
142
101
}
143
102
```
144
103
145
- ### Client Configuration Paths
104
+ ### Config Locations
105
+
106
+ | Client | Configuration Path |
107
+ | ---------------- | ----------------------------------------------------------------- |
108
+ | Cursor | ` ./.cursor/mcp.json ` |
109
+ | Windsurf | ` ~/.codeium/windsurf/mcp_config.json ` |
110
+ | Claude (Mac) | ` ~/Library/Application Support/Claude/claude_desktop_config.json ` |
111
+ | Claude (Windows) | ` %APPDATA%\Claude\claude_desktop_config.json ` |
112
+
113
+ ## Features
114
+
115
+ - [x] ** Browser Automation** : Control browsers through AI agents
116
+ - [x] ** Dual Transport** : Support for both SSE and stdio protocols
117
+ - [x] ** VNC Streaming** : Watch browser automation in real-time
118
+ - [x] ** Async Tasks** : Execute browser operations asynchronously
119
+
120
+ ## Local Development
121
+
122
+ To develop and test the package locally:
123
+
124
+ 1 . Build a distributable wheel:
125
+
126
+ ``` bash
127
+ # From the project root directory
128
+ uv build
129
+ ```
130
+
131
+ 2 . Install it as a global tool:
132
+
133
+ ``` bash
134
+ uv tool uninstall browser-use-mcp-server 2> /dev/null || true
135
+ uv tool install dist/browser_use_mcp_server-* .whl
136
+ ```
146
137
147
- #### Cursor
138
+ 3 . Run from any directory:
148
139
149
- - ` ./.cursor/mcp.json `
140
+ ``` bash
141
+ # Set your OpenAI API key for the current session
142
+ export OPENAI_API_KEY=your-api-key-here
150
143
151
- #### Windsurf
144
+ # Or provide it inline for a one-time run
145
+ OPENAI_API_KEY=your-api-key-here browser-use-mcp-server run server --port 8000 --stdio --proxy-port 9000
146
+ ```
152
147
153
- - ` ~/.codeium/windsurf/mcp_config.json `
148
+ 4 . After making changes, rebuild and reinstall:
149
+ ``` bash
150
+ uv build
151
+ uv tool uninstall browser-use-mcp-server
152
+ uv tool install dist/browser_use_mcp_server-* .whl
153
+ ```
154
154
155
- #### Claude
155
+ ## Docker
156
156
157
- - ` ~/Library/Application Support/Claude/claude_desktop_config.json `
158
- - ` %APPDATA%\Claude\claude_desktop_config.json `
157
+ ``` bash
158
+ # Run with default VNC password
159
+ docker build -t browser-use-mcp-server .
160
+ docker run --rm -p8000:8000 -p5900:5900 browser-use-mcp-server
159
161
160
- ### Example Usage
162
+ # Use custom VNC password
163
+ echo " your-password" > vnc_password.txt
164
+ docker run --rm -p8000:8000 -p5900:5900 \
165
+ -v $( pwd) /vnc_password.txt:/run/secrets/vnc_password \
166
+ browser-use-mcp-server
167
+ ```
161
168
162
- Try asking your LLM the following:
169
+ ### VNC Viewer
163
170
164
- ` open https://news.ycombinator.com and return the top ranked article `
171
+ ``` bash
172
+ # Browser-based viewer
173
+ git clone https://github.com/novnc/noVNC
174
+ cd noVNC
175
+ ./utils/novnc_proxy --vnc localhost:5900
176
+ ```
177
+
178
+ Default password: ` browser-use `
179
+
180
+ <div align =" center " >
181
+ <img width =" 428 " alt =" VNC Screenshot " src =" https://github.com/user-attachments/assets/45bc5bee-418d-4182-94f5-db84b4fc0b3a " />
182
+ <br ><br >
183
+ <img width =" 428 " alt =" VNC Screenshot " src =" https://github.com/user-attachments/assets/7db53f41-fc00-4e48-8892-f7108096f9c4 " />
184
+ </div >
185
+
186
+ ## Example
187
+
188
+ Try asking your AI:
189
+
190
+ ```
191
+ open https://news.ycombinator.com and return the top ranked article
192
+ ```
165
193
166
- ### Help
194
+ ## Support
167
195
168
- for issues or interest reach out @ https://cobrowser.xyz
196
+ For issues or inquiries: [ cobrowser.xyz ] ( https://cobrowser.xyz )
169
197
170
- # Stars
198
+ ## Star History
171
199
172
- <picture >
173
- <source media =" (prefers-color-scheme: dark) " srcset =" https://api.star-history.com/svg?repos=co-browser/browser-use-mcp-server&type=Date&theme=dark " />
174
- <source media =" (prefers-color-scheme: light) " srcset =" https://api.star-history.com/svg?repos=co-browser/browser-use-mcp-server&type=Date " />
175
- <img alt =" Star History Chart " src =" https://api.star-history.com/svg?repos=co-browser/browser-use-mcp-server&type=Date " />
176
- </picture >
200
+ <div align =" center " >
201
+ <picture >
202
+ <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=co-browser/browser-use-mcp-server&type=Date&theme=dark" />
203
+ <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=co-browser/browser-use-mcp-server&type=Date" />
204
+ <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=co-browser/browser-use-mcp-server&type=Date" />
205
+ </picture >
206
+ </div >
0 commit comments