browser-automationdeveloper-tools

Snowfort Circuit MCP

by icefort-ai

Snowfort Circuit MCP — MCP server for AI coding agents enabling browser automation, electron automation and AI test auto

A comprehensive Model Context Protocol (MCP) server suite that enables AI coding agents to automate both web browsers and Electron desktop applications with auto-snapshots and element references.

github stars

54

29 web automation toolsAuto-snapshots after every actionCross-browser and desktop app support

best for

  • / AI agents automating web workflows
  • / Testing web applications and desktop apps
  • / Data extraction from websites and desktop software
  • / Automated UI interactions for development

capabilities

  • / Launch and control web browsers (Chromium, Firefox, WebKit)
  • / Automate Electron desktop applications
  • / Take automatic screenshots with element references
  • / Click, type, scroll, and interact with UI elements
  • / Navigate web pages and fill forms
  • / Extract data from web pages and desktop apps

what it does

Automates web browsers and Electron desktop applications through AI agents with automatic snapshots and element references. Works with Chromium, Firefox, WebKit browsers and any Electron-based desktop app.

about

Snowfort Circuit MCP is an official MCP server published by icefort-ai that provides AI assistants with tools and capabilities via the Model Context Protocol. Snowfort Circuit MCP — MCP server for AI coding agents enabling browser automation, electron automation and AI test auto It is categorized under browser automation, developer tools.

how to install

You can install Snowfort Circuit MCP in your AI client of choice. Use the install panel on this page to get one-click setup for Cursor, Claude Desktop, VS Code, and other MCP-compatible clients. This server runs locally on your machine via the stdio transport.

license

NOASSERTION

Snowfort Circuit MCP is released under the NOASSERTION license.

readme

Circuit MCP - Computer use for webapps and electron apps

License

Circuit MCP is a comprehensive Model Context Protocol (MCP) server suite that enables AI coding agents to automate both web browsers and Electron desktop applications with unparalleled precision and flexibility.

🚀 Quick Start for AI Agents

MCP Configuration

Add to your AI agent's MCP configuration file:

Web Automation Only

{
  "mcpServers": {
    "circuit-web": {
      "command": "npx",
      "args": ["@snowfort/circuit-web@latest"]
    }
  }
}

Desktop Automation Only

{
  "mcpServers": {
    "circuit-electron": {
      "command": "npx",
      "args": ["@snowfort/circuit-electron@latest"]
    }
  }
}

Complete Dual-Engine Setup (Recommended)

{
  "mcpServers": {
    "circuit-web": {
      "command": "npx",
      "args": ["@snowfort/circuit-web@latest"]
    },
    "circuit-electron": {
      "command": "npx",
      "args": ["@snowfort/circuit-electron@latest"]
    }
  }
}

First Commands

Once configured, your AI agent can immediately start automating:

// Launch browser with optimized AI settings
browser_launch({
  "compressScreenshots": true,
  "screenshotQuality": 50
})
browser_navigate({"sessionId": "...", "url": "https://github.com"})
// Auto-snapshot included in response!

// Launch and control any Electron app
app_launch({"app": "/Applications/Visual Studio Code.app"})
click({"sessionId": "...", "selector": "button[title='New File']"})

✨ Features

🌐 Web Automation (29 Tools)

  • Cross-Browser Support: Chromium, Firefox, WebKit
  • 🎯 AI-Optimized Snapshots: Auto-snapshots with element references after every action
  • 📸 Smart Screenshot Compression: JPEG compression for faster AI workflows (configurable)
  • Complete Interaction Set: Click, type, hover, drag, scroll with auto-context
  • 🖱️ Multi-Tab Management: Create, switch, list, and close browser tabs
  • 📊 Network & Console Monitoring: Real-time request tracking and console capture
  • Advanced Input: File uploads, dropdown selection, keyboard shortcuts
  • Content Extraction: HTML content, text content, accessibility trees with element refs
  • Visual Capture: Compressed screenshots, PDF generation
  • Navigation: History control, page reload, URL navigation
  • Dialog Handling: Automatic alert/confirm/prompt management
  • Browser Control: Viewport resizing, window management
  • 🧪 Test Generation: Auto-generate Playwright test code from recorded actions
  • JavaScript Execution: Run custom scripts in page context
  • Smart Waiting: Element appearance, network idle, page load states

🖥️ Desktop Automation (32 Tools)

  • 🎯 AI-Optimized Desktop Control: Launches and controls Electron apps with auto-snapshots
  • 📸 Smart Screenshot Compression: JPEG compression for faster AI workflows (configurable)
  • 🔧 Development Mode Support: Launch apps during development with auto-detection
  • Universal Electron Support: Any Electron application (packaged or development)
  • Multi-Window Management: Control multiple app windows simultaneously
  • IPC Communication: Direct inter-process communication with apps
  • Native File System: Read/write files directly
  • Enhanced Targeting: Role-based clicks, nth element selection, text-based targeting
  • Accessibility-First: Built-in accessibility tree navigation with element refs
  • State Management: Advanced page state waiting and monitoring
  • 🐛 Console & Network Monitoring: Capture application logs and network requests for debugging
  • All Web Tools: Every web automation tool works in desktop context

🔧 Architecture Benefits

  • 🤖 AI-First Design: Auto-snapshots, element references, and compressed images for optimal AI workflows
  • Runtime App Selection: Specify Electron apps at tool call time, not startup
  • Session Management: Multiple concurrent automation sessions with full isolation
  • Type Safety: Full TypeScript support with comprehensive type definitions
  • Error Handling: Robust error reporting and recovery
  • Performance Optimized: Efficient resource usage and fast execution

📚 Complete Tool Reference

🌐 Web Tools

ToolDescriptionKey Parameters
browser_launchLaunch browser with AI optimizationsbrowser, headed, viewport, compressScreenshots, screenshotQuality
browser_navigateNavigate to URL (includes auto-snapshot)sessionId, url
browser_resizeResize browser viewportsessionId, width, height
browser_handle_dialogSet dialog auto-responsesessionId, action, promptText
browser_tab_newCreate new browser tabsessionId
browser_tab_listList all open tabssessionId
browser_tab_selectSwitch to specific tabsessionId, tabId
browser_tab_closeClose specific tabsessionId, tabId
browser_network_requestsGet network request historysessionId
browser_console_messagesGet console message historysessionId
browser_generate_playwright_testGenerate test code from actionssessionId
clickClick element (includes auto-snapshot)sessionId, selector, windowId
typeType text (includes auto-snapshot)sessionId, selector, text, windowId
hoverHover over element (includes auto-snapshot)sessionId, selector, windowId
dragDrag element to targetsessionId, sourceSelector, targetSelector
keyPress keyboard key (includes auto-snapshot)sessionId, key, windowId
selectSelect dropdown optionsessionId, selector, value
uploadUpload file to inputsessionId, selector, filePath
backNavigate back in historysessionId
forwardNavigate forward in historysessionId
refreshReload current pagesessionId
screenshotTake compressed screenshotsessionId, path
snapshotGet accessibility tree with element refssessionId
pdfGenerate PDF of pagesessionId, path
contentGet HTML contentsessionId
text_contentGet visible textsessionId
evaluateExecute JavaScriptsessionId, script
wait_for_selectorWait for elementsessionId, selector, timeout
closeClose browser sessionsessionId

🖥️ Electron Tools

ToolDescriptionKey Parameters
app_launchLaunch Electron app with AI optimizationsapp, mode, projectPath, startScript, disableDevtools, compressScreenshots, screenshotQuality
get_windowsList windows with type identificationsessionId
ipc_invokeCall IPC methodsessionId, channel, args
fs_write_fileWrite file to disksessionId, filePath, content
fs_read_fileRead file from disksessionId, filePath
keyboard_pressPress key with modifierssessionId, key, modifiers
click_by_textClick element by textsessionId, text, exact
click_by_roleClick by accessibility rolesessionId, role, name
click_nthClick nth matching elementsessionId, selector, index
keyboard_typeType with delaysessionId, text, delay
add_locator_handlerHandle modals/popupssessionId, selector, action
wait_for_load_stateWait for page statesessionId, state
smart_clickSmart click with auto-detection (refs/text/CSS)sessionId, target, strategy, windowId
browser_console_messagesGet console logs from Electron appsessionId
browser_network_requestsGet network requests from Electron appsessionId
+ Shared Web ToolsCore web tools: click, type, screenshot, evaluate, etc.

💡 Usage Examples

Web Automation Workflows

AI-Optimized Browser Launch

// Launch with optimal AI settings
const session = await browser_launch({
  "compressScreenshots": true,
  "screenshotQuality": 50,
  "headed": false
})

// Navigation automatically includes page snapshot with element refs
await browser_navigate({
  "sessionId": session.id, 
  "url": "https://github.com"
})
// Response includes auto-snapshot with element references like ref="e1", ref="e2"

Multi-Tab Workflow

// Create and manage multiple tabs
const session = await browser_launch({})
await browser_navigate({"sessionId": session.id, "url": "https://github.com"})

const newTabId = await browser_tab_new({"sessionId": session.id})
await browser_tab_select({"sessionId": session.id, "tabId": newTabId})
await browser_navigate({"sessionId": session.id, "url": "https://stackoverflow.com"})

const tabs = await browser_tab_list({"sessionId": session.id})
// Shows all tabs with titles, URLs, and active status

Element Targeting with References

// Navigate and get element references
await browser_navigate({"sessionId": session.id, "url": "https://example.com"})
// Auto-snapshot response includes:
// {"role": "button", "name": "Sign In", "ref": "e5"}

// Click using standard selector (auto-snapshot included)
await click({"sessionId": session.id, "selector": "button:has-text('Sign In')"})
// Response includes updated page snapshot showing interaction result

Network and Console Monitoring

// Monitor page activity
await browser_navigate({"sessionId": session.id, "url": "https://api-heavy-site.com"})
const requests = await browser_network_requests({"sessionId": session.id})
const consoleMessages = await browser_console_messages({"sessionId": session.id})

// Generate test code from actions
const testCode =

---