MCP Directory

MarkItDown MCP

Official

Give your agent Microsoft's MarkItDown: convert PDFs, Office docs, images, and URLs into LLM-ready Markdown.

Unverified
stdio (local)
No auth
Python

Add to your client

Copy the config for your MCP client and paste it into its config file.

Install / run
pip install markitdown-mcp

Paste into ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "markitdown-mcp": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "markitdown-mcp:latest"
      ]
    }
  }
}

Requires Docker to be installed and running.

Step-by-step guides: Add to Claude Desktop · Add to Cursor · Add to Windsurf

Before you start

  • Python 3.10+ and pip (pip install markitdown-mcp), or Docker for the containerized setup
  • For the recommended Claude Desktop config: build the image first with `docker build -t markitdown-mcp:latest .` from packages/markitdown-mcp
  • No API keys or accounts required

About MarkItDown MCP

MarkItDown-MCP is the MCP front-end for MarkItDown, Microsoft's document-to-Markdown converter built by the AutoGen team (162k+ stars on the monorepo). The server exposes exactly one tool, convert_to_markdown(uri), and delegates everything to the library: PDF, docx, pptx, xlsx, images with EXIF/OCR, audio transcription, HTML, CSV/JSON/XML, ZIP archives, and plain URLs all come back as Markdown. That makes it a drop-in 'document reader' for any MCP client rather than a full document pipeline.

Transport is flexible: run markitdown-mcp for STDIO, or markitdown-mcp --http --host 127.0.0.1 --port 3001 for Streamable HTTP (/mcp) and SSE (/sse). For Claude Desktop, the README recommends building the provided Dockerfile and wiring docker run --rm -i markitdown-mcp:latest into claude_desktop_config.json; add a volume mount like -v /home/user/data:/workdir so file: URIs resolve inside the container.

The trade-offs are clear-eyed in Microsoft's own README. There is no auth: any process on the machine can call an HTTP/SSE instance, and the tool reads whatever the server's user can read, so the docs say plainly not to bind beyond localhost. Conversion quality also inherits MarkItDown's behavior — clean digital PDFs and Office files convert well, while scanned documents depend on optional OCR/transcription extras.

Where it fits: agent setups that constantly hit 'I cannot read this file' walls. It pairs naturally with a filesystem MCP server — one finds files, this one makes them readable — and because output is Markdown rather than extracted plain text, structure like tables and headings survives for the model.

Tools & capabilities (1)

convert_to_markdown

Convert any http:, https:, file:, or data: URI to Markdown.

When to use it

  • Let Claude Desktop read local PDFs, Word and PowerPoint files by converting them to Markdown on demand
  • Fetch a web page or remote document by URL and get clean Markdown back for summarization or extraction
  • Normalize mixed document dumps (Office files, ZIPs, images) into one text format before RAG ingestion
  • Convert data: URIs produced by other tools into readable Markdown mid-conversation

Quick setup

  1. 1pip install markitdown-mcp
  2. 2Run `markitdown-mcp` for STDIO, or `markitdown-mcp --http --host 127.0.0.1 --port 3001` for Streamable HTTP/SSE
  3. 3For Claude Desktop: `docker build -t markitdown-mcp:latest .` in packages/markitdown-mcp, then add the docker run config to claude_desktop_config.json
  4. 4Need local file access in Docker? Add `-v /home/user/data:/workdir` to the args and reference files as /workdir/<name>
  5. 5Verify with `npx @modelcontextprotocol/inspector` — STDIO transport, command `markitdown-mcp`, then run convert_to_markdown on a test URI

Security notes

No authentication: the server runs with your user's privileges, and convert_to_markdown can read any file or network resource that user can reach. Keep it on STDIO or bound to localhost (the default) and use the Docker container with a mounted workdir when you want isolation.

MarkItDown MCP FAQ

Is MarkItDown-MCP safe to run?

Safe for local, single-user use — but it has no authentication, and convert_to_markdown can read any file or network resource your user can. Microsoft's README explicitly warns to keep it bound to localhost (the default) and suggests a container or VM if you need stronger isolation.

What file types can it convert?

Everything MarkItDown supports: PDF, Word, PowerPoint, Excel, images (EXIF/OCR), audio (transcription), HTML, CSV/JSON/XML, ZIP archives, YouTube URLs, EPUBs and more. The tool takes a URI, so both local files (file:) and remote pages (http/https) work.

Do I need to install markitdown separately?

No. `pip install markitdown-mcp` pulls MarkItDown in as a dependency — the MCP package is just a thin STDIO/HTTP/SSE server exposing the one conversion tool.

Alternatives to MarkItDown MCP

Compare all alternatives →

Official MCP reference server for secure local filesystem read/write within allowed directories.

Verified
stdio (local)
No auth
TypeScript
13 tools
Updated 5 months agoRepo

Official MCP server for reading, searching, and manipulating a local Git repository's files and history.

Verified
stdio (local)
No auth
Python
12 tools
Updated 5 months agoRepo

Official AWS Labs MCP server to manage and query S3 Tables (table buckets, namespaces, tables).

Verified
stdio (local)
API key
Python
12 tools
Updated 1 month agoRepo