overtooled-mcp
Click on "Install 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., "@overtooled-mcpconvert image.heic to jpg"
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.
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-mcpOr install globally:
npm install -g overtooled-mcpRequires Node.js >= 18.
Related MCP server: KnowledgeMCP
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 |
| string | Yes | Absolute path to the source file |
| string | Yes | Target format as MIME type ( |
| string | No | Output file path. Defaults to input location with new extension |
| object | No | Format-specific options (e.g. |
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 |
| string | Yes | Absolute path to the file to analyze |
| boolean | No | Include full EXIF data for images (default: |
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 |
| string | Yes | Absolute path to the source image |
| string | No | Output path. Defaults to |
| array | Yes | Array of operations to apply in order (min 1) |
Operations:
Type | Parameters | Description |
|
| Scale image. |
|
| Reduce file size |
|
| Rotate by arbitrary angle |
| -- | Flip vertically |
| -- | Flip horizontally |
|
| Gaussian blur |
|
| Sharpen edges |
| -- | Convert to grayscale |
| -- | Invert colors |
| -- | Remove EXIF and other metadata |
|
| 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 |
| array | Yes | Array of absolute file paths (min 2) |
| string | Yes | Absolute path for the merged output |
| string | No |
|
| string | No | Separator between concatenated files (default: newline) |
| string | No | PDF page size: |
| boolean | No | Landscape orientation for PDF (default: |
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 |
| string | Yes |
|
| string | Yes | Absolute path for the generated file |
Text options (lorem ipsum):
Parameter | Type | Default | Description |
| string |
|
|
| number | 3 | Number of units to generate |
Image options (placeholder with dimensions label, requires sharp):
Parameter | Type | Default | Description |
| number | 800 | Width in pixels (max 4096) |
| number | 600 | Height in pixels (max 4096) |
| string |
| Background color (hex) |
| string |
| Text color (hex) |
| string |
| Custom text overlay |
| string |
|
|
| number | 92 | Quality for JPEG/WebP (1-100) |
Audio options (WAV, pure JS -- no ffmpeg needed):
Parameter | Type | Default | Description |
| string |
|
|
| number | 440 | Tone frequency in Hz |
| number | 3 | Duration in seconds (max 30) |
| number | 44100 | Sample rate |
| string |
|
|
Video options (MP4/WebM with test patterns, requires ffmpeg):
Parameter | Type | Default | Description |
| number | 640 | Width in pixels (max 1920) |
| number | 480 | Height in pixels (max 1080) |
| number | 3 | Duration in seconds (max 30) |
| number | 30 | Frames per second (max 60) |
| string |
|
|
| string |
|
|
| string |
| Background color (hex) |
| string |
| Text color (hex) |
Data options (mock JSON/CSV):
Parameter | Type | Default | Description |
| string |
|
|
| string |
|
|
| 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 |
| string | No | Filter by category: |
| string | No | Show only formats this input can convert to (MIME or extension) |
category: "image"input_format: "csv" # shows what CSV can convert toget_conversion_options
Get available options and their defaults for a specific output format.
Parameter | Type | Required | Description |
| 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 |
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 |
| Image conversion and analysis |
|
| Audio/video conversion |
|
| PDF-to-image rendering |
|
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 bytesEngines
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 checkLicense
MIT
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ChefJulio/overtooled-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server