overtooled-mcp

overtooled-mcp

MCP server for local file conversion, analysis, and image processing across 44 formats with 7 tools, all processed locally.

Category
Visit Server

README

overtooled-mcp

MCP server for local file conversion, analysis, and image processing. Images, audio, video, documents, and structured data -- all processed locally, nothing uploaded anywhere.

44 supported formats across 5 categories. 7 tools for converting, analyzing, processing, merging, and generating files.

Install

npx overtooled-mcp

Or install globally:

npm install -g overtooled-mcp

Requires Node.js >= 18.

Configure

Claude Code / Claude Desktop

Add to your MCP settings:

{
  "mcpServers": {
    "overtooled": {
      "command": "npx",
      "args": ["-y", "overtooled-mcp"]
    }
  }
}

Cursor

Add to .cursor/mcp.json:

{
  "mcpServers": {
    "overtooled": {
      "command": "npx",
      "args": ["-y", "overtooled-mcp"]
    }
  }
}

Tools

convert_file

Convert a file from one format to another.

Parameter Type Required Description
input_path string Yes Absolute path to the source file
output_format string Yes Target format as MIME type (image/png) or extension (png)
output_path string No Output file path. Defaults to input location with new extension
options object No Format-specific options (e.g. { quality: 80 })
input_path: "/photos/vacation.heic"
output_format: "jpg"
options: { quality: 90 }

Returns the output path, input/output sizes, and format-specific metadata (dimensions for images, duration for audio/video, etc.).


analyze_file

Get detailed metadata about any file. For images: dimensions, color space, DPI, EXIF. For audio/video: duration, codec, bitrate, sample rate. For all files: size, format detection, entropy.

Parameter Type Required Description
input_path string Yes Absolute path to the file to analyze
include_exif boolean No Include full EXIF data for images (default: true)
input_path: "/photos/sunset.jpg"

Example output:

{
  "file": "sunset.jpg",
  "size": 2457600,
  "sizeHuman": "2.3 MB",
  "format": "image/jpeg",
  "category": "image",
  "entropy": 7.45,
  "width": 3840,
  "height": 2160,
  "colorSpace": "srgb",
  "dpi": 72,
  "exif": { "Make": "Canon", "Model": "EOS 5D", "FocalLength": 50 }
}

For audio/video files, returns duration, codec, bitrate, sample rate, channels, and stream details.


process_image

Apply one or more image operations: resize, compress, rotate, flip, blur, sharpen, grayscale, negate, strip metadata, or change format. Operations are chained in order.

Parameter Type Required Description
input_path string Yes Absolute path to the source image
output_path string No Output path. Defaults to input_processed.[ext]
operations array Yes Array of operations to apply in order (min 1)

Operations:

Type Parameters Description
resize width, height, fit Scale image. fit: cover, contain, fill, inside (default), outside
compress quality (1-100, default 80) Reduce file size
rotate angle (degrees) Rotate by arbitrary angle
flip -- Flip vertically
flop -- Flip horizontally
blur sigma (0.3-100, default 3) Gaussian blur
sharpen sigma (default 1) Sharpen edges
grayscale -- Convert to grayscale
negate -- Invert colors
strip_metadata -- Remove EXIF and other metadata
format format, quality Convert to jpeg, png, webp, tiff, or avif
input_path: "/photos/large.jpg"
operations: [
  { type: "resize", width: 1280 },
  { type: "compress", quality: 75 },
  { type: "format", format: "webp" }
]

merge_files

Combine multiple files into one. Supports PDF merging, images-to-PDF, text concatenation, and CSV merging.

Parameter Type Required Description
input_paths array Yes Array of absolute file paths (min 2)
output_path string Yes Absolute path for the merged output
mode string No auto (default), pdf_merge, images_to_pdf, concatenate, csv_merge
options.separator string No Separator between concatenated files (default: newline)
options.page_size string No PDF page size: a4 (default), letter, legal
options.landscape boolean No Landscape orientation for PDF (default: false)

Auto-detection: all PDFs -> pdf_merge, all images -> images_to_pdf, all CSVs -> csv_merge, otherwise -> concatenate.

input_paths: ["/docs/ch1.pdf", "/docs/ch2.pdf", "/docs/ch3.pdf"]
output_path: "/docs/combined.pdf"

generate_file

Generate placeholder/test files from scratch. No input file needed.

Parameter Type Required Description
type string Yes text, image, audio, video, or data
output_path string Yes Absolute path for the generated file

Text options (lorem ipsum):

Parameter Type Default Description
text_mode string paragraphs paragraphs, sentences, or words
text_count number 3 Number of units to generate

Image options (placeholder with dimensions label, requires sharp):

Parameter Type Default Description
width number 800 Width in pixels (max 4096)
height number 600 Height in pixels (max 4096)
bg_color string #cccccc Background color (hex)
text_color string #666666 Text color (hex)
label string WIDTHxHEIGHT Custom text overlay
image_format string png png, jpeg, or webp
quality number 92 Quality for JPEG/WebP (1-100)

Audio options (WAV, pure JS -- no ffmpeg needed):

Parameter Type Default Description
audio_type string tone tone, noise, chirp, or silence
frequency number 440 Tone frequency in Hz
duration number 3 Duration in seconds (max 30)
sample_rate number 44100 Sample rate
waveform string sine sine, square, sawtooth, or triangle

Video options (MP4/WebM with test patterns, requires ffmpeg):

Parameter Type Default Description
width number 640 Width in pixels (max 1920)
height number 480 Height in pixels (max 1080)
duration number 3 Duration in seconds (max 30)
fps number 30 Frames per second (max 60)
video_format string mp4 mp4 or webm
video_pattern string solid solid, counter, gradient, or bars (SMPTE)
bg_color string #336699 Background color (hex)
text_color string #ffffff Text color (hex)

Data options (mock JSON/CSV):

Parameter Type Default Description
data_format string json json or csv
data_preset string user-profile user-profile, address-book, employee-list, or products
row_count number 10 Number of rows (max 1000)
type: "image"
output_path: "/tmp/placeholder.png"
width: 1280
height: 720
label: "Hero Image"
type: "audio"
output_path: "/tmp/test-tone.wav"
audio_type: "tone"
frequency: 1000
duration: 5
waveform: "square"

list_formats

List all supported formats, optionally filtered by category or by what a given input format can convert to.

Parameter Type Required Description
category string No Filter by category: image, audio, video, text, document
input_format string No Show only formats this input can convert to (MIME or extension)
category: "image"
input_format: "csv"    # shows what CSV can convert to

get_conversion_options

Get available options and their defaults for a specific output format.

Parameter Type Required Description
output_format string Yes Target format as MIME type or extension
output_format: "mp3"

Returns format info plus configurable options (quality, bitrate, compression level, etc.).

Supported Formats

Images (9 input, 4 output)

Format Input Output Options
PNG yes yes --
JPEG yes yes quality: 1-100 (default 92)
WebP yes yes quality: 1-100 (default 80)
GIF yes -- --
BMP yes -- --
SVG yes -- --
HEIC yes -- --
HEIF yes -- --
TIFF yes yes --

Audio (8 input, 7 output)

Format Input Output Options
WAV yes yes bitDepth: 16/24/32
MP3 yes yes bitrate: 128/192/256/320 kbps
FLAC yes yes compressionLevel: 0-8
OGG yes -- --
AAC yes yes bitrate: 128/192/256/320 kbps
M4A yes yes bitrate: 128/192/256/320 kbps
Opus yes yes bitrate: 64/128/192/256 kbps
AIFF yes yes bitDepth: 16/24/32

Video (6 input, 6 output)

Format Input Output Options
MP4 yes yes crf: 0-51 (default 28), preset, maxHeight
WebM yes yes crf: 0-63 (default 32), preset, maxHeight
MOV yes yes crf: 0-51 (default 28), preset, maxHeight
AVI yes -- --
MKV yes yes crf: 0-51 (default 28), preset, maxHeight
MPEG-TS yes yes crf: 0-51 (default 28), preset, maxHeight
GIF -- yes fps: 5-30 (default 10), maxHeight

Video options: preset (ultrafast/fast/medium/slow), maxHeight (4K/1440/1080/720/480/360), stripAudio (boolean).

Data (9 input, 10 output)

Format Input Output Options
JSON yes yes indent: 0-8 (default 2)
CSV yes yes delimiter: comma/semicolon/pipe
TSV yes yes --
XML yes yes indent: 0-8 (default 2)
YAML yes yes --
TOML yes yes --
INI yes yes --
XLSX yes yes --
SQL -- yes tableName, dialect: insert/create-insert

Markup

Format Input Output
Markdown yes yes
HTML yes yes
Plain Text yes yes

Documents (7 input, 1 output)

Format Input Output Notes
PDF yes yes Also converts to images or plain text
DOCX yes -- Converts to PDF
PPTX yes -- Converts to PDF
ODT yes -- Converts to PDF
ODP yes -- Converts to PDF
ODS yes -- Converts to PDF
RTF yes -- Converts to PDF

Cross-category: All images, structured data, and markup can also convert to PDF.

Conversion Rules

  • Within category: Any input -> all outputs in the same category (excluding same format)
  • To PDF: Images, structured data, and markup can all convert to PDF
  • From PDF: PDF -> images (first page rendered) or plain text (extracted)
  • Documents -> PDF: DOCX, PPTX, ODT, ODP, ODS, RTF all convert to PDF only
  • No cross-category: Audio cannot convert to images, video cannot convert to data, etc.

Dependencies

Required (installed automatically): Text and data conversion works out of the box.

Optional (install for full format support):

Package Enables Install
sharp Image conversion and analysis npm install sharp
ffmpeg-static Audio/video conversion npm install ffmpeg-static
canvas PDF-to-image rendering npm install canvas

If ffmpeg-static is not installed, the server looks for ffmpeg in your system PATH.

Missing optional dependencies produce clear error messages telling you what to install.

Architecture

Ported from Overtooled -- a 179-tool browser utility suite. The conversion engines were adapted from client-side (Canvas, Web Audio, WebCodecs) to Node.js (sharp, FFmpeg, PDFKit).

src/
  server.ts              # MCP server + tool registration
  tools/                 # 7 tool handlers
    convert-file.ts
    analyze-file.ts
    process-image.ts
    merge-files.ts
    generate-file.ts
    list-formats.ts
    get-options.ts
  engines/               # Conversion engines by category
    engine-image.ts      # sharp
    engine-audio.ts      # FFmpeg CLI
    engine-video.ts      # FFmpeg CLI
    engine-text.ts       # Pure JS
    engine-pdf.ts        # PDFKit + pdfjs-dist + mammoth
  registry/
    format-registry.ts   # Format definitions + conversion matrix
  utils/
    mime.ts              # MIME detection from extension
    ffmpeg.ts            # FFmpeg binary resolution
    ffprobe.ts           # Media metadata extraction via ffprobe
    magic-bytes.ts       # File type detection by header bytes

Engines

  • Text engine: Pure JS. JSON, CSV, XML, YAML, TOML, INI, SQL, XLSX, Markdown, HTML. Two-stage conversion: parse input -> JS objects -> serialize output.
  • Image engine: sharp for decode/encode. Handles HEIC, TIFF, SVG natively.
  • Audio engine: FFmpeg CLI with codec selection and bitrate/quality mapping. 5-minute timeout.
  • Video engine: FFmpeg CLI with CRF quality, resolution scaling, GIF palette generation. 10-minute timeout.
  • PDF engine: PDFKit for generation, pdfjs-dist for text extraction, mammoth for DOCX, pdf-lib for merging.

Development

npm run build          # Compile TypeScript
npm run dev            # Watch mode
npm test               # Run tests (vitest)
npm run test:watch     # Watch mode tests
npm run lint           # Type check

License

MIT

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