filechanger-mcp
filechanger-mcp
MCP server for FileChanger, giving an AI assistant the ability to convert documents between formats. Markdown to HTML, LaTeX to Typst, DocBook to AsciiDoc, RST to Jira markup, and a few hundred other pairs.
Conversion runs on FileChanger's servers (pandoc under the hood), so there is nothing to install locally beyond this package.
Setup
Get an API key (fc_...) at filechanger.io.
Claude Code:
claude mcp add filechanger -e FILECHANGER_API_KEY=fc_your_key_here -- npx -y filechanger-mcp
Any other MCP client, add to your config:
{
"mcpServers": {
"filechanger": {
"command": "npx",
"args": ["-y", "filechanger-mcp"],
"env": { "FILECHANGER_API_KEY": "fc_your_key_here" }
}
}
}
Tools
| Tool | Arguments | Returns |
|---|---|---|
convert |
content, from, to (all required) |
The converted document as text |
convert_file |
content_base64, from, to (all required) |
A job_id to poll |
get_conversion |
job_id |
The job's status, and the converted file as base64 once it is done |
list_formats |
none | Supported input and output formats |
docs |
none | The FileChanger API documentation as markdown |
list_formats and docs need no API key. Everything else does.
Formats are named as you would expect: markdown, gfm, commonmark, html,
latex, typst, rst, docbook, org, mediawiki, dokuwiki, jira,
textile, djot, json, csv, tsv, native. A couple are output-only,
notably asciidoc and plain. Call list_formats for the authoritative
lists, they are what the server actually validates against.
Once configured, you can just ask: "convert this LaTeX to Typst", and the assistant picks the tool up on its own.
Files and binary formats
convert handles text in, text out, in a single call. For anything else, files
on disk and the binary formats (docx, epub, odt, pdf, images, audio,
video), use convert_file: send the bytes base64-encoded, get a job_id back,
and poll get_conversion until it reports done, at which point it hands back
content_base64. The conversion runs on FileChanger's job queue, so transcoding
a video does not hold a request open. The output is delivered once, so write it
to disk when you get it.
Configuration
| Variable | Required | Default |
|---|---|---|
FILECHANGER_API_KEY |
for converting | none, without it only list_formats and docs answer |
FILECHANGER_URL |
no | https://filechanger.io/mcp |
FILECHANGER_URL is there for self-hosted or staging deployments. This package
is a thin stdio proxy: it forwards JSON-RPC to that endpoint and streams the
response back.
Links
MIT licensed.