| name | kogiqa-mcp-browser-automation |
| description | MCP server for browser automation using natural language through kogiQA, enabling AI agents to interact with web pages without selectors |
| triggers | ["automate a web browser","interact with a webpage using kogiqa","test a web application with browser automation","navigate and click elements on a page","fill out web forms automatically","scrape content from a website","debug web applications with browser control","automate web testing tasks"] |
kogiQA MCP Browser Automation
Skill by ara.so — MCP Skills collection.
Overview
kogiQA MCP is a Model Context Protocol server that provides browser automation capabilities using the kogiQA browser control algorithm. Unlike traditional automation tools, it enables AI agents to interact with web pages through natural language commands without requiring CSS selectors or XPath expressions. This approach saves tokens and simplifies web automation workflows.
Key advantages:
- No selector required — interact with elements using natural language descriptions
- Built on Playwright for robust browser automation
- Works with any MCP-compatible client (Claude Desktop, Cursor, VS Code, etc.)
- Lightweight and easy to install
Installation
Quick Install
The fastest way to install is using npx:
npx kogiqa-mcp@latest
Claude Code
claude mcp add kogiqa-browser npx kogiqa-mcp@latest
VS Code / VS Code Insiders
Install via CLI:
code --add-mcp '{"name":"kogiqa-browser","command":"npx","args":["kogiqa-mcp@latest"]}'
Or add manually to your MCP settings (settings.json):
{
"mcp.servers": {
"kogiqa-browser": {
"command": "npx",
"args": ["kogiqa-mcp@latest"]
}
}
}
Cursor
Add to Cursor Settings → MCP → Add new MCP Server:
{
"kogiqa-browser": {
"command": "npx",
"args": ["kogiqa-mcp@latest"]
}
}
Standard MCP Configuration
For Claude Desktop, Windsurf, Goose, or other MCP clients, add to your MCP configuration file:
{
"mcpServers": {
"kogiqa-browser": {
"command": "npx",
"args": ["kogiqa-mcp@latest"]
}
}
}
Configuration file locations:
- Claude Desktop (macOS):
~/Library/Application Support/Claude/claude_desktop_config.json
- Claude Desktop (Windows):
%APPDATA%\Claude\claude_desktop_config.json
- Cursor:
.cursor/config.json in your project or user settings
- VS Code: User or workspace settings
Available Tools
Once installed, the MCP server provides several tools for browser automation:
kogiqa_navigate
Navigate to a URL.
Parameters:
url (string, required): The URL to navigate to
Example usage:
kogiqa_navigate({ url: "https://example.com" })
kogiqa_click
Click on an element using natural language description.
Parameters:
description (string, required): Natural language description of the element to click
Example usage:
kogiqa_click({ description: "the blue login button" })
kogiqa_click({ description: "submit button at the bottom" })
kogiqa_click({ description: "first link in the navigation menu" })
kogiqa_type
Type text into an input field.
Parameters:
description (string, required): Natural language description of the input field
text (string, required): Text to type
Example usage:
kogiqa_type({
description: "email input field",
text: "user@example.com"
})
kogiqa_type({
description: "search box at the top",
text: "kogiQA MCP"
})
kogiqa_get_content
Extract content from the current page.
Returns: HTML or text content of the page
Example usage:
kogiqa_get_content()
kogiqa_screenshot
Take a screenshot of the current page.
Returns: Base64-encoded PNG image
Example usage:
kogiqa_screenshot()
kogiqa_close
Close the browser instance.
Example usage:
kogiqa_close()
Common Patterns
Login Flow Automation
await kogiqa_navigate({ url: "https://app.example.com/login" });
await kogiqa_type({
description: "username field",
text: process.env.USERNAME
});
await kogiqa_type({
description: "password field",
text: process.env.PASSWORD
});
await kogiqa_click({ description: "login button" });
const content = await kogiqa_get_content();
Form Submission
await kogiqa_navigate({ url: "https://example.com/contact" });
await kogiqa_type({ description: "name input", text: "John Doe" });
await kogiqa_type({ description: "email input", text: "john@example.com" });
await kogiqa_type({ description: "message textarea", text: "Hello!" });
await kogiqa_click({ description: "send button" });
Web Scraping
await kogiqa_navigate({ url: "https://example.com/products" });
const content = await kogiqa_get_content();
const screenshot = await kogiqa_screenshot();
Multi-Step Navigation
await kogiqa_navigate({ url: "https://example.com" });
await kogiqa_click({ description: "products menu item" });
await kogiqa_click({ description: "first product card" });
await kogiqa_click({ description: "add to cart button" });
await kogiqa_click({ description: "checkout button" });
const screenshot = await kogiqa_screenshot();
Testing with Verification
await kogiqa_navigate({ url: "https://app.example.com/dashboard" });
const before = await kogiqa_screenshot();
await kogiqa_click({ description: "settings button" });
const content = await kogiqa_get_content();
const after = await kogiqa_screenshot();
await kogiqa_close();
Configuration Options
Headless Mode
By default, kogiQA MCP runs in headless mode. To run with a visible browser (useful for debugging), set environment variables:
{
"mcpServers": {
"kogiqa-browser": {
"command": "npx",
"args": ["kogiqa-mcp@latest"],
"env": {
"HEADLESS": "false"
}
}
}
}
Browser Type
Specify browser (chromium, firefox, webkit):
{
"mcpServers": {
"kogiqa-browser": {
"command": "npx",
"args": ["kogiqa-mcp@latest"],
"env": {
"BROWSER_TYPE": "firefox"
}
}
}
}
Troubleshooting
Server Not Starting
Issue: MCP server fails to start or connect
Solutions:
- Ensure Node.js 20+ is installed:
node --version
- Clear npm cache:
npm cache clean --force
- Try installing globally:
npm install -g kogiqa-mcp@latest
- Check MCP configuration syntax in your client's config file
Browser Launch Failures
Issue: Browser fails to launch or crashes
Solutions:
- Install Playwright browsers:
npx playwright install
- Check for system dependencies:
npx playwright install-deps
- Try different browser: Set
BROWSER_TYPE=firefox or webkit
- Disable headless mode for debugging:
HEADLESS=false
Element Not Found
Issue: kogiqa cannot find described element
Solutions:
- Be more specific in element descriptions: "blue submit button at bottom right"
- Include context: "search input in the header"
- Wait for page to load: Get content first to verify page state
- Take screenshot to see current page state
Timeouts
Issue: Operations timeout waiting for elements
Solutions:
- Ensure page has fully loaded before interacting
- Use more specific element descriptions
- Check if element is hidden or covered by other elements
- Verify the element actually exists using
kogiqa_get_content
Permission Issues
Issue: Browser automation blocked by website
Solutions:
- Some sites block automation; this is expected behavior
- Check site's terms of service for automation policies
- Consider adding delays between actions
- Use stealth mode if available in future versions
Best Practices
- Descriptive element references: Be specific but natural ("red delete button in the sidebar" not just "button")
- Verify page state: Use
kogiqa_get_content to confirm page loaded before interacting
- Handle secrets properly: Use environment variables, never hardcode credentials
- Close browsers: Call
kogiqa_close when done to free resources
- Progressive navigation: Navigate step-by-step rather than assuming page state
- Take screenshots: Use for debugging and verification of automation flows
- Natural language: Write descriptions as you would explain to a human
Resources