agenteyes-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@agenteyes-mcpTake a full-page screenshot of https://example.com and summarize the page."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 (
postinstallscript)
Related MCP server: rasterly-mcp
Install and run
npx agenteyes-mcp@0.1.0Or from a clone:
git clone https://github.com/tech-lead-bunny/agenteyes-mcp.git
cd agenteyes-mcp
npm install
node index.jsThe process speaks MCP over stdio; connect it from an MCP host (Claude Desktop, Cursor, etc.).
Tools
Tool | Description |
| Open a public |
| Same page context without screenshots (title, a11y, text) |
screenshot_url parameters
url(required) — public http(s) URLfull_page(optional, defaultfalse) — capture full scroll heightsegment_height(optional, default0) — whenfull_pageis true and the page is taller than this value, capture stacked viewport PNGs of this height (top to bottom), then one combined accessibility + text blockwidth/height(optional) — viewport size (defaults 1280×720)
Security (SSRF)
URLs are checked before navigation and again on the final URL after redirects:
Only
http:andhttps: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:
{
"mcpServers": {
"agenteyes": {
"command": "npx",
"args": ["-y", "agenteyes-mcp@0.1.0"]
}
}
}Cursor
In Cursor Settings → MCP, add a stdio server:
{
"mcpServers": {
"agenteyes": {
"command": "npx",
"args": ["-y", "agenteyes-mcp@0.1.0"]
}
}
}Or use a local path after npm install in this repo:
{
"mcpServers": {
"agenteyes": {
"command": "node",
"args": ["/absolute/path/to/agenteyes-mcp/index.js"]
}
}
}Example prompt
Use the
screenshot_urltool onhttps://example.comwithfull_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 — primary listing target; submission to the registry is planned once
0.1.0is on npm.awesome-mcp — PR to add
agenteyes-mcpplanned the same week as the npm publish.
License
MIT — see LICENSE.
Available Tools
2 toolsget_page_textA
Open a URL in headless Chromium and return the page title, accessibility snapshot, and visible text (no screenshot).
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Public http(s) URL to open in headless Chromium |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It usefully discloses the rendering path (headless Chromium) and what is omitted (no screenshot), but says nothing about JS execution, load/wait behavior, timeouts, network restrictions, or whether the fetch is read-only and side-effect free.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler: verb, mechanism, and return payload in order of importance. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly enumerates the return fields (title, accessibility snapshot, visible text), which is the key missing structured information. It is complete enough to invoke correctly, though behavioral context like timeouts and JS handling is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single url parameter, and the description adds no format or syntax detail beyond what the schema already states (public http(s) URL). Baseline 3 applies when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (open), resource (URL), rendering mechanism (headless Chromium), and exactly what is returned (title, accessibility snapshot, visible text). The parenthetical '(no screenshot)' explicitly distinguishes it from the sibling screenshot_url.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The '(no screenshot)' clause effectively tells the agent when to pick this over screenshot_url, i.e. when textual/page content is wanted rather than an image. However it never names the sibling or states a positive selection condition, so the routing is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
screenshot_urlB
Open a URL in headless Chromium and return PNG screenshot(s), an accessibility snapshot, and visible page text.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Public http(s) URL to open in headless Chromium | |
| width | No | Viewport width in pixels | |
| height | No | Viewport height in pixels (ignored per segment when segmented full_page capture runs) | |
| full_page | No | Capture the full scrollable page height instead of the viewport only | |
| segment_height | No | When full_page is true and content exceeds this height (px), capture stacked viewport screenshots of this height |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It usefully discloses the rendering engine (headless Chromium) and the multi-artifact return shape, but says nothing about failure modes, timeouts, redirect handling, or authentication constraints beyond the schema's 'Public http(s) URL' hint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence naming the action and the outputs, with no filler. It is appropriately sized, though the terse artifact list leaves room that brief scoping language could have used productively.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description must cover both behavior and returns; it names the three return types, which helps, but omits error behavior and how its text output relates to get_page_text. Adequate but with clear gaps for a 5-parameter rendering tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and each of the five parameters is documented in the schema, including the interaction between full_page and segment_height. The description adds no parameter detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (open a URL in headless Chromium) and enumerates the three return artifacts, which is concrete and informative. It does not differentiate itself from the sibling get_page_text even though it admits to returning visible page text — the overlap is left for the agent to resolve.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus get_page_text, despite a clear overlap in returned content. No mention of prerequisites such as network access, target reachability, or suitability for rendering-heavy pages.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
v0.1.0- First observed
get_page_text - First observed
screenshot_url
TDQS
Scored across 2 tools
The two tools are mostly distinct: screenshot_url includes screenshots, while get_page_text does not. However, both return accessibility snapshots and visible text, creating some overlap that could lead to arbitrary selection when only text/snapshot is needed.
Both names use snake_case, but verb patterns are inconsistent: 'screenshot' acts as a verb/noun, while 'get_page_text' uses the verb 'get'. The mix is readable but not a predictable pattern.
Two tools is thin for a web content extraction service. While each tool has a role, the surface feels minimal and could benefit from additional focused tools (e.g., raw HTML, links).
Core capabilities (screenshot and text/snapshot) are covered, but notable gaps exist: no way to retrieve raw HTML, page links, or interact with the page. Agents may hit dead ends for structured data extraction.
Maintenance
Related MCP Connectors
Hosted browser for agents: open pages, search the web, extract data, read PDFs and take screenshots.
Read a URL as clean markdown, screenshot a website, url to PDF. Web access for agents, no signup.
Screenshot any URL/HTML as PNG/JPEG/WebP, or read it as clean Markdown/text for LLMs.
Hosted browser for AI agents: screenshots, post-JS DOM, console, WCAG. No install, no API key.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables agents to take screenshots and extract text from web pages using a persistent Chrome browser via CDP, with built-in SSRF protection.9 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to read, screenshot, or convert web pages to PDF using a real headless browser, turning any URL into clean Markdown, a visual image, or a print-ready document.82 npmMIT
- AlicenseAqualityBmaintenanceEnables AI agents to capture screenshots, scrape structured page content, and run automated visual checks on live websites via a headless Chromium browser.3MIT

URLpipe MCP serverofficial
AlicenseNot gradedqualityBmaintenanceGives AI agents a hosted browser that renders JavaScript, returning Markdown, screenshots, metadata, console errors, and Lighthouse audits for any URL.MIT