mcp-chrome-server
# MCP Chrome Server
[](https://smithery.ai/server/@dlwjdtn535/mcp-chrome-server)
[](https://buymeacoffee.com/dlwjdtn535)
A Chrome server based on MCP (Model-Controller-Prompt) for browser automation.
## Installation
### Prerequisites
- Python 3.12
- Google Chrome browser installed
- uv (Python package installer) or Docker
### Installing via Smithery
```bash
npx -y @smithery/cli install @dlwjdtn535/mcp-chrome-server --client claude
```
### Configuration Setup
Choose one of the following setup methods based on your environment:
#### 1. Using uv (Recommended)
**Windows Setup:**
```json
{
"mcpServers": {
"mcp-chrome-server": {
"command": "uv",
"args": [
"run",
"--directory",
"%LOCALAPPDATA%\\Programs\\mcp-chrome-server\\src",
"mcp-chrome-server"
],
"env": {
"CHROME_PROFILE_PATH": "%LOCALAPPDATA%\\Google\\Chrome\\User Data"
}
}
}
}
```
**macOS Setup:**
```json
{
"mcpServers": {
"mcp-chrome-server": {
"command": "uv",
"args": [
"run",
"--directory",
"/usr/local/bin/mcp-chrome-server/src",
"mcp-chrome-server"
],
"env": {
"CHROME_PROFILE_PATH": "$HOME/Library/Application Support/Google/Chrome"
}
}
}
}
```
**Linux Setup:**
```json
{
"mcpServers": {
"mcp-chrome-server": {
"command": "uv",
"args": [
"run",
"--directory",
"/usr/local/bin/mcp-chrome-server/src",
"mcp-chrome-server"
],
"env": {
"CHROME_PROFILE_PATH": "$HOME/.config/google-chrome"
}
}
}
}
```
## Configuration
### Chrome Profile Paths
Default Chrome profile paths for each operating system:
| OS | Path |
|---|---|
| Windows | `%LOCALAPPDATA%\Google\Chrome\User Data` |
| macOS | `~/Library/Application Support/Google/Chrome` |
| Linux | `~/.config/google-chrome` |
### Important Notes
- Close all running Chrome instances before starting the automation server
- Ensure proper permissions for the Chrome profile directory
- For Docker setup, make sure the volume mount path matches your system's Chrome profile path
### Credential Management
Securely store and manage login information using the system keychain:
```python
# Save credentials
result = tool_save_credentials(
site="example.com",
username="your_username",
password="your_password"
)
# Retrieve saved credentials
result = tool_get_credentials(
site="example.com",
username="your_username"
)
```
## Key Features
### Browser Control
```python
# Open browser
result = tool_open_browser()
# Navigate to URL
result = tool_navigate(url="https://example.com")
# Close browser
result = tool_close_browser()
```
### Web Login
```python
result = tool_web_login(
url="https://example.com/login",
credentials={
"username": "your_username",
"password": "your_password"
},
selectors={
"username": "#id",
"password": "#pw",
"submit": ".login-button"
}
)
```
Special handling:
- Waits for user to solve CAPTCHA when detected
- Automatic detection of 2-factor authentication
- Detailed analysis of login failure scenarios
### Element Manipulation
```python
# Click element
result = tool_click(selector=".button")
# Type text
result = tool_type(
selector="#input-field",
text="Hello, World!"
)
# Get text
result = tool_get_text(selector=".content")
# Get multiple elements
result = tool_get_elements(selector=".items")
```
## Important Considerations
1. Chrome Profile Usage
- Verify correct profile path configuration
- Close all other Chrome windows using the profile
2. Automation Detection Prevention
- Simulation of natural user behavior
- Maintain appropriate delays between login attempts
3. Security
- Always use system keychain for important credentials
- Never expose credentials directly in environment variables or configuration files
TDQS
Scored across 36 tools
Most tools have distinct purposes (e.g., navigate, click, type), but tool_web_login overlaps with multiple basic tools and could cause ambiguity. Additionally, tool_get_text and tool_get_elements have similar functionality.
All tools follow a consistent 'tool_verb_noun' snake_case pattern. While tool_web_login deviates slightly, the overall pattern is uniform and predictable.
36 tools is excessive for a browser automation server. Many low-level tools (e.g., tool_implicitly_wait, tool_set_page_load_timeout) could be combined or made optional, leading to unnecessary complexity.
Covers core browser actions (navigation, clicking, typing, cookies, frames, windows) but lacks explicit element wait conditions, alert handling, and attribute retrieval. The login tool partially addresses high-level needs.