formatika

Connect over MCP

Give your assistant the formatika tools and ask for files to be processed in words, not through a browser. The files stay on your machine.

How to connect

No installation and no account: npx fetches the package on first run. The free daily allowance covers occasional work.

Claude Code

One command in the terminal and you are done.

claude mcp add formatika -- npx -y @formatika/mcp

Claude Desktop, Cursor and others

Add this to the mcpServers section of the client configuration. There is no secret in it — only a command and a package name, so it is safe to paste into a chat or commit to a repository.

{
  "mcpServers": {
    "formatika": {
      "command": "npx",
      "args": ["-y", "@formatika/mcp"]
    }
  }
}

On Windows

Claude Desktop launches the server without a shell and cannot find npx directly. Wrapping it in cmd /c fixes that.

{
  "mcpServers": {
    "formatika": {
      "command": "cmd",
      "args": ["/c", "npx", "-y", "@formatika/mcp"]
    }
  }
}

Fully restart the client after editing the configuration — closing the window is not enough.

Then just ask

  • Compress every photo in ./screenshots and put the results in ./web
  • Convert all the HEIC files in this folder to JPEG
  • Make a square 512×512 avatar out of portrait.png

A key for larger volumes

Without a key you get the free daily allowance. If that is not enough, create a key in your account and pass it as an environment variable.

{
  "mcpServers": {
    "formatika": {
      "command": "npx",
      "args": ["-y", "@formatika/mcp"],
      "env": { "FORMATIKA_API_KEY": "fk_..." }
    }
  }
}

FORMATIKA_URL points somewhere else — useful if you run formatika yourself.

Tools: 33

The list comes from the service at start-up, so it never lags behind what formatika can actually do. Every tool takes paths — one or more files — and an optional outputDir. Results are written next to the source, and existing files are never overwritten: a name that is taken gets a number.

Images

image_convertConvert images between JPG, PNG, WebP, AVIF and HEIC. Resize and strip EXIF along the way.
image_resizeChange the dimensions of a photo or picture. Fits within your numbers without enlarging.
image_compressMake a photo lighter — down to a size limit or by quality. Handy when a form refuses a large file.
image_cropCut a photo to a ratio — square for an avatar, 16:9 for a cover. Nothing gets scaled down.
image_rotateTurn a photo by 90, 180 or 270 degrees, or mirror it. Sideways phone shots get fixed.
image_metadataStrip the camera model, the date and — most importantly — the coordinates from a photo. JPEG and PNG are cleaned byte by byte, so the picture itself is not touched.
image_palettePull the main colours out of a picture and get ready-made CSS variables. Runs in your browser: the photo never leaves it.

Audio

audio_convertConvert audio between MP3, AAC, OPUS, FLAC, WAV and OGG. Pick a bitrate, drop it to mono, change the sample rate.
audio_extractPull the soundtrack out of a video file. When the track can be lifted as is, nothing is re-encoded and nothing is lost.
audio_trimCut a fragment out of a recording by timecodes. By default the stream is copied, so the cut costs no quality.
audio_normalizeEven out loudness to the EBU R128 broadcast standard, in two passes — so the recording does not breathe.
audio_mergeJoin several recordings into one, in the order you picked. Matching files are joined without re-encoding — instantly and with no quality lost.
audio_silence-trimCut the silence at the start and the end of a recording. Pauses inside are left alone — in speech they carry meaning.
audio_tagsChange the title, artist and album. The audio itself is copied untouched, so nothing is lost and it takes no time.

Video

video_convertTurn a video into MP4, WebM or MKV. MP4 plays everywhere, WebM is for the web, MKV is what you usually need to open somewhere else.
video_compressFit a recording into a given number of megabytes — to send by email or messenger. We work out the bitrate for your limit and encode in two passes to hit it.
video_resizeConvert a recording to 1080p, 720p, 480p or 360p. Width follows the original proportions, so nothing gets stretched. Upscaling is refused: it adds no detail and only inflates the file.
video_trimCut out a fragment by timecodes. The stream is copied without re-encoding, so it is fast and lossless. If the cut cannot land on a keyframe, we re-encode and say so.
video_muteDrop the sound track. The picture is copied as is — no quality loss and no waiting.
video_to-gifBuild a GIF from a fragment. The palette is generated for your specific video in a separate pass — without that you get noise instead of a picture.
video_subtitlesBurn subtitles into the picture or attach them as a track. Burned-in subtitles show everywhere, even where nobody turns them on; attached ones the viewer can switch off, and the picture is not re-encoded.
video_thumbnailGrab a frame for a cover or preview. Exactly one frame is decoded, so an hour of video costs no more than a minute.

PDF

pdf_mergeJoin several PDF files into one, in the order you picked. Nothing is re-rendered: pages are copied as they are.
pdf_splitPull pages out of a PDF — a range, a few ranges, or every page as its own file.
pdf_pagesTurn pages that were scanned sideways and drop the ones you do not need — in one pass over the document.
pdf_from-imageTurn photos and scans into one PDF, in the order you picked. HEIC from an iPhone works too.
pdf_compressMake a PDF lighter by re-encoding the images inside it. If the result is not meaningfully smaller, you get the original back — untouched.

Archives

archive_zipPut several files into one archive so you can send them as a single attachment. Packed in the browser — the files never reach a server.
archive_unzipGet the files out of an archive. Paths like "../.." are defused, and an archive that expands out of all proportion to its size is refused.

Text

text_subtitlesTurn SRT into VTT and back, and shift the timings while you are at it. Runs in your browser — it is text, nothing needs a server.

Data

data_convertConvert a table from one format to another. Commas and line breaks inside fields do not break the parser. Runs in the browser — the data stays with you.

Utilities

utility_hashWork out the MD5, SHA-1, SHA-256 or SHA-512 of a file to check that what you downloaded is what was published. The file never leaves your device.
utility_base64Encode a file as base64 — to paste an image straight into CSS, say — or decode a base64 string back into a file. The direction is worked out for you.

What happens to the files

Only what cannot be handled locally goes to the server, and only for as long as the work takes. After that the files are deleted: two hours without an account, twenty-four hours with one. They are not read, not shared and not used to train anything.

Why there is no OAuth connector

A remote MCP server has no access to your disk — it only gets what fits into the conversation with the model. For a file service that would mean sending the contents as text: a five-megabyte photo becomes seven megabytes of base64 and fits into no context window. So we run a local process that simply reads the path. As soon as a client can hand real files to a remote server, we will add that way too.