Token-efficient browser automation MCP for AI agents, with semantic page snapshots and stable element IDs.
Drift inferred · capture-to-capture
- HIGH code analysis flagged dynamic code execution in lespaceman/agent-web-interface
transport stdio · streamable-http · http counts 1 tools · 0 res
· 0 prompts
permission surface via code analysis
tools
-
ping
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit 6f0b708 · analyzer v28 · 1d ago
skills & prompt files 3
danger signals1
- dynamic code execution eval() drisplabs-browser-mcp-6f0b708/tests/unit/observation/observer-script.test.ts :65
eval(extractedFunction);
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 280
filesystem 9
- fs drisplabs-browser-mcp-6f0b708/src/browser/browser-session-config.ts :20
import { mkdirSync } from 'node:fs'; - fs drisplabs-browser-mcp-6f0b708/src/browser/connection-utils.ts :11
import fs from 'node:fs'; - fs drisplabs-browser-mcp-6f0b708/src/browser/session-manager.ts :8
import fs from 'node:fs'; - fs drisplabs-browser-mcp-6f0b708/src/install/config-io.ts :1
import { readFile, writeFile, rename, copyFile, stat, mkdir } from 'node:fs/promises'; - fs drisplabs-browser-mcp-6f0b708/src/install/skill-source.ts :1
import { readFile } from 'node:fs/promises'; - fs drisplabs-browser-mcp-6f0b708/src/lib/temp-file.ts :8
import { writeFile, unlink } from 'fs/promises'; - fs drisplabs-browser-mcp-6f0b708/src/non-dom/file-path-validator.ts :8
import fs from 'node:fs'; - fs drisplabs-browser-mcp-6f0b708/src/shared/version.ts :10
import { readFileSync } from 'node:fs'; - fs drisplabs-browser-mcp-6f0b708/src/worker/chrome-worker-process.ts :10
import { existsSync } from 'fs';
shell / exec 1
- shell drisplabs-browser-mcp-6f0b708/src/worker/chrome-worker-process.ts :8
import { spawn, type ChildProcess } from 'child_process';
network 4
- net drisplabs-browser-mcp-6f0b708/src/http-entry.ts :16
import http from 'node:http'; - net drisplabs-browser-mcp-6f0b708/src/worker/chrome-worker-process.ts :349
const response = await fetch(`http://127.0.0.1:${this.port}/json/version`, { - net drisplabs-browser-mcp-6f0b708/src/worker/health-monitor.ts :279
const response = await fetch(url, { - net drisplabs-browser-mcp-6f0b708/src/worker/port-allocator.ts :8
import { createServer } from 'net';
tool registrations 1
- ping drisplabs-browser-mcp-6f0b708/src/server/mcp-server.ts :88
install hooks 1
- prepare drisplabs-browser-mcp-6f0b708/package.json :15
husky
declared dependencies 24
- @modelcontextprotocol/sdk@^1.25.2
- @clack/prompts@^1.5.1
- @mozilla/readability@^0.6.0
- chrome-remote-interface@^0.33.3
- express@^5.2.1
- jsdom@^27.4.0
- puppeteer-core@^24.36.1
- zod@^3.25.0
- @eslint/js@^9.39.0
- @types/chrome-remote-interface@^0.33.0
- @types/eslint__js@^8.42.3
- @types/express@^5.0.6
- @types/jsdom@^28.0.0
- @types/node@^20.19.0
- @vitest/coverage-v8@^4.0.17
- eslint@^9.39.0
- eslint-config-prettier@^10.1.8
- eslint-plugin-prettier@^5.5.4
- husky@^9.1.7
- lint-staged@^16.4.0
- prettier@^3.7.0
- typescript@^5.0.0
- typescript-eslint@^8.53.0
- vitest@^4.0.17