loading…
Search for a command to run...
loading…
Enables LLMs to capture screenshots and screen recordings through MCP with chunked session-based transfers for reliable image consumption. Supports multi-monito
Enables LLMs to capture screenshots and screen recordings through MCP with chunked session-based transfers for reliable image consumption. Supports multi-monitor selection, timeline capture, and compatibility with both vision and non-vision language models.
A FastMCP server that runs on the client machine and exposes screenshot tools to a host MCP. It supports both direct screenshot capture and session-based chunked transfers so an LLM can consume images reliably.
Official FastMCP documentation: gofastmcp.com/getting-started/welcome
list_monitors: returns detected monitors (index and dimensions)capture_screenshot: captures a screen image with hybrid mode (base64 for non-vision, native MCP image for vision)capture_timeline: captures a timed screen sequence (ordered frames with timestamps)start_timeline_capture: starts a timeline session and returns a timeline_idget_timeline_manifest: returns chunked timeline metadataget_timeline_chunk: retrieves a timeline JSON chunkrelease_timeline_capture: explicitly releases a timeline sessionstart_screenshot_capture: starts a screenshot session and returns a capture_idget_screenshot_manifest: returns metadata plus ASCII preview for non-vision LLMsget_screenshot_chunk: returns a chunk of base64 image datarelease_screenshot_capture: releases the screenshot session and frees memorylist_monitorscapture_screenshotstart_screenshot_capture -> get_screenshot_manifest -> get_screenshot_chunk (0..N-1) -> release_screenshot_capturecapture_timelinestart_timeline_capture -> get_timeline_manifest -> get_timeline_chunk (0..N-1) -> release_timeline_captureBest practices:
chunk_index order.release_* after reading session data to free memory.preview_text from the manifest before loading full payload.DISPLAY environment variable available to the server process (mss requires it on Linux)uv sync
Or via Taskfile:
task setup
task server
This task starts the server using mcpm run screen-mcp through uvx.
It also registers or updates the local MCP server automatically when needed.
Display-related environment variables are propagated during registration: DISPLAY, WAYLAND_DISPLAY, XAUTHORITY, XDG_RUNTIME_DIR.
task client
The smoke-test script is located in scripts/smoke_client.py and exercises:
list_monitorsstart_screenshot_captureget_screenshot_manifestget_screenshot_chunkrelease_screenshot_captureIt writes a verification image to artifacts/smoke_capture.jpg.
You can also run a specific action via --action:
uv run python scripts/smoke_client.py --action list-monitors
uv run python scripts/smoke_client.py --action capture-screenshot --monitor-index 0 --output artifacts/capture.jpg
uv run python scripts/smoke_client.py --action capture-timeline --duration-seconds 6 --output artifacts/timeline.json
uv run python scripts/smoke_client.py --action capture-timeline-session --duration-seconds 6 --chunk-size 120000 --output artifacts/timeline_session.json
task inspector
This launches the MCP Inspector against the mcpm run screen-mcp server.
servers configuration..vscode/mcp.json file and add one of the examples below.Recommended local example for a cloned repo (unpublished package):
{
"servers": {
"screen-mcp": {
"type": "stdio",
"command": "uv",
"args": ["run", "--project", "/absolute/path/to/screen-mcp", "screen-mcp"]
}
}
}
Example for running directly from a Git repo without global installation:
{
"servers": {
"screen-mcp": {
"type": "stdio",
"command": "uvx",
"args": ["--from", "git+https://github.com/<owner>/screen-mcp.git", "screen-mcp"]
}
}
}
Alternative via MCPM:
{
"servers": {
"screen-mcp": {
"type": "stdio",
"command": "uvx",
"args": ["mcpm", "run", "screen-mcp"]
}
}
}
list_monitors()capture_screenshot(monitor_index=0, image_format="jpeg", max_width=1600, quality=80)capture_screenshot(monitor_index=0, image_format="jpeg", max_width=1600, quality=80, response_mode="image")capture_timeline(duration_seconds=10, monitor_index=0, image_format="jpeg", max_width=900, quality=70)start_timeline_capture(duration_seconds=10, monitor_index=0, image_format="jpeg", max_width=900, quality=70, chunk_size=120000)get_timeline_manifest(timeline_id)get_timeline_chunk(timeline_id, chunk_index)release_timeline_capture(timeline_id)Timeline behavior in capture_timeline:
TIMELINE_FPS (default 2 images/s, configurable in source)TIMELINE_MAX_DURATION_SECONDS (default 30s, configurable in source)frame_index, t_offset_ms, captured_at, preview_text, image_sha256, image_size_bytestemporal_hint makes chronological order explicit for an LLMRobust flow recommendation:
start_screenshot_capture(...) -> obtain capture_idget_screenshot_manifest(capture_id) -> metadata + preview_textget_screenshot_chunk(capture_id, chunk_index) -> reassemble chunksrelease_screenshot_capture(capture_id)capture_id) to make large exchanges reliable.get_screenshot_manifest (metadata + ASCII preview) before downloading the full image.Hybrid mode in capture_screenshot:
response_mode="base64" (default): legacy behavior, JSON output with image_base64.response_mode="image": native MCP image output for vision models, with metadata in structured_content.response_mode="auto": reads SCREEN_MCP_CAPTURE_RESPONSE_MODE (base64 or image) and chooses automatically based on the client/host.Screen captures may contain sensitive data. Add an explicit client-side policy for production use (consent, masking, window whitelisting, etc.).
Добавь это в claude_desktop_config.json и перезапусти Claude Desktop.
{
"mcpServers": {
"screen-mcp": {
"command": "npx",
"args": []
}
}
}Transcripts, channel stats, search
AI image generation using various models.
Unified GPU inference API with 30 AI services (LLM, image gen, video, TTS, whisper, embeddings, reranking, OCR) as MCP tools. Pay-per-use via x402 USDC or API k
A powerful image generation tool using Google's Imagen 3.0 API through MCP. Generate high-quality images from text prompts with advanced photography, artistic,