MCP server
Connect Claude, Cursor, or any MCP client to ChangeThisFile — convert files between 999 routes with two tools, no API key.
ChangeThisFile ships a remote Model Context Protocol server. Any MCP-capable client — Claude.ai, Claude Code, Claude Desktop, Cursor, or your own agent — can convert files between 999 conversion routes with no account or API key.
| Endpoint | https://changethisfile.com/mcp |
| Transport | Streamable HTTP (POST), MCP spec 2025-03-26 |
| Authentication | None required |
| Official registry | com.changethisfile/mcp |
| Source (stdio bridge) | github.com/aadilr/changethisfile-mcp |
Connect #
Claude.ai (web): Settings → Connectors → Add custom connector → paste https://changethisfile.com/mcp.
Claude Code:
claude mcp add --transport http changethisfile https://changethisfile.com/mcpClaude Desktop / Cursor (stdio clients) — add to your MCP config:
{
"mcpServers": {
"changethisfile": {
"command": "npx",
"args": ["-y", "github:aadilr/changethisfile-mcp"]
}
}
}Anything else — it is plain JSON-RPC 2.0 over HTTPS:
curl -X POST https://changethisfile.com/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'Tools #
convert_file #
Convert a file and get back a temporary download URL. Pass either source_url or base64_content (+ source_format).
| Argument | Required | Description |
|---|---|---|
target_format | Yes | Target extension, e.g. pdf, mp3, json |
source_url | One of | Publicly accessible URL of the file (preferred for large files) |
base64_content | One of | Base64-encoded file content (≤ 25 MB decoded) |
source_format | With base64 | Source extension; auto-detected from URL/filename otherwise |
filename | No | Filename hint for auto-detection |
curl -X POST https://changethisfile.com/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"convert_file","arguments":{"source_url":"https://example.com/report.docx","target_format":"pdf"}}}'The result text contains a signed download URL (valid 1 hour); the converted file itself is deleted within 24 hours.
list_conversions #
List every supported route, optionally filtered by source format:
curl -X POST https://changethisfile.com/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"list_conversions","arguments":{"source_format":"docx"}}}'Limits #
| Limit | Value |
|---|---|
convert_file calls | 5 / minute per IP |
| Other tool calls | 30 / minute per IP |
| Max input size | 25 MB |
| Download URL validity | 1 hour |
| File retention | Deleted within 24 hours |
Need more? Get a free API key (1,000 conversions/month) and use the authenticated REST API, or see pricing for paid tiers.
Use as an Agent Skill #
For skills-capable agents (Claude Code, Codex CLI, Cursor, Gemini CLI, Copilot, and others), install the file-conversion skill — it uses the MCP tools when connected and falls back to a bundled script over plain HTTPS otherwise:
npx skills add aadilr/changethisfile-mcpClaude Code users can alternatively install the plugin (bundles the MCP server + skill): /plugin marketplace add aadilr/changethisfile-mcp then /plugin install changethisfile@changethisfile.
Troubleshooting #
"Rate limit exceeded (5/min per IP)" — wait 60 seconds, or switch to an API key for higher per-key limits.
"Unsupported conversion: X→Y" — the error lists valid targets for your source format; call list_conversions to browse all routes, or see supported formats.
"File too large" — the no-auth MCP path caps inputs at 25 MB. Use the authenticated API for files up to 5 GB (plan-dependent).
Download URL returns 410/expired — signed URLs last 1 hour. Re-run the conversion to get a fresh URL.
GET /mcp returns 405 — expected. The server is POST-only (no SSE stream); MCP clients fall back to POST mode automatically.
Tools don't appear in your client — remove and re-add the server (Claude.ai: Settings → Connectors; Claude Code: claude mcp remove changethisfile then re-add). Verify the endpoint responds with the curl tools/list example above.
Conversion fails with a 5xx — transient backend issue; retry once, then check system status or email support@changethisfile.com.