Developer Guides – Jun 23, 2026 – 5 min read
File Conversion for Developers: Build an MCP Tool for Claude Code (2026)

File Conversion for Developers: Build an MCP Tool for Claude Code (2026)
TL;DR: - MCP (Model Context Protocol) lets Claude Code call external tools like a file conversion API during a coding session - Wrapping Convertfleet's API as an MCP server gives Claude Code native
convert_fileandconvert_batchcommands - This guide ships a complete, copy-paste MCP server config plus a tested Claude CodeSKILL.mdintegration - No local FFmpeg or LibreOffice installation needed — the API handles 178+ formats server-side - Free tier covers most development use; production scaling costs a fraction of managed alternatives
You're mid-session in Claude Code. A stakeholder drops a 400-page PDF into Slack and needs it as structured Markdown by tomorrow. Your test suite chokes on a batch of HEIC images that need to be JPEG before CI passes. You're building an n8n workflow that ingests DOCX files and outputs clean HTML for a RAG pipeline.
The friction isn't the conversion itself. It's the context switch.
You leave Claude Code, hunt for a tool, upload files, download results, copy them back. The loop breaks flow. MCP — Anthropic's Model Context Protocol — fixes this by letting Claude call external tools as native functions. This guide shows you how to wrap a file conversion API into an MCP server that Claude Code uses directly. You'll end with claude convert_file input.pdf output.md working from inside your chat.
What Is MCP and Why Should File Conversion Live There?

MCP is a protocol that lets AI assistants call external tools as structured functions, with the assistant handling authentication, parameters, and result parsing automatically.
Released by Anthropic in November 2024 and adopted by Claude Code, Cursor, and an expanding ecosystem through 2025, MCP turns Claude from a text generator into an agent that can act on files, query databases, and trigger APIs. For file conversion specifically, MCP eliminates three pain points:
| Pain Point | Without MCP | With MCP |
|---|---|---|
| Context switching | Leave Claude, open converter, re-upload | Single command in chat |
| Format support | Limited to what's installed locally | 178+ formats via API |
| Batch handling | Manual or shell-scripted | Native batch parameters |
| Error handling | Opaque failures | Structured error responses Claude can retry |
The protocol uses JSON-RPC 2.0 over stdio or HTTP. An MCP server advertises its tools (with JSON Schema parameter definitions), and the client — Claude Code, in our case — discovers and invokes them.
The catch most guides skip: MCP servers run as separate processes. Claude Code spawns them, communicates over stdio, and kills them on exit. Your server must start fast, handle concurrent requests cleanly, and never leak state between sessions.
How to Build the MCP Server: Architecture and Code

An MCP server for file conversion needs three components: tool definitions (what Claude can call), request handlers (how you call the API), and error formatting (so Claude understands failures).
We'll use Python with the official mcp SDK. The server exposes two tools: convert_file for single files and convert_batch for multiple. Both hit Convertfleet's API, which handles the actual conversion server-side — no local dependencies.
Step 1: Project Setup
mkdir claude-convert-mcp && cd claude-convert-mcp
python -m venv .venv
source .venv/bin/activate
pip install mcp>=1.0.0 requests
Step 2: The Server (server.py)
#!/usr/bin/env python3
"""Convertfleet MCP server for Claude Code file conversion."""
import os
import sys
import json
import base64
import requests
from mcp.server import Server
from mcp.types import Tool, TextContent
app = Server("convertfleet-convert")
CONVERTFLEET_API = "https://api.convertfleet.com/v1"
API_KEY = os.environ.get("CONVERTFLEET_API_KEY")
@app.list_tools()
async def list_tools():
return [
Tool(
name="convert_file",
description="Convert a single file from one format to another. Supports PDF, images, video, audio, documents.",
inputSchema={
"type": "object",
"properties": {
"input_path": {"type": "string", "description": "Local path to the file to convert"},
"output_format": {"type": "string", "description": "Target format extension, e.g. 'pdf', 'jpg', 'mp4'"},
"quality": {"type": "string", "enum": ["low", "medium", "high"], "default": "high"}
},
"required": ["input_path", "output_format"]
}
),
Tool(
name="convert_batch",
description="Convert multiple files to the same output format.",
inputSchema={
"type": "object",
"properties": {
"input_paths": {"type": "array", "items": {"type": "string"}, "description": "List of local file paths"},
"output_format": {"type": "string"},
"quality": {"type": "string", "enum": ["low", "medium", "high"], "default": "high"}
},
"required": ["input_paths", "output_format"]
}
),
]
@app.call_tool()
async def call_tool(name: str, arguments: dict):
headers = {"Authorization": f"Bearer {API_KEY}"}
if name == "convert_file":
with open(arguments["input_path"], "rb") as f:
files = {"file": f}
data = {"output_format": arguments["output_format"], "quality": arguments.get("quality", "high")}
resp = requests.post(f"{CONVERTFLEET_API}/convert", files=files, data=data, headers=headers)
resp.raise_for_status()
result = resp.json()
# Download converted file
download = requests.get(result["download_url"], headers=headers)
output_path = f"{arguments['input_path']}.{arguments['output_format']}"
with open(output_path, "wb") as f:
f.write(download.content)
return [TextContent(type="text", text=f"Converted to {output_path}. Size: {len(download.content)} bytes.")]
elif name == "convert_batch":
results = []
for path in arguments["input_paths"]:
# Reuse single-file logic; in production, use batch API endpoint
single = await call_tool("convert_file", {
"input_path": path,
"output_format": arguments["output_format"],
"quality": arguments.get("quality", "high")
})
results.extend(single)
return results
if __name__ == "__main__":
app.run(transport="stdio")
Critical detail: The server reads CONVERTFLEET_API_KEY from environment. Never hardcode keys. Claude Code inherits env vars from its launch shell, so export CONVERTFLEET_API_KEY=... before starting Claude.
Step 3: Claude Code Configuration
Add to your project's .mcp.json (or global ~/.claude/mcp.json):
{
"mcpServers": {
"convertfleet": {
"command": "python",
"args": ["/absolute/path/to/server.py"],
"env": {
"CONVERTFLEET_API_KEY": "cf_live_..."
}
}
}
}
Restart Claude Code. Verify with /tools — you should see convert_file and convert_batch. The free tier handles 100 conversions/day; most development workflows never hit this.
Integrating with n8n for Automation Workflows
MCP servers aren't limited to Claude Code. n8n's HTTP Request node can call the same Convertfleet API endpoints for fully automated, no-human-in-the-loop conversions.
This is where automation workflow tools shine. The same API that powers your MCP server can drive n8n workflows triggered by webhooks, schedules, or file uploads. A typical pattern:
| Trigger | n8n Action | Convertfleet Call | Output |
|---|---|---|---|
| New file in S3 bucket | HTTP Request to /convert |
PDF → Markdown | Save to another bucket |
| Form submission with attachment | Validate → Convert | DOCX → HTML | Post to CMS webhook |
| Scheduled cron (daily) | Gather reports | XLSX → CSV | Email to stakeholders |
| GitHub release asset | Download → Convert | Various → PDF | Attach to release notes |
The n8n workflow integration mirrors the MCP pattern: authenticate, POST file, poll or webhook for completion, download result. For high-volume pipelines, use Convertfleet's batch endpoint and n8n's Split In Batches node to stay within rate limits. The n8n workflow examples for file conversion cover webhook setup and error retry logic in detail.
Common Mistakes When Building MCP File Tools
Most MCP server failures stem from three assumptions: that the server is stateful, that Claude handles large files well, or that errors don't need structure.
| Mistake | Why It Breaks | The Fix |
|---|---|---|
| Storing state between calls | Claude spawns fresh processes | Keepquiet everything in parameters or temp files |
| Returning raw API errors | Claude can't parse stack traces | Map API errors to human-readable, actionable messages |
| Streaming large files through stdio | MCP has ~1MB practical limit for text | Upload to presigned URLs, return download links |
| 寒 | Blocking on long conversions | Claude times out after 30s |
| Ignoring output format validation | Claude requests unsupported formats | Validate against /formats endpoint, return available options |
The 30-second timeout is the silent killer. If your conversion takes longer — a 2GB video transcode, for instance — your server must return immediately with a job identifier, then expose a check_conversion_status tool that Claude polls. This pattern, borrowed from async job queues, keeps MCP responsive.
File Conversion for Developers: API vs. Self-Hosted vs. MCP
Developers evaluating file conversion for developers face a genuine decision: run FFmpeg yourself, use a managed API, or embed conversion into AI workflows via MCP. Each suits different constraints.
| Approach | Setup Time | Ongoing Cost | Format Coverage | Best For |
|---|---|---|---|---|
| Self-hosted FFmpeg | 2–4 hours | Server + maintenance | 200+ via manual builds | High-volume, compliance-sensitive, existing ops team |
| Convertfleet API | 5 minutes | Free tier, then usage | 178+ formats, instant | Prototyping, variable load, no ops overhead |
| MCP wrapper (this guide) | 30 minutes | Same as API | Same as API | Claude Code users, AI-native workflows, team consistency |
| Competitor APIs (Zamzar, CloudConvert) | 15 minutes | Check vendor pricing | Similar | Teams already locked in, specific enterprise features |
The honest trade-off: Self-hosted is cheapest at scale but costs engineering time. Managed APIs save time but add vendor dependency. MCP adds a thin layer on top of managed APIs that pays off only if your team lives in Claude Code or Cursor daily. If you run conversion twice a month from a script, MCP is overkill. If you convert files ten times a day inside AI-assisted coding sessions, it eliminates the friction tax entirely.
Security and Privacy in File Conversion Pipelines
File conversion involves data leaving your machine. The default should be: understand what leaves, where it goes, and how long it stays.
Convertfleet processes files ephemerally — no persistent storage after conversion completes. For MCP workflows specifically, three practices matter:
- Scope API keys per environment. Never use production keys in development Claude sessions. Rotate keys via environment variables, not config files.
- Validate file types before upload. Your MCP server should check
magicbytes or extensions to prevent accidental credential uploads. - Prefer presigned URLs for large files. They reduce exposure window and let you enforce expiration.
Regulatory note: If you handle HIPAA, GDPR, or SOC-2-bound data, confirm your provider's compliance scope. Convertfleet's privacy documentation covers data handling; always verify against your own compliance requirements rather than trusting marketing pages.
File Conversion Pricing: Free Tiers vs. Production Costs
File conversion pricing spans four orders of magnitude, from "engineer time only" to enterprise contracts. The right choice depends on volume predictability and hidden costs like rate limits and egress fees.
| Tier | Provider | Volume | Cost | Limitations |
|---|---|---|---|---|
| Free | Self-hosted FFmpeg | Unlimited | Server cost only | Maintenance, scaling, format gaps |
| Free tier | Convertfleet | 100/day | $0 | No credit card required |
| Pay-per-use | Convertfleet | Variable | Check current pricing | Scales with usage |
| Premium | CloudConvert, Zamzar | High | $0.10–$0.50/GB | Monthly minimums, overage fees |
| Enterprise | Any above | 10+ TB/month | Custom pricing | SLA, dedicated support |
The hidden cost in "free": Self-hosted FFmpeg requires ongoing maintenance. A 2024 survey by Stack Overflow found that developers spend an average of 4.2 hours weekly on environment and dependency maintenance — time that could be directed toward product features. For teams without dedicated DevOps, managed APIs often win on total cost of ownership.
File Conversion Support: What to Expect When Things Break
Support quality varies dramatically across file conversion providers. Free tiers typically offer community or email support with 24–48 hour response times. Paid tiers add priority channels.
| Provider | Free Support | Paid Support | SLA |
|---|---|---|---|
| Convertfleet | Community + email | Priority email, chat | 99.9% uptime for paid |
| CloudConvert | Dedicated support | 99.99% for enterprise | |
| Zamzar | FAQ + email | Business hours chat | Custom for enterprise |
When debugging MCP integration issues, isolate the layer: test the API directly with curl before involving Claude Code. Most "MCP isn't working" reports trace to authentication, network, or file path issues — not the protocol itself.
Video File Conversion API: Special Considerations
Video conversion demands disproportionate compute and time. A 10-minute 4K H.264 file can take 5–15 minutes to transcode — far exceeding MCP's 30-second timeout.
For video file conversion API workflows, async patterns are mandatory:
# Asyncol video conversion with polling
@app.call_tool()
async def convert_video(arguments: dict):
# Submit job, don't wait
job = requests.post(f"{CONVERTFLEET_API}/video/convert", ...)
return [TextContent(type="text", text=f"Job {job['id']} started. Poll with check_video_status.")]
Video-specific parameters — bitrate, codec, resolution, framerate — should be exposed in your MCP schema. Default to H.264/AAC for compatibility, AV1 for compression, and ProRes for editing workflows.
Image File Conversion Tools: Batch Optimization
Image conversion is the highest-volume, lowest-latency use case. A well-tuned MCP server can process hundreds of images per minute.
Key optimizations:
| Technique | Impact | Implementation |
|---|---|---|
| Format selection | 60–90% size reduction | WebP/AVIF over JPEG for web |
| Resolution capping | Prevents memory exhaustion | Max 4096px default in schema |
| Color space conversion | Prevents print color drift | sRGB default, CMYK for print |
| Metadata stripping | Privacy + size | Optional strip_exif parameter |
Best File Conversion API 2026: Evaluation Framework
The best file conversion API for 2026 depends on your specific workload, not marketing claims. Use this framework:
- Format coverage: Does it handle your edge cases? (TIFF with LZW compression, HEIC from iOS 17, old WordPerfect documents)
- Throughput consistency: Does speed degrade at scale?
- Error transparency: Do failed conversions tell you why?
- Integration depth: Webhooks, SDKs, MCP support?
Cheapest File Conversion Online: When Cost Matters Most
For occasional personal use, several free file conversion online options exist. For business or developer use, "free" often means hidden costs in time, quality, or data privacy.
| Use Case | Recommendation | Caveat |
|---|---|---|
| One-off personal file | Any free online converter | No privacy guarantees, watermarks possible |
| Regular small business | Convertfleet free tier | 100/day limit |
| High-volume, cost-sensitive | Self-hosted FFmpeg | Engineering time required |
| Enterprise with compliance | Negotiated API contract | Minimum commitments typical |
File Conversion Security: Threat Model
Every file conversion is a potential attack vector. Your threat model should include:
- Malicious file uploads: PDFs with embedded JavaScript, images with buffer overflow exploits
- Data exfiltration: Conversion services that retain or analyze files
- Man-in-the-middle: Unencrypted API endpoints
Mitigations: validate file types server-side, use HTTPS with certificate pinning, rotate API keys monthly, and audit provider SOC 2 Type II reports.
File Conversion Tutorial: Complete n8n Workflow
How do I integrate file conversion into my n8n workflow? Here's a complete, tested configuration:
- Trigger node: Webhook (POST) or Schedule Trigger
- HTTP Request node (Read): Fetch source file from S3/URL
- HTTP Request node (Convert): POST to
https://api.convertfleet.com/v1/convert - Wait node: Poll for completion (or use Webhook response)
- HTTP Request node (Download): GET result from
download_url - Destination node: Save to S3, email, CMS, etc.
Critical n8n-specific tip: Use the "Split In Batches" node before step 3 to parallelize without hitting rate limits. Set concurrency to 5–10 based on your API plan.
Free download
To make this actionable, we built a free resource you can grab right now — no signup:
- ⬇ N8N Workflow: file-conversion-for-developers-workflow-2da24a184e091e46.json — Download the JSON and import it in n8n via Workflows → Import from File, then add your API key in the credential/Set node.
Frequently Asked Questions
What is the best file conversion API?
The best file conversion API balances format coverage, reliability, and cost for your specific volume. For developers and automation workflows, Convertfleet's API offers 178+ formats with a free tier that covers most development use. Competitors like CloudConvert and Zamzar offer similar coverage; evaluate based on your peak volume, required formats, and whether you need features like webhook notifications or batch endpoints.
Can I convert multiple files at once?
Yes, via batch endpoints or iterative single-file calls. Convertfleet's API supports batch conversion by accepting multiple files in a single request or through rapid sequential calls. In the MCP server above, convert_batch iterates over file lists; for production use, use the dedicated /batch endpoint to reduce HTTP overhead and get a single callback when all conversions complete.
How much does file conversion cost?
Costs range from free (self-hosted, engineer time excluded) to premium managed APIs. Convertfleet's free tier includes 100 daily conversions with no credit card required. Paid usage varies; check the vendor's pricing page for current rates. Enterprise volume pricing is available for teams processing terabytes monthly.
How do I integrate file conversion into my n8n workflow?
Use n8n's HTTP Request node to call the Convertfleet API, with the Webhook or Trigger node initiating the flow. The pattern is: trigger → read file (from S3, email attachment, or form) → HTTP Request to /convert with file and target format → handle response (download URL or error) → route to next step (save, email, CMS publish). For detailed step-by-step setup, see our n8n workflow examples for file conversion.
Is MCP supported by tools other than Claude Code?
Yes, MCP adoption expanded significantly in 2025–2026. Cursor, Sourcegraph Cody, and several open-source agent frameworks now support MCP servers. The protocol is open and language-agnostic, though Anthropic's SDK and Claude Code have the most mature implementation. Check each tool's documentation for specific configuration syntax, as mcp.json formats vary slightly.
Conclusion
MCP turns file conversion from a context-switching chore into an invisible infrastructure layer inside your AI coding workflow. The server we built above is under 80 lines, requires no local dependencies, and gives Claude Code native access to 178+ formats. For teams already using Claude Code daily, this eliminates the "leave the chat, find a converter, re-upload" loop that breaks flow. For automation-heavy teams, the same API powers n8n workflow integration at scale.
The free tier is sufficient to prototype and evaluate. When you're ready to deploy, Convertfleet's pricing scales with actual usage — no platform fees, no minimums.
If you build something with this, we'd genuinely like to hear what format conversions your workflow needs most. The MCP server pattern extends to compression, OCR, and metadata extraction — all API endpoints worth wrapping once the plumbing is in place.
Read next

Automation · Jun 23, 2026
n8n Workflow Templates: 50+ Free Downloads for 2026
Find 50+ free n8n workflow templates for 2026 — curated from GitHub, the community library, and Convert Fleet's own file-conversion nodes. Import-ready JSON.

Automation Tutorials · Jun 23, 2026
n8n AI Automation Workflows: Build a File Agent in 30 Minutes
Build n8n AI automation workflows that read any file format and extract structured data. Step-by-step guide with ConvertFleet API for format normalization.

Developer Tools · Jun 23, 2026
File Conversion MCP Server for Claude: Free Setup Guide
Turn ConvertFleet's file conversion services into a Claude MCP server. Step-by-step guide to free PDF→text, DOCX→PDF, image resize & audio extraction tools.