agenteyes-mcp
README.md
# agenteyes-mcp
A Node.js MCP server (stdio transport) exposing agent tools backed by headless Chromium. One tool call returns screenshot PNG(s), an accessibility snapshot, and page text — **eyes for agents**.
## Requirements
- Node.js **20+**
- On first install, Playwright downloads the Chromium headless shell (`postinstall` script)
## Install and run
```bash
npx agenteyes-mcp@0.1.0
```
Or from a clone:
```bash
git clone https://github.com/tech-lead-bunny/agenteyes-mcp.git
cd agenteyes-mcp
npm install
node index.js
```
The process speaks MCP over **stdio**; connect it from an MCP host (Claude Desktop, Cursor, etc.).
## Tools
| Tool | Description |
|------|-------------|
| `screenshot_url` | Open a public `http`/`https` URL; return PNG screenshot(s), accessibility tree, and visible text |
| `get_page_text` | Same page context without screenshots (title, a11y, text) |
### `screenshot_url` parameters
- `url` (required) — public http(s) URL
- `full_page` (optional, default `false`) — capture full scroll height
- `segment_height` (optional, default `0`) — when `full_page` is true and the page is taller than this value, capture **stacked** viewport PNGs of this height (top to bottom), then one combined accessibility + text block
- `width` / `height` (optional) — viewport size (defaults 1280×720)
### Security (SSRF)
URLs are checked **before navigation** and again on the **final URL after redirects**:
- Only `http:` and `https:`
- DNS resolution must not point at private/local addresses (localhost, loopback, RFC1918, link-local `169.254.0.0/16`, `fe80::/10`, `::1`, IPv4-mapped IPv6, etc.)
## Claude Desktop
Add to `claude_desktop_config.json`:
```json
{
"mcpServers": {
"agenteyes": {
"command": "npx",
"args": ["-y", "agenteyes-mcp@0.1.0"]
}
}
}
```
## Cursor
In **Cursor Settings → MCP**, add a stdio server:
```json
{
"mcpServers": {
"agenteyes": {
"command": "npx",
"args": ["-y", "agenteyes-mcp@0.1.0"]
}
}
}
```
Or use a local path after `npm install` in this repo:
```json
{
"mcpServers": {
"agenteyes": {
"command": "node",
"args": ["/absolute/path/to/agenteyes-mcp/index.js"]
}
}
}
```
## Example prompt
> Use the `screenshot_url` tool on `https://example.com` with `full_page: true`. Summarize the page title and main message from the returned text, and describe what you see in the screenshot.
## Limits (v0)
- **No hosted API** — run the MCP server locally (or wherever your host spawns it)
- **No authentication or rate limiting** in the server itself
- **Public URLs only** — private networks and metadata endpoints are blocked
- **Chromium only** — no Firefox/WebKit; no persistent login sessions between calls
- **One browser process, one page per tool call** — pages are always closed after each call
- **Best-effort rendering** — heavy SPAs, infinite scroll, or bot blocking may produce incomplete captures
- **Segmented full-page capture** returns multiple PNGs (not a single stitched image)
## MCP registry
- **[mcp.so](https://mcp.so)** — primary listing target; submission to the registry is planned once `0.1.0` is on npm.
- **[awesome-mcp](https://github.com/punkpeye/awesome-mcp-servers)** — PR to add `agenteyes-mcp` planned the same week as the npm publish.
## License
MIT — see [LICENSE](LICENSE).
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues