EditX

EditX

An MCP server for taking screenshots and editing images with annotations, shapes, and effects.

Category
Visit Server

README

EditX - Screenshot & Image Editor MCP Server

MCP server for taking screenshots and editing images with annotations, shapes, and effects. Inspired by ShareX functionality for Linux.

Features

šŸ“ø Screenshot Capture

  • Fullscreen: Capture entire screen
  • Area Selection: Interactive region selection (GUI)
  • Region: Capture specific coordinates programmatically

āœļø Drawing Tools

  • Arrows: Point to specific areas
  • Rectangles: Highlight regions
  • Step Numbers: Numbered circles for tutorials (1, 2, 3...)
  • Text: Add text annotations

šŸŽØ Effects

  • Blur: Gaussian blur for privacy
  • Pixelate: Stronger privacy effect (faces, sensitive data)
  • Crop: Cut image to specific region

šŸ’¾ Image Management

  • Load existing images
  • Save in PNG/JPEG
  • Undo operations
  • Reset to original
  • Image info and history

Installation

cd /path/to/EditX
pip install -r requirements.txt

System Dependencies (Linux)

For interactive area selection, install one of:

# Ubuntu/Debian
sudo apt install gnome-screenshot
# OR
sudo apt install scrot

Configuration

Add to ~/.claude.json:

{
  "mcpServers": {
    "editx": {
      "type": "stdio",
      "command": "python",
      "args": [
        "/absolute/path/to/EditX/src/server.py"
      ]
    }
  }
}

Replace /absolute/path/to/EditX with the actual path where you cloned this repository.

Usage Examples

Basic Workflow

1. Take screenshot
   → take_screenshot(mode="fullscreen")

2. Add annotations
   → add_arrow(start_x=100, start_y=100, end_x=200, end_y=150)
   → add_rectangle(x=150, y=150, width=300, height=200)
   → add_step_number(x=250, y=250, number=1)

3. Add privacy blur
   → blur_region(x=400, y=100, width=200, height=50)

4. Save result
   → save_image(output_path="/path/to/annotated.png")

Tutorial Screenshot with Steps

take_screenshot(mode="area")
add_step_number(x=100, y=100, number=1, bg_color="red")
add_step_number(x=100, y=200, number=2, bg_color="blue")
add_step_number(x=100, y=300, number=3, bg_color="green")
add_arrow(start_x=150, start_y=100, end_x=300, end_y=100)
save_image(output_path="tutorial.png")

Privacy Screenshot

take_screenshot(mode="fullscreen")
blur_region(x=100, y=100, width=300, height=200, blur_amount=20)
pixelate_region(x=500, y=500, width=200, height=200, pixel_size=15)
save_image(output_path="private.png")

Edit Existing Image

load_image(image_path="/path/to/existing.png")
add_rectangle(x=50, y=50, width=400, height=300, color="red", border_width=5)
add_text(x=60, y=60, text="Important!", color="red", size=24, bg_color="white")
save_image(output_path="/path/to/annotated.png")

Available Tools

Screenshot Tools

  • take_screenshot: Capture screen
    • mode: "fullscreen" | "area" | "region"
    • output_path: (optional) where to save
    • x, y, width, height: (for "region" mode)

Editing Tools

  • load_image: Load existing image file

    • image_path: path to image
  • add_arrow: Draw arrow

    • start_x, start_y: arrow start
    • end_x, end_y: arrowhead position
    • color: arrow color
    • width: line width
  • add_rectangle: Draw rectangle

    • x, y: top-left corner
    • width, height: dimensions
    • color: border color
    • border_width: border thickness
    • fill: (optional) fill color
  • add_step_number: Add numbered circle

    • x, y: center position
    • number: step number (1, 2, 3...)
    • size: circle diameter
    • bg_color: circle color
    • text_color: number color
  • add_text: Add text annotation

    • x, y: text position
    • text: text content
    • color: text color
    • size: font size
    • bg_color: (optional) background

Effects

  • blur_region: Blur specific area

    • x, y, width, height: region
    • blur_amount: intensity (5-50)
  • pixelate_region: Pixelate area (privacy)

    • x, y, width, height: region
    • pixel_size: block size (5-30)
  • crop_image: Crop to region

    • x, y, width, height: crop area

Management

  • save_image: Save edited image

    • output_path: where to save
    • format: "PNG" | "JPEG"
  • get_image_info: Get image details

  • undo: Undo last operation

  • reset_image: Reset to original

Technical Details

Architecture

EditX/
ā”œā”€ā”€ src/
│   ā”œā”€ā”€ server.py        # MCP server (main entry)
│   ā”œā”€ā”€ screenshot.py    # Screenshot capture (mss)
│   ā”œā”€ā”€ editor.py        # Image editor manager
│   ā”œā”€ā”€ shapes.py        # Drawing shapes (Pillow)
│   └── effects.py       # Image effects (Pillow + OpenCV)
ā”œā”€ā”€ requirements.txt
└── README.md

Technology Stack

  • MCP Framework: Server implementation
  • python-mss: Fast cross-platform screenshots
  • Pillow (PIL): Image manipulation and drawing
  • OpenCV: Advanced effects (blur, pixelate)
  • NumPy: Array operations

Workflow

  1. Screenshot is captured and auto-loaded into editor
  2. All edits are applied to the loaded image
  3. Editor maintains history (up to 10 states)
  4. Undo/reset available at any time
  5. Save to desired format

Colors Available

  • red, blue, green, yellow, black, white, orange

Tips

  • Step numbers: Use different colors for different workflows
  • Blur vs Pixelate: Blur for slight privacy, pixelate for strong privacy
  • Arrow direction: Arrow points to end coordinates
  • History: Max 10 undo states kept in memory
  • Formats: Use PNG for transparency, JPEG for smaller files

License

MIT License - see LICENSE file for details.

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