
MarkItDown MCP
OfficialGive your agent Microsoft's MarkItDown: convert PDFs, Office docs, images, and URLs into LLM-ready Markdown.
Add to your client
Copy the config for your MCP client and paste it into its config file.
pip install markitdown-mcpPaste 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_markdownConvert 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
- 1pip install markitdown-mcp
- 2Run `markitdown-mcp` for STDIO, or `markitdown-mcp --http --host 127.0.0.1 --port 3001` for Streamable HTTP/SSE
- 3For Claude Desktop: `docker build -t markitdown-mcp:latest .` in packages/markitdown-mcp, then add the docker run config to claude_desktop_config.json
- 4Need local file access in Docker? Add `-v /home/user/data:/workdir` to the args and reference files as /workdir/<name>
- 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.
Official MCP server for reading, searching, and manipulating a local Git repository's files and history.
Official AWS Labs MCP server to manage and query S3 Tables (table buckets, namespaces, tables).
Compare MarkItDown MCP with: