本地文件转换处理工具

支持本地文件转换、分析和图像处理的多功能工具,涵盖44种格式的5大类别文件处理。

  • by ChefJulio
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 ChefJulio/overtooled-mcp

使用说明

过冷mcp

MCP服务器,用于本地文件转换、分析和图像处理。图像、音频、视频、文档和结构化数据都在本地处理,没有上传到任何地方。

支持44种格式 横跨5个类别。 7工具 用于转换、分析、处理、合并和生成文件。

安装

npx overtooled-mcp

或全局安装:

npm install -g overtooled-mcp

需要 Node.js>=18.

配置

克劳德代码/克劳德桌面

添加到MCP设置中:

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

光标

添加 .cursor/mcp.json:

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

工具

convert_file

将文件从一种格式转换为另一种格式。

参数 类型 必填 说明
input_path string 是 源文件的绝对路径
output_format string 是 MIME类型的目标格式(image/png)或扩展(png)
output_path string 否 输出文件路径。默认为具有新扩展名的输入位置
options object 否 格式特定选项(例如。 { quality: 80 })
input_path: "/photos/vacation.heic"
output_format: "jpg"
options: { quality: 90 }

返回输出路径、输入/输出大小和特定格式的元数据(图像的维度、音频/视频的持续时间等)。


analyze_file

获取任何文件的详细元数据。对于图像:尺寸、颜色空间、DPI、EXIF。对于音频/视频:持续时间、编解码器、比特率、采样率。对于所有文件:大小、格式检测、熵。

参数 类型 必填 说明
input_path string 是 要分析的文件的绝对路径
include_exif boolean 否 包含图像的完整EXIF数据(默认值: true)
input_path: "/photos/sunset.jpg"

输出示例:

{
  "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 }
}

对于音频/视频文件,返回持续时间、编解码器、比特率、采样率、频道和流详细信息。


process_image

应用一个或多个图像操作:调整大小、压缩、旋转、翻转、模糊、锐化、灰度、否定、剥离元数据或更改格式。操作是按顺序链接的。

参数 类型 必填 说明
input_path string 是 源图像的绝对路径
output_path string 否 输出路径。默认为 input_processed.[ext]
operations array Yes 按顺序应用的操作数组(最少1个)

操作:

类型 参数 描述
resize width, height, fit 缩放图像。 fit:覆盖、包含、填充、内部(默认)、外部
compress quality (1-100,默认80) 减小文件大小
rotate angle (度) 任意角度旋转
flip -- 垂直翻转
flop -- 水平翻转
blur sigma (0.3-100,默认值3) 高斯模糊
sharpen sigma (默认值1) 锐化边缘
grayscale -- 转换为灰度
negate -- 反转颜色
strip_metadata -- 删除EXIF和其他元数据
format format, quality 转换为jpeg、png、webp、tiff或avif
input_path: "/photos/large.jpg"
operations: [
  { type: "resize", width: 1280 },
  { type: "compress", quality: 75 },
  { type: "format", format: "webp" }
]

merge_files

将多个文件合并为一个。支持PDF合并、图像到PDF、文本拼接和CSV合并。

参数 类型 必填 说明
input_paths array Yes 绝对文件路径数组(最少2个)
output_path string 是 合并输出的绝对路径
mode string 否 auto (默认), pdf_merge, images_to_pdf, concatenate, csv_merge
options.separator string 否 连接文件之间的分隔符(默认值:换行符)
options.page_size string 否 PDF页面大小: a4 (默认), letter, legal
options.landscape boolean 否 PDF的横向方向(默认值: false)

自动检测:所有PDF-> pdf_merge,所有图像-> images_to_pdf,所有CSV-> csv_merge,否则-> concatenate.

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

generate_file

从头开始生成占位符/测试文件。不需要输入文件。

参数 类型 必填 说明
type string 是 text, image, audio, video,或 data
output_path string 是 生成文件的绝对路径

文本选项 (洛伦兹):

参数 类型 默认值 说明
text_mode 字符串 paragraphs paragraphs, sentences,或 words
text_count number 3 要生成的单位数

图像选项 (带尺寸标签的占位符,需要尖锐):

参数 类型 默认值 说明
width number 800 宽度(像素)(最大4096)
height number 600 高度(像素)(最大4096)
bg_color 字符串 #cccccc 背景颜色(十六进制)
text_color 字符串 #666666 文本颜色(十六进制)
label 字符串 WIDTHxHEIGHT 自定义文本叠加
image_format 字符串 png png, jpeg,或 webp
quality number 92 JPEG/WebP的质量(1-100)

音频选项 (WAV,纯JS——不需要ffmpeg):

参数 类型 默认值 说明
audio_type 字符串 tone tone, noise, chirp,或 silence
frequency 数字 440 音调频率(Hz)
duration number 3 持续时间(秒)(最多30)
sample_rate 编号 44100 采样率
waveform 字符串 sine sine, square, sawtooth,或 triangle

视频选项 (具有测试模式的MP4/WebM需要ffmpeg):

参数 类型 默认值 说明
width number 640 宽度(像素)(最大1920)
height 数字 480 高度(像素)(最大1080)
duration number 3 持续时间(秒)(最多30)
fps number 30 每秒帧数(最多60帧)
video_format 字符串 mp4 mp4 或 webm
video_pattern 字符串 solid solid, counter, gradient,或 bars (SMPTE)
bg_color 字符串 #336699 背景颜色(十六进制)
text_color 字符串 #ffffff 文本颜色(十六进制)

数据选项 (模拟JSON/CSV):

参数 类型 默认值 说明
data_format 字符串 json json 或 csv
data_preset 字符串 user-profile user-profile, address-book, employee-list,或 products
row_count number 10 行数(最大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

列出所有支持的格式,可选择按类别或给定输入格式可以转换为的格式进行筛选。

参数 类型 必填 说明
category string 否 按类别筛选: image, audio, video, text, document
input_format string 否 仅显示此输入可以转换为的格式(MIME或扩展名)
category: "image"
input_format: "csv"    # shows what CSV can convert to

get_conversion_options

获取特定输出格式的可用选项及其默认值。

参数 类型 必填 说明
output_format string 是 目标格式为MIME类型或扩展名
output_format: "mp3"

返回格式信息和可配置选项(质量、比特率、压缩级别等)。

支持格式

图像(9输入,4输出)

格式 输入 输出 选项
PNG 是 是 --
JPEG 是 是 质量:1-100(默认值92)
WebP 是 是 质量:1-100(默认80)
GIF 是 -- --
BMP 是 -- --
SVG 是 -- --
HEIC 是 -- --
HEIF 是 -- --
TIFF 是 是 --

音频(8路输入,7路输出)

格式 输入 输出 选项
WAV 是 是 位深度:16/24/32
MP3 是 是 比特率:128/192/256/320 kbps
FLAC 是 是 压缩级别:0-8
OGG 是 -- --
AAC 是 是 比特率:128/192/256/320 kbps
M4A 是 是 比特率:128/192/256/320 kbps
Opus 是 是 比特率:64/128/192/256 kbps
AIFF 是 是 位深度:16/24/32

视频(6输入,6输出)

格式 输入 输出 选项
MP4 是 是 crf:0-51(默认28),预设,最大高度
WebM 是 是 crf:0-63(默认值32),预设,最大高度
MOV 是 是 crf:0-51(默认28),预设,最大高度
AVI 是 -- --
MKV yes yes crf:0-51(默认28),预设,最大高度
MPEG-TS 是 是 crf:0-51(默认28),预设,最大高度
GIF -- yes fps:5-30(默认10),最大高度

视频选项: preset (超快/快/中/慢), maxHeight (4K/1440/1080/720/480/360), stripAudio (布尔值)。

数据(9输入,10输出)

格式 输入 输出 选项
JSON 是 是 缩进:0-8(默认2)
CSV yes yes 分隔符:逗号/分号/管道
TSV 是 是 --
XML 是 是 缩进:0-8(默认2)
YAML 是 是 --
汤姆 是的 是的 --
INI 是 是 --
XLSX 是 是 --
SQL -- yes tableName,方言:插入/创建插入

标记

格式 输入 输出
Markdown 是 是
HTML 是 是
纯文本 是 是

文档(7个输入,1个输出)

格式 输入 输出 注释
PDF 是 是 也可转换为图像或纯文本
DOCX yes -- 转换为PDF
PPTX 是 -- 转换为PDF
ODT yes -- 转换为PDF
ODP 是 -- 转换为PDF
ODS 是 -- 转换为PDF
RTF 是 -- 转换为PDF

跨类别: 所有图像、结构化数据和标记也可以转换为PDF。

转换规则

  • 类别内: 任何输入->同一类别中的所有输出(不包括相同格式)
  • PDF格式: 图像、结构化数据和标记都可以转换为PDF
  • 来自PDF: PDF->图像(第一页渲染)或纯文本(提取)
  • 文档->PDF: DOCX、PPTX、ODT、ODP、ODS、RTF都只能转换为PDF
  • 无跨类别: 音频无法转换为图像,视频无法转换为数据等。

依赖项

必需(自动安装): 文本和数据转换开箱即用。

可选(安装以获得完整格式支持):

软件包 启用 安装
sharp 图像转换和分析 npm install sharp
ffmpeg-static 音频/视频转换 npm install ffmpeg-static
canvas PDF转图像渲染 npm install canvas

如果 ffmpeg-static 未安装,服务器将查找 ffmpeg 在您的系统PATH中。

缺少可选依赖项会产生明确的错误消息,告诉您要安装什么。

建筑

搬运来的 过冷 --179工具浏览器实用程序套件。转换引擎从客户端(Canvas、Web Audio、WebCodecs)转换为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

发动机

  • 文本引擎: 纯JS。JSON、CSV、XML、YAML、TOML、INI、SQL、XLSX、Markdown、HTML。两阶段转换:解析输入->JS对象->序列化输出。
  • 图像引擎: 用于解码/编码。本机处理HEIC、TIFF、SVG。
  • 音频引擎: FFmpeg CLI,具有编解码器选择和比特率/质量映射功能。5分钟超时。
  • 视频引擎: FFmpeg CLI具有CRF质量、分辨率缩放、GIF调色板生成功能。10分钟超时。
  • PDF引擎: PDFKit用于生成,pdfjs-dist用于文本提取,猛犸象用于DOCX,pdf库用于合并。

发展

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

许可证

麻省理工学院