docling.rs: a document converter with an MCP server

docling.rs

A Rust port of docling that turns PDF, Office, HTML and scans into Markdown and JSON in one binary, with an MCP mode

  • 135 ★ on the repository
  • Last commit
  • MIT
MCP server

Extended access

Why this level

  • Reads files from the `--root` folder and, with the flag on, loads documents by URL
  • Document contents go to the model
All reasons and checks

docling-project/docling.rs

Install

Manual install

claude mcp add docling -- docling-rs mcp --root ~/Documents

From the README, the docling-rs binary must be installed.

Access and checks

How we review

Extended accessThe tool runs code or makes network calls and only reads external data.

  • Reads files from the `--root` folder and, with the flag on, loads documents by URL
  • Document contents go to the model

This is third-party code. Review the repository files before installing.

What it does

docling.rs turns documents into Markdown, docling JSON and other shapes handy for a language model and RAG pipelines. It is a full Rust port of IBM docling: the same output from one static binary, with no Python or PyTorch. It handles PDF, Office formats, HTML, scans with text recognition and audio, and keeps structure: headings in order, tables as tables. The `docling-rs mcp` command starts an MCP server from the same binary. An agent gets three tools: `convert_to_markdown(uri)` with the name and contract of MarkItDown, `convert(uri, to, options)` for other output formats and `list_input_formats()`. Reading local files is limited to the folder from `--root`, and fetching URLs is switched on with the `--allow-url-fetch` flag. Familiar routes exist too: a CLI, packages for Python and Node.js, a Rust crate and Docker images. A compatibility layer lets you swap a MarkItDown, Marker or MinerU import for `docling_rs` and keep your code.

Who it is for. People who prepare documents for RAG and agents and want to replace a Python conversion stack with one fast binary, including in place of MarkItDown.

Good fit when

  • An agent has to read PDFs with tables and scans and the Markdown answer must keep structure
  • You use `markitdown-mcp` and want to change only the launch command and keep the tool name
  • You prepare a document corpus for an index in batches and Python with PyTorch is too heavy
  • A Node.js or Rust project needs a converter as a library, with no separate service

Not a fit when

  • You need a service for documents with instant URL loading and no setup: addresses are off until `--allow-url-fetch` is passed
  • Your stack is fully on Python docling with your own models: the gain will be small
  • You need to edit documents: the converter only reads and transforms

Example request

Convert `~/Documents/report.pdf` to Markdown, keep the tables, then list the second-level headings.

MCP

Transport
stdio, http
Authentication
not required

Limitations

The MCP server reads local files only inside the folder from `--root`, and loading by address is off until `--allow-url-fetch` is passed. Models for page layout, tables and text recognition are installed by a separate script or come in the Docker image, and the `curl` install from the README runs a script from the network.

The project claims output parity with Python docling and gives speed and memory measurements, but the numbers are the authors' own, taken on their test set. Prebuilt binaries exist for Linux x64 and arm64, s390x and macOS on arm64, and other platforms build from source. The last commit is from November 2026.

How to disable. Remove the docling server from the client config with `claude mcp remove docling` and uninstall the package or binary the way you installed it. Downloaded models sit in a separate folder and are deleted by hand.

FAQ

How do I connect docling.rs to Claude Code?

With `claude mcp add docling -- docling-rs mcp --root ~/Documents` once the binary is installed. The same server starts from PyPI through `uvx docling-rs-mcp --root ~/Documents`.

How does docling.rs differ from Python docling?

It is a Rust port with the same output, one static binary and no Python or PyTorch. By the authors' measurements PDFs are processed faster with less memory, and Office and HTML much faster.

Can it replace MarkItDown?

Yes: the `convert_to_markdown(uri)` tool keeps the name and contract, so with a `markitdown-mcp` setup only the launch command changes. In Python swap the import for `docling_rs.markitdown`.

How do I allow loading documents by URL?

Start the server with the `--allow-url-fetch` flag. Without it only local files inside the folder from `--root` are loaded.

Which formats are supported?

PDF, Office formats, HTML, scans and audio. The `list_input_formats` tool returns the full list.

Discussion

No questions or reviews yet.

Official

An MCP server built on Docling: converts PDFs into structured documents, builds new ones and feeds them to RAG

MCP serverExtended access791Repository stars

Docling is a CLI for mixed document archives, bringing PDFs, office files and spreadsheets into a shared format for AI search.

CLIExtended access70.5KRepository stars
Official

Microsoft's utility and MCP server that turn PDF, Word, Excel, PowerPoint, HTML and other files into Markdown for models

MCP serverExtended access195KRepository stars

An MCP server that turns PDF, DOCX, XLSX, PPTX, images, audio, web pages and YouTube transcripts into Markdown

MCP serverExtended access3KRepository stars

An MCP server on top of pandoc: the agent converts Markdown, HTML, DOCX, LaTeX, EPUB, ODT and other formats into one another

MCP serverExtended access587Repository stars

Doc-Ops MCP converts DOCX, Markdown, HTML and PDF between formats and stamps a watermark or QR code onto finished PDFs.

MCP serverExtended access140Repository stars

Comparison with similar tools

Cards that share the main search query, and how they differ.

ToolOfficialAuthenticationRepository starsMain difference
docling.rs: a document converter with an MCP server (this card)nonot required135
Docling MCPyesnot required791a server for Python docling, while this is a Rust port in one binary
MarkItDownyesnot required195,008the same `convert_to_markdown` contract, but with page layout analysis, tables and text recognition

README in short

The README tells about the Rust port of docling and its speed, gives migration routes from MarkItDown, Marker and MinerU by swapping the import, install routes (script, `cargo`, `pip`, `npm`, Docker), comparisons with measurements, an MCP server section and a RAG subsystem.

README badge

Report a problem