Atlas / MCP servers / buyitsydney / CodingBaby Browser

CodingBaby BrowserBLOCK

mcp/buyitsydney/codingbaby-browser

MCP Server allowing AI agents to control Google Chrome via the CodingBaby Extension

Verdict
BLOCK
Grade
F
Trust score
57 /100
Exposed tools
15 12r · 3w · 0d
Transport
stdio
License
—
Stars
29
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

Overview

CodingBaby-Browser-MCP is a powerful tool that enables AI assistants like Claude 3.7 Sonnet in Cursor to control Chrome browser for automated tasks. This tool bridges the gap between AI and web browser interaction through a WebSocket-based communication protocol.

Features

  • Browser Automation: Control Chrome browser programmatically to navigate websites, fill forms, and perform clicks
  • Screenshot Capture: Take screenshots of entire pages or specific areas
  • Multi-tab Support: Create, list, select, and close browser tabs
  • Form Interaction: Type text, press keys, and select form elements
  • Batch Commands: Execute multiple browser operations in sequence
  • Viewport Control: Adjust browser window size for responsive testing

Architecture

The project consists of two main components:

  1. MCP Tool Server: A Node.js server that implements the Model Context Protocol (MCP) to communicate with AI assistants in Cursor
  2. Chrome Extension: A browser extension that receives commands from the MCP server and controls the browser

The system uses WebSocket (port 9876 by default) to establish a bidirectional communication channel between the MCP server and the Chrome extension.

Installation

Prerequisites

  • Node.js (v14 or higher)
  • Chrome browser
  • Cursor editor with Claude 3.7 Sonnet

MCP Tool Setup

  1. In Cursor, go to Settings → MCP
  2. Add new global MCP server with the following configuration:
{
"mcpServers": {
"CodingBaby-Browser-MCP": {
"command": "npx",
"args": ["@sydneyassistent/codingbaby-browser-mcp"]
}
}
}

Chrome Extension Setup

  1. Install the CodingBaby Extension from the Chrome Web Store
  2. Enable the extension and ensure it has the necessary permissions

Usage

Once installed, you can ask Claude 3.7 in Cursor to control your browser:

Use the browser to navigate to https://example.com

Available Commands

  • navigate: Open
Read from source at commit ca7ff34b10c0OBSERVED · 2026-10-08
Advertisement
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control.

claude-code
claude mcp add codingbaby-browser-mcp -- npx -y @sydneyassistent/[email protected]
claude-desktop
{
  "mcpServers": {
    "codingbaby-browser-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@sydneyassistent/[email protected]"
      ]
    }
  }
}
03

Exposed tools (15)

12 read · 3 write · 0 destructive.

ToolRiskDescription
area_screenshotreadTake a screenshot of a specific area of the current page
batchwriteExecute a batch of browser operations in sequence. This powerful tool allows combining multiple actions (click, type, press_key, etc.) into a single command, reducing round-trip time. Ideal for form filling, search operations, and simple navigation sequences.
clickreadPerform click on a web page
closereadClose the browser
navigatereadNavigate to a URL
press_keyreadPress a key or key combination on the keyboard
save_htmlwriteSave the current page HTML to a file
scrollreadScroll the page in a specified direction
set_viewportwriteSet the viewport configuration of the browser
tab_closereadClose a tab
tab_listreadList browser tabs
tab_newreadOpen a new tab
tab_selectreadSelect a tab by index
typereadType text into focused element
waitreadWait for a specified number of seconds, with a screenshot of the current page state after waiting
04

Trust audit

BLOCKgrade F · trust 57/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeFAIL
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
none-observed
Network
declared (5 observation(s))
Shell
declared (3 observation(s))
Dependencies
not all pinned
Secrets in source
none-found

Findings (10)

HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
Browser-MCP/chrome-client.js:25
exec(command, async (error, stdout, stderr) => {
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
Browser-MCP/chrome-client.js:48
exec(`taskkill /F /PID ${pid}`, (err) => {
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
Browser-MCP/chrome-client.js:78
exec(`kill -9 ${pid}`, (err) => {
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
MEDIUMObfuscation / stealth · obf.base64_blob · CWE-506, CWE-94
chrome-extension/background.js:153
return "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/wAALCAABAAEBAREA/8QAFAABAAAAAAAAAAAAAAAAAAAACf/EA
MEDIUMObfuscation / stealth · obf.base64_blob · CWE-506, CWE-94
chrome-extension/background.js:185
"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/wAALCAABAAEBAREA/8QAFAABAAAAAAAAAAAAAAAAAAAACf/EABQQAQAA
MEDIUMObfuscation / stealth · obf.base64_blob · CWE-506, CWE-94
chrome-extension/background.js:206
"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/wAALCAABAAEBAREA/8QAFAABAAAAAAAAAAAAAAAAAAAACf/EABQQAQAA
MEDIUMObfuscation / stealth · obf.base64_blob · CWE-506, CWE-94
chrome-extension/background.js:222
"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/wAALCAABAAEBAREA/8QAFAABAAAAAAAAAAAAAAAAAAAACf/EABQQAQAA
LOWInventory / provenance · inv.no_license · CWE-1104
Why it matters. no LICENSE file and no repo licence
Fix. add a licence
LOWObfuscation / stealth · obf.decode_call · CWE-506, CWE-94
chrome-extension/background.js:242
const byteString = atob(dataUrl.split(",")[1])
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
Browser-MCP/package.json
@modelcontextprotocol/sdk, fs-extra, ws, zod
Why it matters. 4 dependency range(s) float
Fix. pin exact versions or ship a lockfile

Gates applied: no_behavioural_pass, no_license.

Audited 2026-10-08 · audit v0.4.1 · source sha ca7ff34b10c0full audit observations/trust-audit/mcp-server/buyitsydney__codingbaby-browser.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-08ca7ff34b10c0BLOCKF57first audit
06

Questions

What is the CodingBaby Browser MCP server?

MCP Server allowing AI agents to control Google Chrome via the CodingBaby Extension

What tools does CodingBaby Browser expose?

15 in total: 12 read-only, 3 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.

Is CodingBaby Browser safe to connect to an agent?

No — not without reading the findings first. The audit graded it F (57/100) and found 3 critical or high issues in the source. Each one is listed on this page with the file and line it is on.

What credentials does CodingBaby Browser need?

No credential environment variables were found in its source, so it appears to need none.

How does CodingBaby Browser run?

It speaks stdio, so it runs as a local process your client starts. It is published on npm as @sydneyassistent/codingbaby-browser-mcp at 1.1.6.

How current is this page?

The grade is for one exact copy of the source (ca7ff34b10c0), read on 2026-10-08. The repository is watched and re-audited when it changes.

Advertisement