Skip to main content
Glama
aamar-shahzad

MCP Screenshot Server

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
MCP_HOSTNoHost for HTTP transport0.0.0.0
MCP_PORTNoPort for HTTP transport8000

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
capture_screenshotA

Capture a screenshot of the screen, a region, or a specific window.

On macOS, this uses the native screencapture command. On other systems, it uses PIL's ImageGrab or pyautogui as fallback.

For window capture on macOS, you need the numeric window ID (not the window name). You can find window IDs using: osascript -e 'tell app "System Events" to get id of windows of processes'

load_imageB

Load an existing image file for annotation.

add_boxB

Draw a rectangle/box on the image.

add_lineC

Draw a line on the image.

add_arrowC

Draw an arrow on the image.

add_textC

Add text annotation to the image.

add_circleC

Draw a circle on the image.

add_highlightC

Add a semi-transparent highlight region to the image.

precise_annotateA

Pixel-perfect annotation tool. Places annotations at EXACT pixel coordinates. No anchor adjustments, no auto-positioning - pure pixel placement.

Coordinates:

  • x, y: Top-left corner for box, center for circle, start for text

  • x2, y2: End point for arrows/lines

Examples:

  • precise_annotate(img, "box", x=100, y=200, width=150, height=50)

  • precise_annotate(img, "text", x=100, y=180, text="Label")

  • precise_annotate(img, "arrow", x=50, y=100, x2=200, y2=100)

  • precise_annotate(img, "circle", x=300, y=300, radius=40)

annotateA

Smart unified annotation tool with flexible positioning and anchor support.

Position formats:

  • Named: "top-left", "center", "bottom-right", "top-left-quarter", etc.

  • Percentage: "50%, 30%" (from top-left corner)

  • Pixels: "100px, 200px" or "100, 200" (absolute x, y)

Anchor controls which part of the annotation aligns to the position:

  • "top-left": annotation's top-left corner at position

  • "center": annotation's center at position (default)

  • "bottom-right": annotation's bottom-right corner at position

Offset allows fine-tuning: offset_x=10 moves 10px right, offset_y=-5 moves 5px up.

Examples:

  • annotate(img, "box", "50%,10%", width=200, height=50, anchor="top-center")

  • annotate(img, "text", "100px,50px", text="Label", anchor="top-left", offset_x=5)

  • annotate(img, "callout", "center", text="Note", offset_y=-20)

batch_annotateA

Apply multiple annotations in a single call.

Pass a JSON array of annotation specs. Each annotation follows the same format as the annotate() tool.

Example: [ {"type": "box", "position": "top-left", "width": 200, "height": 100, "color": "blue"}, {"type": "text", "position": "top-left", "text": "Header Area"}, {"type": "arrow", "position": "center-left", "end_position": "center-right", "color": "green"}, {"type": "callout", "position": "bottom-right", "text": "Click here"} ]

label_regionsB

Quickly label multiple regions of an image.

Pass a JSON object mapping region names to positions.

Example: { "Navigation": "top-left", "Search Bar": "top-center", "User Menu": "top-right", "Sidebar": "center-left", "Main Content": "center", "Footer": "bottom-center" }

annotate_stepA

Add a numbered step annotation with callout circle, arrow, and optional text.

This is a composite tool that combines a numbered callout with an arrow pointing to a target location. Useful for creating step-by-step tutorials or highlighting UI elements.

If callout_position is not specified, it's automatically placed offset from the target.

blur_regionA

Blur or pixelate a region of the image to hide sensitive information.

Use this for hiding passwords, email addresses, personal info, etc.

crop_imageC

Crop the image to a specific region.

resize_imageB

Resize the image by dimensions or scale factor.

add_numbered_calloutC

Add a numbered callout (circled number) to the image.

Numbers auto-increment if not specified, making it easy to add sequential callouts.

reset_callout_counterA

Reset the auto-increment callout counter to 0.

add_borderC

Add a border around the entire image.

undoA

Undo the last annotation on an image.

get_undo_countA

Get the number of available undo operations for an image.

quick_saveB

Quick save to common locations (Desktop, Downloads, Documents, or temp).

Automatically determines the correct path based on the operating system.

rotate_imageB

Rotate the image by 90, 180, or 270 degrees.

flip_imageB

Flip the image horizontally (mirror) or vertically.

add_watermarkC

Add a text watermark to the image.

adjust_brightnessB

Adjust image brightness.

adjust_contrastC

Adjust image contrast.

compare_imagesA

Compare two images and optionally create a diff image highlighting differences.

Returns the percentage of pixels that differ and creates a new image showing the differences if highlight_differences is True.

Useful for comparing before/after screenshots, detecting UI changes, or validating visual regression tests.

create_side_by_sideA

Create a side-by-side comparison image from two images.

Useful for visual comparisons, before/after documentation, or A/B testing screenshots. Labels are added above each image if label_height > 0.

list_imagesA

List all images stored in the current session.

get_memory_statsA

Get current memory usage statistics for the image store.

configure_limitsA

Configure memory limits for the image store. Triggers eviction if new limits are lower.

get_imageB

Get a specific image by its ID. Returns the image data.

duplicate_imageB

Create a copy of an existing image.

delete_imageB

Delete an image from the session.

export_sessionA

Export all images and metadata to a zip archive for later restoration.

The archive contains:

  • All images as PNG files

  • A manifest.json with image IDs, dimensions, and order

  • Optionally, undo history for each image

Use import_session to restore the session later.

import_sessionA

Import a previously exported session from a zip archive.

By default, merges with the existing session. Set merge=False to replace all current images with the imported ones.

save_imageC

Save an image to disk.

copy_to_clipboardA

Copy an image to the system clipboard.

get_image_base64B

Get an image as a base64-encoded string.

open_in_previewB

Open an image in the native Preview app (macOS only).

On macOS, this opens the image in Preview.app for viewing and native annotation. On other platforms, it opens with the default image viewer.

open_file_in_previewA

Open an image file directly in the native Preview app (macOS) or default viewer.

This doesn't require loading the image into the session first.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

C2.9/5.0

Scored across 42 tools

Disambiguation1/5

Many annotation tools overlap heavily: add_box, add_circle, add_line, add_arrow, and add_text duplicate the same operations available through annotate and precise_annotate via type parameters. add_numbered_callout and annotate_step both create numbered callouts with arrows, making the intended tool hard to select without reading every description.

Naming Consistency4/5

Tool names overwhelmingly follow a predictable snake_case verb_noun pattern like list_images, crop_image, rotate_image, and delete_image. Minor deviations like quick_save, precise_annotate, and annotate_step are still readable and consistent with the overall style.

Tool Count2/5

42 tools is excessive for a screenshot and annotation server, especially since many are redundant variations of the same annotation capability. The core workflow could be served with roughly half the tools, so the count feels inflated rather than deliberate.

Completeness4/5

The surface covers the full screenshot lifecycle well: capture, load, annotate, edit, compare, save, export/import, and session management. Minor gaps exist such as no redo operation or explicit clear-session tool, but agents can work around these.

Maintenance

ActivityInactive
ResponsivenessNo issues