app-ionelul-mcp
v0.10.0
Published
Local MCP server with the app.ionelul.com tools: PDF, Office to PDF, e-Factura, invoices, LaTeX CV, OCR, QR codes and barcodes, image conversion, AI image and video upscaling, video conversion, frames, GIFs and background removal, noise removal, regex gen
Maintainers
Readme
app-ionelul-mcp
The file tools from app.ionelul.com as a local MCP server. It runs on your machine over stdio: files are read from your disk and written next to them, nothing is uploaded.
Install
Claude Code:
claude mcp add ionelul -- npx -y app-ionelul-mcpClaude Desktop, Cursor and other clients (mcpServers in their config):
{
"mcpServers": {
"ionelul": { "command": "npx", "args": ["-y", "app-ionelul-mcp"] }
}
}Requires Node.js 20 or newer.
Tools
PDF and documents
| Tool | What it does |
| --- | --- |
| pdf_info | Pages, page sizes, metadata, encryption, form fields |
| pdf_merge | Join PDFs, picking pages from each ("1-3, 5, 8-") |
| pdf_split | One file per range, or every N pages |
| pdf_organize | Reorder, delete and rotate pages |
| pdf_edit | Watermark, page numbers, metadata, password protection; unlock with password |
| pdf_sign | Place a signature or stamp image on chosen pages (visible, not a certificate signature) |
| pdf_form_read / pdf_form_fill | Read and fill AcroForm fields, diacritics included |
| pdf_to_excel | Tables found from the text layout, to .xlsx or .csv |
| pdf_to_word | Editable .docx rebuilt from the text layer |
| office_to_pdf | .docx, .xlsx, .pptx, .odp to PDF without Office |
| document_anonymize | Hide names, addresses, national ID numbers (CNP, PESEL, SSN…), phones, e-mails, IBANs in .docx or text; returns only counts, never the originals |
| legal_deadline | Last day of a legal term: Romanian procedure codes, Civil Code, EU Regulation 1182/71 or plain days, with public holidays of 17 countries, explained step by step |
| legal_letter | GDPR requests (access, rectification, erasure, objection, portability, withdrawal of consent), a formal notice to pay or a power of attorney, in 14 languages, as PDF, .docx or text |
| images_to_pdf | Images to one PDF, A4/Letter or page per image size |
| efactura_read | Read a Romanian e-Factura (XML or ANAF SPV .zip) and check its totals |
| efactura_to_pdf | Readable A4 PDF of each invoice |
| invoice_to_pdf | Invoice, proforma or quote PDF with VAT per rate and a logo, in 14 languages |
| cv_to_pdf | CV typeset with XeLaTeX from structured details (Classic, Modern or Academic template, projects and awards, section titles in 14 languages) or your own .tex |
| ocr_image | Text from scans, screenshots and photos, in 14 languages |
Images
| Tool | What it does |
| --- | --- |
| image_convert | Convert between JPEG, PNG, WebP and AVIF, compress, resize (Squoosh codecs) |
| image_to_svg | Trace a logo or drawing into SVG paths |
| image_palette | Main colours with their share |
| image_metadata_read | GPS position, camera, dates and author from EXIF, XMP and IPTC |
| image_strip_metadata | Lossless removal of EXIF, GPS, XMP and IPTC from JPEG, PNG, WebP |
| favicon_create | favicon.ico, PNG icons, site.webmanifest and the <link> tags |
| gif_create | Animated GIF from images |
| image_upscale | Enlarge 2× or 4× with Real-ESRGAN AI, transparency kept |
| qr_create | QR code (SVG with styles, or PNG) for text, links, Wi-Fi, contacts, events and more |
| barcode_create | EAN, UPC, ISBN, Code 128/39/93, ITF-14, GS1-128, Codabar, Data Matrix, PDF417, Aztec as SVG (mm) or PNG (DPI) |
| code_read | Decode every QR code and barcode in an image and explain its content |
Video
| Tool | What it does |
| --- | --- |
| video_convert | Any video ffmpeg reads (AVI, WMV, FLV, H.266/VVC with ffmpeg 7+…) to MP4, MOV, MKV, WebM, MPEG-TS or AVI with H.264, H.265, AV1, VP9 or VP8, or the streams copied as they are (MKV to MP4 in seconds); the sound to MP3, M4A, OGG, WAV; compress, shrink, trim, mute |
| video_to_gif | Animated GIF from a clip of up to 60 s, with a palette made for that clip |
| video_upscale | Enlarge a clip of up to 60 s 2× or 4× with Real-ESRGAN AI, frame by frame, up to 4K; sound kept, OpenCV mp4v read too |
| video_frames | Still images every N seconds, a set number spread over the clip, one per scene change, or every frame, as PNG/JPG/WebP named by their time |
| video_remove_background | Key out a green/blue screen or plain wall (colour found from the frame edges, or given) into a transparent WebM (VP9 alpha) or an MP4 on a new colour; sound kept |
| audio_denoise | Remove background noise (fans, traffic, hum, keyboard) with RNNoise from any audio or video; WAV/MP3/M4A/FLAC/OGG, or the video with its sound cleaned |
Text and utilities
| Tool | What it does |
| --- | --- |
| romanian_diacritics | Add missing ă â î ș ț, fix ş ţ, or remove diacritics |
| text_stats | Words, characters, sentences, reading time, keywords |
| text_case | Upper, title, camel, snake, kebab… and line clean-ups |
| text_diff | Unified diff of two texts or files |
| markdown_to_html | Markdown to a styled HTML page |
| regex_test | Matches, groups and replacement for a regular expression |
| regex_generate | A regular expression from examples (and counter-examples), a description (email, IBAN, CNP, dates…) or a format like DD.MM.YYYY, without AI |
| text_summarize | Extractive summary in any language: the key sentences, word for word and in order |
| base64 | Base64 for text and files, URL encoding |
| password_generate | Passwords, passphrases and PINs from a secure random source, with entropy |
| uuid | UUID v4 / v7, or inspect one |
| lorem_ipsum | Placeholder text |
| unit_convert | Length, mass, volume, temperature, speed, data, energy and more |
| timestamp_convert | Unix timestamps and wall times across time zones |
| color_convert | Colour formats, WCAG contrast and the nearest passing colour |
| file_checksum | MD5, SHA-1/2/3, BLAKE3, CRC32, xxHash64; verify against a hash or SHA256SUMS |
Outputs never replace an existing file unless the call passes overwrite: true.
cv_to_pdf needs a LaTeX engine: the first call downloads it (~21 MB) from app.ionelul.com, checks it against the sha256 in the server, and caches it in ~/.cache/app-ionelul-mcp/latex. Only the engine is downloaded; your CV stays on your machine. Set IONELUL_LATEX_ASSETS to a folder or URL to load it from somewhere else.
video_convert, video_to_gif, video_upscale, video_frames, video_remove_background and audio_denoise use the ffmpeg installed on your machine (brew install ffmpeg, sudo apt install ffmpeg or winget install ffmpeg); set FFMPEG_PATH to use another binary. ffmpeg itself is not bundled or downloaded.
image_upscale and video_upscale run Real-ESRGAN on ONNX Runtime. To keep the server small, ONNX Runtime (about 113 MB) is not part of the package: the first upscale installs it with npm into ~/.cache/app-ionelul-mcp, and the model (2.5 or 4.9 MB) is downloaded from app.ionelul.com, checked against its sha256 and cached there too. Set IONELUL_UPSCALE_MODELS to a folder or URL to load the models from somewhere else.
ocr_image downloads each language's model (2-15 MB) from app.ionelul.com on first use and caches it in ~/.cache/app-ionelul-mcp/tesseract; set IONELUL_TESSERACT_LANG to load them from elsewhere.
Not in the server, because they need a browser canvas, video codecs or large AI models: PDF compression, redaction, OCR of scanned PDFs (and scanned pages in pdf_to_word), background removal, face blurring, watermark removal, speech and recording, and GIF/WebP/BMP pictures inside Office files (they show as placeholders).
License
MIT. The bundled third-party code and data keep their own licenses, listed in dist/THIRD-PARTY-NOTICES.txt.
