screen-capture-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., "@screen-capture-mcptake a screenshot of my primary monitor"
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.
screen-capture-mcp
A small local MCP server that lets an AI assistant (e.g. Claude Code) take a single still screenshot of one of your monitors, only when you ask it to.
No web server, no background capture, no video stream. The assistant launches it over stdio and it grabs one frame per tool call.
Images are downscaled (default 1568px on the long edge) to keep token cost reasonable while keeping text legible.
Works on Windows, macOS, and Linux (via
mss).
Tools
Tool | What it does |
| Lists monitors numbered left to right (1 = leftmost), with resolution, position, and which is primary. |
| Captures one monitor. |
Related MCP server: Webshot MCP
Install
Requires uv.
git clone <this-repo-url> screen-capture-mcp
cd screen-capture-mcp
uv syncRegister with Claude Code (all projects)
Substitute the absolute path to your clone:
claude mcp add --scope user screen-capture -- uv run --directory /absolute/path/to/screen-capture-mcp screen-capture-mcpRestart Claude Code, then ask something like "take a look at my left monitor."
Claude Code asks permission before each tool call by default. To skip the prompt, allow mcp__screen-capture__capture_screen in your permissions.
Notes
Games: use borderless fullscreen or windowed mode. Exclusive fullscreen can produce black captures.
macOS: grant your terminal the Screen Recording permission.
Privacy: captures go to whatever model your client uses. Nothing is saved to disk.
Development
uv run screen-capture-mcp # runs the stdio serverAvailable Tools
2 toolscapture_screenARead-only
Take one screenshot of a monitor and return it as an image.
Args: monitor: "primary", "all" (every screen stitched together), or a monitor number (1 = leftmost). See list_monitors. max_dimension: Longest edge of the returned image in pixels (256-4096). The default balances legibility and token cost; raise it only when small text is unreadable. image_format: "jpeg" (smaller, default) or "png" (lossless, crisper small text).
| Name | Required | Description | Default |
|---|---|---|---|
| monitor | No | primary | |
| image_format | No | jpeg | |
| max_dimension | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false, so the safety profile is covered. The description adds genuinely new behavioral context: 'all' stitches every screen together, and the default max_dimension is chosen to balance legibility against token cost. It omits permissions, error cases, and rate limits, which keeps it short of a 5.
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?
One front-loaded sentence states the action and return type, followed by a compact Args block with no filler. Every line supplies information an agent needs to call the tool correctly.
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 states the return is an image, and all three parameters are fully explained despite zero schema coverage. It leaves minor gaps such as behavior on multi-monitor failure or permission requirements, but nothing that would cause a mis-call.
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 0%, so the description carries the full burden and does: monitor accepts 'primary', 'all' (with stitch semantics), or a number where 1 = leftmost; max_dimension is bounded 256-4096 with a reason to change it; image_format lists jpeg vs png with a tradeoff for each. This adds real meaning that the bare schema (no enums, no descriptions) cannot convey.
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 ('Take one screenshot of a monitor and return it as an image') with the delivery format included. It also cross-references the sibling list_monitors as the way to discover monitor values, so an agent can distinguish the two tools without opening a schema.
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?
Gives concrete conditional guidance: raise max_dimension only when small text is unreadable, and choose png over jpeg when small text needs to be crisper. It does not state explicit exclusions (e.g. when not to screenshot vs use list_monitors), but for a single-purpose capture tool the parameter-level guidance is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_monitorsARead-only
List connected monitors with their numbers, resolutions, positions, and which is primary.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered by structured data. The description adds only that the result includes per-monitor numbers, resolutions, positions, and the primary designation, which is useful context but discloses no behavior beyond annotations (no failure modes, no platform/auth notes).
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 sentence with no filler, front-loading the action and then the payload. 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 an output schema present, the description does not need to explain return values, yet it lists them anyway — harmless but slightly redundant. For a zero-param read-only tool whose safety profile is carried by annotations, the definition is otherwise sufficient to call correctly.
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?
The tool takes zero parameters and schema description coverage is 100%, so there is nothing for the description to clarify. Per the rubric, a parameterless tool earns the baseline of 4.
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 (list) and resource (monitors) and even enumerates the returned attributes (numbers, resolutions, positions, primary flag). It is clearly distinguishable in action from the sibling capture_screen, but it never names or contrasts with that sibling explicitly, keeping it just short of a 5.
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?
There is no explicit when-to-use statement, no prerequisites, and no mention of the sibling capture_screen as an alternative. For a zero-parameter enumeration tool the intended use is strongly implied (call it when you need monitor topology), which lands at minimum-viable rather than absent.
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
capture_screen - First observed
list_monitors
TDQS
Scored across 2 tools
The two tools have completely distinct purposes: list_monitors enumerates displays, while capture_screen takes a screenshot. There is no overlap or chance of misselection.
Both names follow the same verb_noun snake_case convention (list_monitors, capture_screen), making the set highly predictable.
Two tools is on the lean side, but for a tightly scoped screen-capture server they cover the essential list-then-capture workflow. A minor addition could enrich it, but nothing feels extraneous.
The core lifecycle of discovering monitors and capturing them is covered, with thoughtful options for monitor selection, sizing, and format. Gaps remain around region/window capture or recording, but the stated purpose is well served.
Maintenance
Related MCP Connectors
Clean PNG/JPEG screenshots via REST or MCP, with goal-driven multi-step navigation.
Screenshot API for AI agents. Any public page as image or PDF, banners hidden, 227 countries.
Screenshots of any public web page as PNG, JPEG, WebP, PDF or a scrolling video.
Generate images, GIFs, videos, and PDFs from HTML, URLs, or templates — from your AI agent.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables AI assistants to capture screenshots of web pages using automated browser sessions. Supports full-page and element-specific screenshots, device simulation, and JavaScript execution for comprehensive web testing and monitoring.615 npmMIT
- AlicenseCqualityDmaintenanceEnables taking screenshots of web pages with support for multiple devices (desktop, mobile, tablet), custom dimensions, full-page capture, and various image formats. Built with Playwright for reliable web page rendering and screenshot generation.1MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to capture and analyze screen content across multi-monitor setups with smart image optimization. Provides screenshot capabilities and detailed monitor information for visual debugging, UI analysis, and desktop assistance.-
- AlicenseNot gradedqualityDmaintenanceEnables capturing screenshots of all connected monitors with automatic JPEG compression and multi-platform support including WSL environments. Supports quality adjustment and image resizing through simple natural language commands.0ISC