A side-by-side look at the Ui Annotator MCP and Real Browser MCP MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose Ui Annotator MCP for browser automation work as a local process; choose Real Browser MCP for browser automation as a local process. You can also run both side by side in one mcpServers block.
UI_ANNOTATOR_PORT.annotate, get_elements, highlight_element.browser_navigate, browser_click, browser_type.Rows where the two servers differ are marked.
| Spec | ||
|---|---|---|
| Category | Browser Automation | Browser Automation |
| Quality signal | 60/100 · Good | 68/100 · Great |
| Install command | Confirmed | Confirmed |
| Transport | Local subprocess (stdio) | Local subprocess (stdio) |
| Auth | No auth required | No auth required |
| Pricing | Free | Free |
| Required env vars | UI_ANNOTATOR_PORT | None listed |
| Verified owner | Community listing | Community listing |
| GitHub stars | 21 | 56 |
| Directory activity | 2 views 0 installs 0 upvotes | 5 views 0 installs 0 upvotes |
| Tools | 5 | 18 |
| Full listing | View Ui Annotator MCP | View Real Browser MCP |
annotateOpen a web page with hover annotations. Returns a proxy URL that adds interactive element labels to any page. User opens this URL in any browser to see annotations on hover.get_elementsGet all UI elements detected on the currently annotated page. Returns element names, CSS selectors, positions, and sizes. Use this to understand what the user is referring to when they describe a UI element.highlight_elementBriefly flash-highlight a specific element on the page so the user can see which element you are referring to. Useful for confirming "do you mean this element?"rescan_elementsForce the annotated page to rescan all UI elements. Use this after the page content has changed (e.g. after navigation, DOM updates, or user interaction).inspect_modeToggle inspect mode on the annotated page. When ON, the user can click any element to copy its name. When OFF, the page behaves normally. Use this to help the user copy element names for communicating design changes.browser_navigateNavigate to a URL in the active browser tabbrowser_clickClick an element on the page using a ref from snapshot or a CSS selectorbrowser_typeType text into an input elementbrowser_scrollScroll the page or an element. Supports pixel offsets, scrolling to elements, and named positions (top/bottom). Works with virtual scroll containers used by social media sites.browser_press_keyPress a keyboard key or combination (Enter, Escape, Tab, ArrowDown, etc). Supports modifiers like Ctrl+A, Cmd+C.browser_waitWait for a condition: element to appear, element to disappear, or a fixed delay. Useful for SPAs and dynamic content.browser_snapshotGet an accessibility tree snapshot of the page. Returns element refs you can use with click, type, and other tools. Use compact mode (default) for smaller output - only interactive elements.browser_screenshotCapture a screenshot of the visible page areabrowser_consoleRead console messages (log, warn, error) from the browserbrowser_networkRead network requests made by the page. Filter by URL pattern.browser_tabsManage browser tabs: list, create, close, or focusbrowser_findFind elements on the page using natural language (e.g. "login button", "search input"). Returns refs you can use with click/type.Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
{
"mcpServers": {
"mcpware-ui-annotator-mcp": {
"command": "npx",
"args": [
"-y",
"@mcpware/ui-annotator"
],
"env": {
"UI_ANNOTATOR_PORT": "YOUR_UI_ANNOTATOR_PORT_HERE"
}
}
}
}
{
"mcpServers": {
"ofershap-real-browser-mcp": {
"command": "npx",
"args": [
"-y",
"real-browser-mcp"
]
}
}
}