lazy-media-mcp

lazy-media-mcp

Local MCP server that compresses images and videos, extracts video frames, and prepares media for AI vision agents by returning file paths instead of inline base64.

Category
Visit Server

README

lazy-media-mcp

npm version license Node.js

Local Model Context Protocol (MCP) server that compresses images/videos and prepares media for AI vision agents.

Designed for coding agents (Claude Code, Codex, Grok, and other MCP clients): returns file paths only (no inline base64), so large screenshots and demos stay within tool limits.

Keywords: MCP server, image compression, video compression, ffmpeg, sharp, AI vision prep, frame extraction, Claude, Codex.

Why this exists

Large screenshots and long demos burn context and often fail tool limits. This server:

  1. Shrinks images to a sensible size/quality
  2. Turns videos into frame packs agents can actually open
  3. Uses JPEG by default for widest agent compatibility

WebP / WebM — do they help AI “read better”?

Format Role Default here?
JPEG Best universal image input for local agents Yes
PNG Sharper for OCR / UI text / alpha ocr_text profile
WebP Smaller files when the host supports it Opt-in only
MP4 Storage/sharing re-encode Video compress default
WebM Optional container Opt-in via video_compress

Format does not improve model understanding by itself. Resolution, blur, and compression artifacts matter more. Over-aggressive WebP/JPEG hurts OCR.

Local agents usually do not natively watch WebM/MP4. Prefer prepare_for_ai / video_extract_frames → JPEG paths.

Requirements

  • Node.js ≥ 20
  • ffmpeg + ffprobe on PATH (video tools)
# macOS
brew install ffmpeg

Install / run

From npm

npx -y lazy-media-mcp
# or
npm install -g lazy-media-mcp

From source

git clone https://github.com/leaf76/lazy-media-mcp.git
cd lazy-media-mcp
npm install
npm run build
npm test
node dist/cli.js   # stdio MCP

MCP client config (example)

{
  "mcpServers": {
    "lazy-media": {
      "command": "node",
      "args": ["/absolute/path/to/lazy-media-mcp/dist/cli.js"],
      "env": {
        "MEDIA_ALLOWED_ROOTS": "/Users/you,/Users/you/WorkSpace",
        "MEDIA_WORKDIR": "/Users/you/.cache/lazy-media-mcp/jobs"
      }
    }
  }
}

Tools

Tool Purpose
media_inspect Metadata only
image_compress Resize/compress image → workdir path
video_compress Re-encode video (default MP4)
video_extract_frames Extract frames for vision
prepare_for_ai One-shot profile pipeline (recommended)
media_cleanup Delete a job directory by job_id

prepare_for_ai profiles

Profile Behavior
ai_vision (default) Image → JPEG ≤1536 edge; video → up to 10 JPEG frames
ocr_text Prefer PNG / higher quality
inline_small Smaller edges, fewer frames
archive Higher quality + optional compressed MP4

Environment

Variable Default
MEDIA_ALLOWED_ROOTS $HOME, cwd, workdir
MEDIA_WORKDIR ~/.cache/lazy-media-mcp/jobs
MEDIA_MAX_INPUT_BYTES 500MB
MEDIA_MAX_OUTPUT_BYTES 200MB
MEDIA_MAX_FRAMES 24
MEDIA_PROCESS_TIMEOUT_MS 120000
FFMPEG_BIN / FFPROBE_BIN ffmpeg / ffprobe
LOG_LEVEL info

Security

  • Path allowlist (realpath checks)
  • Input/output size caps
  • Process timeout
  • ffmpeg/ffprobe invoked with argv arrays only (no shell interpolation)
  • Outputs go to workdir; originals are not overwritten
  • Cleanup only deletes direct children of workdir by job_id

Typical agent flow

1. prepare_for_ai({ path: "/path/to/demo.mp4", profile: "ai_vision" })
2. Read returned outputs[].path frame files in the next vision step
3. media_cleanup({ job_id }) when done (optional)

Related

License

MIT © leaf76

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured