Skip to main content
Glama
sethbang

MCP Screenshot Server

by sethbang

take_screenshot

Capture a web page or specific element with a headless browser and save the screenshot to a configurable output directory.

Instructions

Capture web page or element via headless browser. Saves to ~/Documents/screenshots by default (configurable via SCREENSHOT_OUTPUT_DIR env var).

Input Schema

NameRequiredDescriptionDefault
urlYesURL to capture
widthNoViewport width
heightNoViewport height
fullPageNoCapture full page
selectorNoCSS selector for element
outputPathNoAbsolute path, or relative to home dir
waitForTimeoutNoDelay in ms
waitForSelectorNoWait for selector

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv1.5.0
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • removedInput schema / additionalProperties
      Removed value: -false
  2. Changed10 schema fields changedv1.2.0
    • addedInput schema / $schema
      Added value: +"http://json-schema.org/draft-07/schema#"
    • addedInput schema / additionalProperties
      Added value: +false
    • changedInput schema / properties / fullPage / description
      Previous value: -"Capture full scrollable page"New value: +"Capture full page"
    • changedInput schema / properties / height / description
      Previous value: -"Viewport height in pixels"New value: +"Viewport height"
    • changedInput schema / properties / outputPath / description
      Previous value: -"Custom output path (optional)"New value: +"Absolute path, or relative to home dir"
    • addedInput schema / properties / selector
      Added value: +{
      +  "description": "CSS selector for element",
      +  "type": "string"
      +}
    • changedInput schema / properties / url / description
      Previous value: -"URL to capture (can be http://, https://, or file:///)"New value: +"URL to capture"
    • addedInput schema / properties / waitForSelector
      Added value: +{
      +  "description": "Wait for selector",
      +  "type": "string"
      +}
    • addedInput schema / properties / waitForTimeout
      Added value: +{
      +  "description": "Delay in ms",
      +  "maximum": 30000,
      +  "minimum": 0,
      +  "type": "number"
      +}
    • changedInput schema / properties / width / description
      Previous value: -"Viewport width in pixels"New value: +"Viewport width"
  3. First observed

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It usefully discloses the default output directory and the SCREENSHOT_OUTPUT_DIR override, but says nothing about failure modes (unreachable URL, selector timeout), whether the browser is launched locally, or what the tool actually returns (file path vs. image payload).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences: the capability first, then the output-destination detail. Zero filler, nothing buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter, annotation-free tool with no output schema, the definition covers placement of the artifact but not the return contract — an agent cannot tell whether it gets a path, a base64 image, or a success flag. The dependency between selector and fullPage is also left unresolved.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and every parameter is self-documented, so baseline is 3. The description adds only one piece of extra meaning — the default output location and env-var override for outputPath — and it does not clarify the interaction between fullPage and selector or how waitForSelector and waitForTimeout combine.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ("Capture web page or element") plus the mechanism (headless browser), which is enough to separate it from take_system_screenshot. It never names the sibling explicitly, so the differentiation is inferred rather than declared.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"web page or element" hints at the domain, but there is no explicit statement of when to prefer this over take_system_screenshot (which captures the local screen) or any prerequisites/exclusions. The agent must reason about the alternative on its own.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Deploy Server

Other Tools