hangwin--mcp-chrome
600 行
13 KiB
Markdown
600 行
13 KiB
Markdown
# Chrome MCP Server API Reference 📚
|
|
|
|
Complete reference for all available tools and their parameters.
|
|
|
|
## 📋 Table of Contents
|
|
|
|
- [Browser Management](#browser-management)
|
|
- [Screenshots & Visual](#screenshots--visual)
|
|
- [Network Monitoring](#network-monitoring)
|
|
- [Content Analysis](#content-analysis)
|
|
- [Interaction](#interaction)
|
|
- [Data Management](#data-management)
|
|
- [Response Format](#response-format)
|
|
|
|
## 📊 Browser Management
|
|
|
|
### `get_windows_and_tabs`
|
|
|
|
List all currently open browser windows and tabs.
|
|
|
|
**Parameters**: None
|
|
|
|
**Response**:
|
|
|
|
```json
|
|
{
|
|
"windowCount": 2,
|
|
"tabCount": 5,
|
|
"windows": [
|
|
{
|
|
"windowId": 123,
|
|
"tabs": [
|
|
{
|
|
"tabId": 456,
|
|
"url": "https://example.com",
|
|
"title": "Example Page",
|
|
"active": true
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
### `chrome_navigate`
|
|
|
|
Navigate to a URL with optional viewport control.
|
|
|
|
**Parameters**:
|
|
|
|
- `url` (string, optional): URL to navigate to (omit when `refresh=true`)
|
|
- `newWindow` (boolean, optional): Create new window (default: false)
|
|
- `tabId` (number, optional): Target an existing tab by ID (navigate/refresh that tab)
|
|
- `background` (boolean, optional): Do not activate the tab or focus the window (default: false)
|
|
- `width` (number, optional): Viewport width in pixels (default: 1280)
|
|
- `height` (number, optional): Viewport height in pixels (default: 720)
|
|
|
|
**Example**:
|
|
|
|
```json
|
|
{
|
|
"url": "https://example.com",
|
|
"newWindow": true,
|
|
"width": 1920,
|
|
"height": 1080
|
|
}
|
|
```
|
|
|
|
### `chrome_close_tabs`
|
|
|
|
Close specific tabs or windows.
|
|
|
|
**Parameters**:
|
|
|
|
- `tabIds` (array, optional): Array of tab IDs to close
|
|
- `windowIds` (array, optional): Array of window IDs to close
|
|
|
|
**Example**:
|
|
|
|
```json
|
|
{
|
|
"tabIds": [123, 456],
|
|
"windowIds": [789]
|
|
}
|
|
```
|
|
|
|
### `chrome_switch_tab`
|
|
|
|
Switch to a specific browser tab.
|
|
|
|
**Parameters**:
|
|
|
|
- `tabId` (number, required): The ID of the tab to switch to.
|
|
- `windowId` (number, optional): The ID of the window where the tab is located.
|
|
|
|
**Example**:
|
|
|
|
```json
|
|
{
|
|
"tabId": 456,
|
|
"windowId": 123
|
|
}
|
|
```
|
|
|
|
### `chrome_go_back_or_forward`
|
|
|
|
Navigate browser history.
|
|
|
|
**Parameters**:
|
|
|
|
- `direction` (string, required): "back" or "forward"
|
|
- `tabId` (number, optional): Specific tab ID (default: active tab)
|
|
|
|
**Example**:
|
|
|
|
```json
|
|
{
|
|
"direction": "back",
|
|
"tabId": 123
|
|
}
|
|
```
|
|
|
|
## 📸 Screenshots & Visual
|
|
|
|
### `chrome_screenshot`
|
|
|
|
Take advanced screenshots with various options.
|
|
|
|
**Parameters**:
|
|
|
|
- `name` (string, optional): Screenshot filename
|
|
- `selector` (string, optional): CSS selector for element screenshot
|
|
- `tabId` (number, optional): Target tab to capture (default: active tab)
|
|
- `background` (boolean, optional): Attempt capture without bringing tab/window to foreground (viewport-only uses CDP)
|
|
- `width` (number, optional): Width in pixels (default: 800)
|
|
- `height` (number, optional): Height in pixels (default: 600)
|
|
- `storeBase64` (boolean, optional): Return base64 data (default: false)
|
|
- `fullPage` (boolean, optional): Capture full page (default: true)
|
|
|
|
**Example**:
|
|
|
|
```json
|
|
{
|
|
"selector": ".main-content",
|
|
"fullPage": true,
|
|
"storeBase64": true,
|
|
"width": 1920,
|
|
"height": 1080
|
|
}
|
|
```
|
|
|
|
**Response**:
|
|
|
|
```json
|
|
{
|
|
"success": true,
|
|
"base64": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA...",
|
|
"dimensions": {
|
|
"width": 1920,
|
|
"height": 1080
|
|
}
|
|
}
|
|
```
|
|
|
|
## 🌐 Network Monitoring
|
|
|
|
### `chrome_network_capture_start`
|
|
|
|
Start capturing network requests using webRequest API.
|
|
|
|
**Parameters**:
|
|
|
|
- `url` (string, optional): URL to navigate to and capture
|
|
- `maxCaptureTime` (number, optional): Maximum capture time in ms (default: 30000)
|
|
- `inactivityTimeout` (number, optional): Stop after inactivity in ms (default: 3000)
|
|
- `includeStatic` (boolean, optional): Include static resources (default: false)
|
|
|
|
**Example**:
|
|
|
|
```json
|
|
{
|
|
"url": "https://api.example.com",
|
|
"maxCaptureTime": 60000,
|
|
"includeStatic": false
|
|
}
|
|
```
|
|
|
|
### `chrome_network_capture_stop`
|
|
|
|
Stop network capture and return collected data.
|
|
|
|
**Parameters**: None
|
|
|
|
**Response**:
|
|
|
|
```json
|
|
{
|
|
"success": true,
|
|
"capturedRequests": [
|
|
{
|
|
"url": "https://api.example.com/data",
|
|
"method": "GET",
|
|
"status": 200,
|
|
"requestHeaders": {...},
|
|
"responseHeaders": {...},
|
|
"responseTime": 150
|
|
}
|
|
],
|
|
"summary": {
|
|
"totalRequests": 15,
|
|
"captureTime": 5000
|
|
}
|
|
}
|
|
```
|
|
|
|
### `chrome_network_debugger_start`
|
|
|
|
Start capturing with Chrome Debugger API (includes response bodies).
|
|
|
|
**Parameters**:
|
|
|
|
- `url` (string, optional): URL to navigate to and capture
|
|
|
|
### `chrome_network_debugger_stop`
|
|
|
|
Stop debugger capture and return data with response bodies.
|
|
|
|
### `chrome_network_request`
|
|
|
|
Send custom HTTP requests.
|
|
|
|
**Parameters**:
|
|
|
|
- `url` (string, required): Request URL
|
|
- `method` (string, optional): HTTP method (default: "GET")
|
|
- `headers` (object, optional): Request headers
|
|
- `body` (string, optional): Request body
|
|
|
|
**Example**:
|
|
|
|
```json
|
|
{
|
|
"url": "https://api.example.com/data",
|
|
"method": "POST",
|
|
"headers": {
|
|
"Content-Type": "application/json"
|
|
},
|
|
"body": "{\"key\": \"value\"}"
|
|
}
|
|
```
|
|
|
|
## 🔍 Content Analysis
|
|
|
|
### `chrome_read_page`
|
|
|
|
Build an accessibility-like tree of the current page (visible viewport by default) with stable `ref_*` identifiers and viewport info. Useful for semantic element discovery or agent planning.
|
|
|
|
Parameters:
|
|
|
|
- `filter` (string, optional): `interactive` to only include interactive elements; default includes structural and labeled nodes.
|
|
- `tabId` (number, optional): Target an existing tab by ID (default: active tab).
|
|
|
|
Example:
|
|
|
|
```json
|
|
{
|
|
"filter": "interactive"
|
|
}
|
|
```
|
|
|
|
Response contains `pageContent` (text tree), `viewport`, and a `refMapCount` summary. Use `chrome_get_interactive_elements` or your own logic to act on returned refs.
|
|
|
|
### `search_tabs_content`
|
|
|
|
AI-powered semantic search across browser tabs.
|
|
|
|
**Parameters**:
|
|
|
|
- `query` (string, required): Search query
|
|
|
|
**Example**:
|
|
|
|
```json
|
|
{
|
|
"query": "machine learning tutorials"
|
|
}
|
|
```
|
|
|
|
**Response**:
|
|
|
|
```json
|
|
{
|
|
"success": true,
|
|
"totalTabsSearched": 10,
|
|
"matchedTabsCount": 3,
|
|
"vectorSearchEnabled": true,
|
|
"indexStats": {
|
|
"totalDocuments": 150,
|
|
"totalTabs": 10,
|
|
"semanticEngineReady": true
|
|
},
|
|
"matchedTabs": [
|
|
{
|
|
"tabId": 123,
|
|
"url": "https://example.com/ml-tutorial",
|
|
"title": "Machine Learning Tutorial",
|
|
"semanticScore": 0.85,
|
|
"matchedSnippets": ["Introduction to machine learning..."],
|
|
"chunkSource": "content"
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
### `chrome_get_web_content`
|
|
|
|
Extract HTML or text content from web pages.
|
|
|
|
**Parameters**:
|
|
|
|
- `format` (string, optional): "html" or "text" (default: "text")
|
|
- `selector` (string, optional): CSS selector for specific elements
|
|
- `tabId` (number, optional): Specific tab ID (default: active tab)
|
|
- `background` (boolean, optional): Do not activate tab/focus window while fetching (default: false)
|
|
|
|
**Example**:
|
|
|
|
```json
|
|
{
|
|
"format": "text",
|
|
"selector": ".article-content"
|
|
}
|
|
```
|
|
|
|
### `chrome_get_interactive_elements` (deprecated)
|
|
|
|
Replaced by `chrome_read_page` as the primary discovery tool. The `read_page` implementation will automatically fallback to the interactive-elements logic when the accessibility tree is unavailable or too sparse. This tool is no longer listed via ListTools and is kept only for backward compatibility.
|
|
|
|
## 🎯 Interaction
|
|
|
|
### `chrome_computer`
|
|
|
|
Unified advanced interaction tool that prioritizes high-level DOM actions with CDP fallback. Supports hover, click, drag, scroll, typing, key chords, fill, wait and screenshot. If a recent screenshot was taken via `chrome_screenshot`, coordinates are auto-scaled from screenshot space to viewport space.
|
|
|
|
Parameters:
|
|
|
|
- `action` (string, required): `left_click` | `right_click` | `double_click` | `triple_click` | `left_click_drag` | `scroll` | `type` | `key` | `fill` | `hover` | `wait` | `screenshot`
|
|
- `tabId` (number, optional): Target an existing tab by ID (default: active tab)
|
|
- `background` (boolean, optional): Avoid focusing/activating tab/window for certain operations (best-effort)
|
|
- `ref` (string, optional): element ref from `chrome_read_page` (preferred). Used for click/scroll/type/key and as drag end when provided
|
|
- `coordinates` (object, optional): `{ "x": 100, "y": 200 }` for click/scroll or drag end
|
|
- `startRef` (string, optional): element ref for drag start
|
|
- `startCoordinates` (object, optional): for `left_click_drag` when no `startRef`
|
|
- `scrollDirection` (string, optional): `up` | `down` | `left` | `right`
|
|
- `scrollAmount` (number, optional): ticks 1–10 (default 3)
|
|
- `text` (string, optional): for `type` (raw text) or `key` (space-separated chords/keys like `"cmd+a Enter"`)
|
|
- `duration` (number, optional): seconds for `wait` (max 30)
|
|
- `selector` (string, optional): for `fill` when no `ref`
|
|
- `value` (string, optional): for `fill` value
|
|
|
|
Examples:
|
|
|
|
```json
|
|
{ "action": "left_click", "coordinates": { "x": 420, "y": 260 } }
|
|
```
|
|
|
|
```json
|
|
{ "action": "key", "text": "cmd+a Backspace" }
|
|
```
|
|
|
|
````json
|
|
{ "action": "fill", "ref": "ref_7", "value": "user@example.com" }
|
|
|
|
```json
|
|
{ "action": "hover", "ref": "ref_12", "duration": 0.6 }
|
|
````
|
|
|
|
````
|
|
|
|
```json
|
|
{ "action": "left_click_drag", "startRef": "ref_10", "ref": "ref_15" }
|
|
````
|
|
|
|
### `chrome_click_element`
|
|
|
|
Click elements using a ref, selector, or coordinates.
|
|
|
|
**Parameters**:
|
|
|
|
- `ref` (string, optional): Element ref from `chrome_read_page` (preferred when available)
|
|
- `selector` (string, optional): CSS selector for target element
|
|
- `coordinates` (object, optional): `{ "x": 120, "y": 240 }` viewport coordinates
|
|
|
|
At least one of `ref`, `selector`, or `coordinates` must be provided.
|
|
|
|
**Example**:
|
|
|
|
```json
|
|
{
|
|
"ref": "ref_42"
|
|
}
|
|
```
|
|
|
|
### `chrome_fill_or_select`
|
|
|
|
Fill form fields or select options.
|
|
|
|
**Parameters**:
|
|
|
|
- `ref` (string, optional): Element ref from `chrome_read_page`
|
|
- `selector` (string, optional): CSS selector for target element
|
|
- `value` (string, required): Value to fill or select
|
|
|
|
Provide `ref` or `selector` to identify the element.
|
|
|
|
**Example**:
|
|
|
|
```json
|
|
{
|
|
"ref": "ref_7",
|
|
"value": "user@example.com"
|
|
}
|
|
```
|
|
|
|
### `chrome_keyboard`
|
|
|
|
Simulate keyboard input and shortcuts.
|
|
|
|
**Parameters**:
|
|
|
|
- `keys` (string, required): Key combination (e.g., "Ctrl+C", "Enter")
|
|
- `selector` (string, optional): Target element selector
|
|
- `delay` (number, optional): Delay between keystrokes in ms (default: 0)
|
|
|
|
**Example**:
|
|
|
|
```json
|
|
{
|
|
"keys": "Ctrl+A",
|
|
"selector": "#text-input",
|
|
"delay": 100
|
|
}
|
|
```
|
|
|
|
## 📚 Data Management
|
|
|
|
### `chrome_history`
|
|
|
|
Search browser history with filters.
|
|
|
|
**Parameters**:
|
|
|
|
- `text` (string, optional): Search text in URL/title
|
|
- `startTime` (string, optional): Start date (ISO format)
|
|
- `endTime` (string, optional): End date (ISO format)
|
|
- `maxResults` (number, optional): Maximum results (default: 100)
|
|
- `excludeCurrentTabs` (boolean, optional): Exclude current tabs (default: true)
|
|
|
|
**Example**:
|
|
|
|
```json
|
|
{
|
|
"text": "github",
|
|
"startTime": "2024-01-01",
|
|
"maxResults": 50
|
|
}
|
|
```
|
|
|
|
### `chrome_bookmark_search`
|
|
|
|
Search bookmarks by keywords.
|
|
|
|
**Parameters**:
|
|
|
|
- `query` (string, optional): Search keywords
|
|
- `maxResults` (number, optional): Maximum results (default: 100)
|
|
- `folderPath` (string, optional): Search within specific folder
|
|
|
|
**Example**:
|
|
|
|
```json
|
|
{
|
|
"query": "documentation",
|
|
"maxResults": 20,
|
|
"folderPath": "Work/Resources"
|
|
}
|
|
```
|
|
|
|
### `chrome_bookmark_add`
|
|
|
|
Add new bookmarks with folder support.
|
|
|
|
**Parameters**:
|
|
|
|
- `url` (string, optional): URL to bookmark (default: current tab)
|
|
- `title` (string, optional): Bookmark title (default: page title)
|
|
- `parentId` (string, optional): Parent folder ID or path
|
|
- `createFolder` (boolean, optional): Create folder if not exists (default: false)
|
|
|
|
**Example**:
|
|
|
|
```json
|
|
{
|
|
"url": "https://example.com",
|
|
"title": "Example Site",
|
|
"parentId": "Work/Resources",
|
|
"createFolder": true
|
|
}
|
|
```
|
|
|
|
### `chrome_bookmark_delete`
|
|
|
|
Delete bookmarks by ID or URL.
|
|
|
|
**Parameters**:
|
|
|
|
- `bookmarkId` (string, optional): Bookmark ID to delete
|
|
- `url` (string, optional): URL to find and delete
|
|
|
|
**Example**:
|
|
|
|
```json
|
|
{
|
|
"url": "https://example.com"
|
|
}
|
|
```
|
|
|
|
## 📋 Response Format
|
|
|
|
All tools return responses in the following format:
|
|
|
|
```json
|
|
{
|
|
"content": [
|
|
{
|
|
"type": "text",
|
|
"text": "JSON string containing the actual response data"
|
|
}
|
|
],
|
|
"isError": false
|
|
}
|
|
```
|
|
|
|
For errors:
|
|
|
|
```json
|
|
{
|
|
"content": [
|
|
{
|
|
"type": "text",
|
|
"text": "Error message describing what went wrong"
|
|
}
|
|
],
|
|
"isError": true
|
|
}
|
|
```
|
|
|
|
## 🔧 Usage Examples
|
|
|
|
### Complete Workflow Example
|
|
|
|
```javascript
|
|
// 1. Navigate to a page
|
|
await callTool('chrome_navigate', {
|
|
url: 'https://example.com',
|
|
});
|
|
|
|
// 2. Take a screenshot
|
|
const screenshot = await callTool('chrome_screenshot', {
|
|
fullPage: true,
|
|
storeBase64: true,
|
|
});
|
|
|
|
// 3. Start network monitoring
|
|
await callTool('chrome_network_capture_start', {
|
|
maxCaptureTime: 30000,
|
|
});
|
|
|
|
// 4. Interact with the page
|
|
await callTool('chrome_click_element', {
|
|
selector: '#load-data-button',
|
|
});
|
|
|
|
// 5. Search content semantically
|
|
const searchResults = await callTool('search_tabs_content', {
|
|
query: 'user data analysis',
|
|
});
|
|
|
|
// 6. Stop network capture
|
|
const networkData = await callTool('chrome_network_capture_stop');
|
|
|
|
// 7. Save bookmark
|
|
await callTool('chrome_bookmark_add', {
|
|
title: 'Data Analysis Page',
|
|
parentId: 'Work/Analytics',
|
|
});
|
|
```
|
|
|
|
This API provides comprehensive browser automation capabilities with AI-enhanced content analysis and semantic search features.
|