13 KiB
Cremote MCP Tools - LLM Usage Guide
This guide explains how LLMs can use the cremote MCP (Model Context Protocol) tools for web automation tasks.
Available Tools
The cremote MCP server provides ten comprehensive web automation, file transfer, and console debugging tools:
1. web_navigate_cremotemcp
Navigate to URLs and optionally take screenshots.
Parameters:
url
(required): The URL to navigate toscreenshot
(optional): Boolean, take a screenshot after navigationtab
(optional): Specific tab ID to usetimeout
(optional): Timeout in seconds (default: 5)
Example Usage:
web_navigate_cremotemcp:
url: "https://example.com"
screenshot: true
2. web_interact_cremotemcp
Interact with web elements through various actions.
Parameters:
action
(required): One of "click", "fill", "submit", "upload"selector
(required): CSS selector for the target elementvalue
(optional): Value for fill/upload actionstab
(optional): Specific tab ID to usetimeout
(optional): Timeout in seconds (default: 5)
Example Usage:
web_interact_cremotemcp:
action: "click"
selector: "button.submit"
web_interact_cremotemcp:
action: "fill"
selector: "input[name='email']"
value: "user@example.com"
3. web_extract_cremotemcp
Extract data from web pages (HTML source, element content, or JavaScript execution).
Parameters:
type
(required): One of "source", "element", "javascript"selector
(optional): CSS selector (required for "element" type)code
(optional): JavaScript code (required for "javascript" type)tab
(optional): Specific tab ID to usetimeout
(optional): Timeout in seconds (default: 5)
Example Usage:
web_extract_cremotemcp:
type: "source"
web_extract_cremotemcp:
type: "element"
selector: "div.content"
web_extract_cremotemcp:
type: "javascript"
code: "document.title"
4. web_screenshot_cremotemcp
Take screenshots of web pages.
Parameters:
output
(required): File path where screenshot will be savedfull_page
(optional): Capture full page (default: false)tab
(optional): Specific tab ID to usetimeout
(optional): Timeout in seconds (default: 5)
Example Usage:
web_screenshot_cremotemcp:
output: "/tmp/page-screenshot.png"
full_page: true
5. web_manage_tabs_cremotemcp
Manage browser tabs (open, close, list, switch).
Parameters:
action
(required): One of "open", "close", "list", "switch"tab
(optional): Tab ID (required for "close" and "switch" actions)timeout
(optional): Timeout in seconds (default: 5)
Example Usage:
web_manage_tabs_cremotemcp:
action: "open"
web_manage_tabs_cremotemcp:
action: "list"
web_manage_tabs_cremotemcp:
action: "switch"
tab: "ABC123"
6. web_iframe_cremotemcp
Switch iframe context for subsequent operations.
Parameters:
action
(required): One of "enter", "exit"selector
(optional): Iframe CSS selector (required for "enter" action)tab
(optional): Specific tab ID to usetimeout
(optional): Timeout in seconds (default: 5)
Example Usage:
web_iframe_cremotemcp:
action: "enter"
selector: "iframe#payment-form"
timeout: 10
web_iframe_cremotemcp:
action: "exit"
Note: The timeout parameter is particularly important for iframe operations as they can hang if the iframe takes time to load or if the selector doesn't match any elements.
7. file_upload_cremotemcp
Upload files from the client to the container for use in form uploads.
Parameters:
local_path
(required): Path to the file on the client machinecontainer_path
(optional): Path where to store the file in the container (defaults to /tmp/filename)
Example Usage:
file_upload_cremotemcp:
local_path: "/home/user/document.pdf"
container_path: "/tmp/upload.pdf"
file_upload_cremotemcp:
local_path: "/home/user/image.jpg"
# Will default to /tmp/image.jpg in container
8. file_download_cremotemcp
Download files from the container to the client (e.g., downloaded files from browser).
Parameters:
container_path
(required): Path to the file in the containerlocal_path
(required): Path where to save the file on the client machine
Example Usage:
file_download_cremotemcp:
container_path: "/tmp/downloaded-report.pdf"
local_path: "/home/user/Downloads/report.pdf"
9. console_logs_cremotemcp
Get console logs from the browser tab for debugging.
Parameters:
tab
(optional): Specific tab ID to useclear
(optional): Clear logs after retrieval (default: false)
Example Usage:
console_logs_cremotemcp:
clear: true
console_logs_cremotemcp:
tab: "ABC123"
clear: false
10. console_command_cremotemcp
Execute JavaScript commands in the browser console.
Parameters:
command
(required): JavaScript command to executetab
(optional): Specific tab ID to usetimeout
(optional): Timeout in seconds (default: 5)
Example Usage:
console_command_cremotemcp:
command: "console.log('Hello from MCP!')"
console_command_cremotemcp:
command: "document.querySelector('h1').textContent"
timeout: 10
Common Usage Patterns
1. Basic Web Navigation
# Navigate to a website
web_navigate_cremotemcp:
url: "https://example.com"
screenshot: true
2. Form Interaction Sequence
# 1. Navigate to the page
web_navigate_cremotemcp:
url: "https://example.com/login"
# 2. Fill username field
web_interact_cremotemcp:
action: "fill"
selector: "input[name='username']"
value: "myusername"
# 3. Fill password field
web_interact_cremotemcp:
action: "fill"
selector: "input[name='password']"
value: "mypassword"
# 4. Submit the form
web_interact_cremotemcp:
action: "submit"
selector: "form"
3. Clicking Elements
# Click a button
web_interact_cremotemcp:
action: "click"
selector: "button#submit-btn"
# Click a link
web_interact_cremotemcp:
action: "click"
selector: "a[href='/dashboard']"
Best Practices for LLMs
1. Always Start with Navigation
Before interacting with elements, navigate to the target page:
web_navigate_cremotemcp:
url: "https://target-website.com"
2. Use Specific CSS Selectors
Be as specific as possible with selectors to avoid ambiguity:
- Good:
input[name='email']
,button.primary-submit
- Avoid:
input
,button
3. Take Screenshots for Debugging
When troubleshooting or documenting, use screenshots:
web_navigate_cremotemcp:
url: "https://example.com"
screenshot: true
4. Handle Timeouts Appropriately
For slow-loading pages, increase timeout:
web_navigate_cremotemcp:
url: "https://slow-website.com"
timeout: 10
5. Sequential Operations
Perform operations in logical sequence:
- Navigate to page
- Fill required fields
- Submit forms
- Navigate to next page if needed
Error Handling
Common Error Scenarios:
- Element not found: Selector doesn't match any elements
- Timeout: Page takes too long to load or element to appear
- Navigation failed: URL is invalid or unreachable
Troubleshooting Tips:
- Verify the URL is correct and accessible
- Check CSS selectors using browser developer tools
- Increase timeout for slow-loading content
- Take screenshots to see current page state
Tab Management
The tools automatically manage browser tabs:
- If no tab is specified, a new tab is created automatically
- Tab IDs are returned in responses for reference
- Multiple tabs can be managed by specifying tab IDs
Security Considerations
Safe Practices:
- Only navigate to trusted websites
- Be cautious with form submissions
- Avoid entering sensitive information in examples
- Use screenshots sparingly to avoid exposing sensitive data
Limitations:
- Cannot bypass CAPTCHA or other anti-automation measures
- Subject to same-origin policy restrictions
- May not work with heavily JavaScript-dependent sites
Example: Complete Web Automation Task
Here's a complete example of automating a web form:
# Step 1: Navigate to the form page
web_navigate_cremotemcp:
url: "https://example.com/contact"
screenshot: true
# Step 2: Fill out the contact form
web_interact_cremotemcp:
action: "fill"
selector: "input[name='name']"
value: "John Doe"
web_interact_cremotemcp:
action: "fill"
selector: "input[name='email']"
value: "john@example.com"
web_interact_cremotemcp:
action: "fill"
selector: "textarea[name='message']"
value: "Hello, this is a test message."
# Step 3: Submit the form
web_interact_cremotemcp:
action: "submit"
selector: "form#contact-form"
# Step 4: Take a screenshot of the result
web_navigate_cremotemcp:
url: "current" # Stay on current page
screenshot: true
Example: File Upload Workflow
Here's how to upload a file and use it in a web form:
# Step 1: Upload a file from client to container
file_upload_cremotemcp:
local_path: "/home/user/resume.pdf"
container_path: "/tmp/resume.pdf"
# Step 2: Navigate to upload form
web_navigate_cremotemcp:
url: "https://jobsite.com/apply"
# Step 3: Fill out application form
web_interact_cremotemcp:
action: "fill"
selector: "input[name='name']"
value: "Jane Smith"
# Step 4: Upload the file using the container path
web_interact_cremotemcp:
action: "upload"
selector: "input[type='file']"
value: "/tmp/resume.pdf"
# Step 5: Submit the application
web_interact_cremotemcp:
action: "submit"
selector: "form.application"
Example: Download Files from Browser
Here's how to download files that the browser saves:
# Step 1: Navigate to download page
web_navigate_cremotemcp:
url: "https://example.com/reports"
# Step 2: Click download link
web_interact_cremotemcp:
action: "click"
selector: "a.download-report"
# Step 3: Wait a moment for download to complete
# (In practice, you might need to check for file existence)
# Step 4: Download the file from container to client
file_download_cremotemcp:
container_path: "/tmp/downloads/report.pdf"
local_path: "/home/user/Downloads/report.pdf"
Example: Console Debugging Workflow
Here's how to use console tools for debugging web automation:
# Step 1: Navigate to a page
web_navigate_cremotemcp:
url: "https://example.com/form"
# Step 2: Check what's in the console initially
console_logs_cremotemcp:
clear: false
# Step 3: Execute some debugging commands
console_command_cremotemcp:
command: "console.log('Starting form automation')"
console_command_cremotemcp:
command: "document.querySelectorAll('input').length"
# Step 4: Try to interact with form
web_interact_cremotemcp:
action: "fill"
selector: "input[name='email']"
value: "test@example.com"
# Step 5: Check for any console errors after interaction
console_logs_cremotemcp:
clear: false
# Step 6: Debug element selection
console_command_cremotemcp:
command: "document.querySelector('input[name=\"email\"]') ? 'Found' : 'Not found'"
# Step 7: Check element properties
console_command_cremotemcp:
command: "document.querySelector('input[name=\"email\"]').value"
Integration Notes
- Tools use the
_cremotemcp
suffix to avoid naming conflicts - Responses include success status and descriptive messages
- Screenshots are saved to
/tmp/
directory with timestamps - The underlying cremote daemon handles browser management
Advanced Usage Examples
Testing Web Applications
# Navigate to application
web_navigate_cremotemcp:
url: "https://myapp.com/login"
screenshot: true
# Test login functionality
web_interact_cremotemcp:
action: "fill"
selector: "#username"
value: "testuser"
web_interact_cremotemcp:
action: "fill"
selector: "#password"
value: "testpass"
web_interact_cremotemcp:
action: "click"
selector: "button[type='submit']"
# Verify successful login
web_navigate_cremotemcp:
url: "current"
screenshot: true
Data Extraction Workflows
# Navigate to data source
web_navigate_cremotemcp:
url: "https://data-site.com/table"
# Click through pagination or filters
web_interact_cremotemcp:
action: "click"
selector: ".filter-button"
# Take screenshot to document current state
web_navigate_cremotemcp:
url: "current"
screenshot: true
File Upload Testing
# Navigate to upload form
web_navigate_cremotemcp:
url: "https://example.com/upload"
# Upload a file
web_interact_cremotemcp:
action: "upload"
selector: "input[type='file']"
value: "/path/to/test-file.pdf"
# Submit the upload form
web_interact_cremotemcp:
action: "click"
selector: "button.upload-submit"
Tool Response Format
Both tools return structured responses:
Success Response:
"Successfully navigated to https://example.com in tab ABC123 (screenshot saved to /tmp/navigate-1234567890.png)"
Error Response:
"failed to load URL: context deadline exceeded"
CSS Selector Best Practices
Recommended Selector Types:
- ID selectors:
#unique-id
(most reliable) - Name attributes:
input[name='fieldname']
- Class combinations:
.primary.button
- Attribute selectors:
button[data-action='submit']
Avoid These Selectors:
- Generic tags:
div
,span
,input
(too broad) - Position-based:
:nth-child()
(fragile) - Text-based:
:contains()
(not standard CSS)
This documentation should help LLMs effectively use the cremote MCP tools for web automation tasks.