An AI agent should choose which file to convert and which format to convert it to, and a conversion engine should do the converting. With the GroupDocs.Conversion.Mcp server, Claude, Cursor or GitHub Copilot call that engine locally, on your machine, from one sentence:

Convert contract.docx to PDF

The step-by-step version with config and troubleshooting is in the documentation: How to convert documents with AI agents using MCP. This post explains why the split matters and where the agent should stay out of the way.

What goes wrong when an agent converts a file itself?

A language model that “converts” a PDF to Word does not convert anything. It reads the content it was given and writes new content in the target format. Whatever the model did not see, it cannot reproduce: the exact font, the column geometry, the page break before a table, the style names a Word template depends on. What comes back looks like a conversion and is a re-typing.

That is the failure mode this post is about. It is quiet: the output opens without errors, so nobody checks it until a table has shifted or a heading has lost its style. Rendering fidelity is deterministic engine work, not generation work.

What should the agent decide, and what should the engine do?

Split the job along the line between judgment and execution.

Question The agent decides The engine does
Which files are in scope? Reads your prompt and the storage folder Nothing
Which target format? Maps “make it editable” to DOCX, “archive it” to PDF Nothing
Is the file even convertible? Calls get_supported_formats and reads the answer Reports the valid target formats
How big is the file? Calls get_document_info and reads the page count Reads type, page count, properties
The conversion itself Calls convert Renders the output with the GroupDocs.Conversion engine
What to do on failure Retries, asks you, or skips the file Returns the reason as text

The agent never touches the bytes of your document. It passes a file name and a format, and the engine returns a file.

How do you connect an agent to the engine locally?

Register the server once in your client. Claude Desktop uses claude_desktop_config.json, Claude Code uses claude mcp add, VS Code with GitHub Copilot uses mcp.json, and Cursor uses ~/.cursor/mcp.json. The server also supports Visual Studio 2022, Windsurf, Cline, Codex CLI and JetBrains Rider. A Claude Desktop entry looks like this:

{
  "mcpServers": {
    "groupdocs-conversion": {
      "type": "stdio",
      "command": "dnx",
      "args": ["GroupDocs.Conversion.Mcp", "--yes"],
      "env": { "GROUPDOCS_MCP_STORAGE_PATH": "/path/to/documents" }
    }
  }
}

dnx needs the .NET 10 SDK. If you prefer Docker, the self-contained image is ghcr.io/groupdocs-conversion/conversion-net-mcp:latest, run with docker run --rm -i -v $(pwd)/documents:/data in front of it. The client talks to the server over stdio: the path is agent, local server, local filesystem. Restart the client after registering.

Which tool does each request trigger?

The server exposes four tools. Their names are literal; agents search for them when something breaks.

  • convert converts a document to another format and saves the result in your storage or output folder. It takes file, format (for example pdf, docx, xlsx, pptx, html, png, jpg, csv, txt, rtf, md) and an optional password.
  • get_supported_formats lists the target formats a given source file can become.
  • get_document_info returns file type, page count and basic properties without converting.
  • get_license_status reports whether the server runs in evaluation, license-file or metered mode.

Open-ended prompts work because the agent chains them:

What formats can I turn this Visio file into? Then convert it to PDF.

Check the page count of whitepaper.pdf first, then convert it to DOCX.

Existing files are never overwritten. A second conversion of the same file gets a distinct name, such as report (1).pdf.

Example session

This is an abridged, illustrative session built from the tool descriptions in the documentation, not a screenshot.

You:    Convert contract-draft.pdf to DOCX so I can edit it.
Agent:  [calls convert with file.filePath = "contract-draft.pdf", format = "docx"]
Agent:  Done. The converted file is saved as contract-draft.docx in your output folder.

For the full loop, the n8n walkthrough shows the same engine driven by a workflow instead of a chat, and the announcement covers the server in general.

What are the limits?

  • Evaluation mode. Without a license the server adds an evaluation watermark to converted output and caps each server process at 15 opened documents; restarting the server resets the count. Ask your agent “what is the license status of the conversion server?” first; get_license_status answers without processing a document.
  • No OCR. The server converts documents that have a text layer. A scan saved as an image-only PDF will not come out as editable text.
  • Conversion, not extraction. This server transforms whole documents. For field-level data extraction, the companion GroupDocs.Parser.Mcp server (delivered as a Docker image only) is the better fit, and many pipelines use both.

FAQ

Can Claude convert a docx to pdf? Yes, with a conversion server attached. Claude calls convert with format: "pdf", and the GroupDocs engine produces the file on your machine.

Do my files get uploaded when an agent converts them? Not with this server. It runs locally over stdio, and the documents stay in your storage folder. Your license file is also read from local disk.

Which formats can the server convert? Over 100 document, spreadsheet, presentation, image, email, CAD and web formats, the same set as the GroupDocs.Conversion .NET library. Ask get_supported_formats for the exact list for a given file.

Go deeper