MCP

MarkItDown MCP: Convert a public https page to Markdown first

For people who want to turn a page or file into Markdown on this machine; there is no auth and it can read any file the user can read, so the first time use only a public https URI and STDIO.

Official source · microsoft/markitdown-mcp

Install

pip install markitdown-mcp

Who it's for

For people who want to convert a document or web page to Markdown on this machine and hand it to a trusted agent. The evidence states: markitdown-mcp provides lightweight STDIO, Streamable HTTP, and SSE servers, and exposes only one tool, convert_to_markdown(uri); the uri can be http:, https:, file:, or data:.

It is designed for local, trusted agents. There is no authentication; process permissions equal the user who started it. convert_to_markdown can read any file that user can read, and can fetch network data. Do not expose it to untrusted clients on a shared machine.

The evidence does not list clients. Do not bind HTTP/SSE to anything other than localhost unless you understand the risk.

First try in 3 minutes

Take the pip main path; do not treat Docker as the primary install:

pip install markitdown-mcp
markitdown-mcp

STDIO is the default. When you need HTTP/SSE, the evidence gives:

markitdown-mcp --http --host 127.0.0.1 --port 3001

The first time, use STDIO and keep the bind on this machine.

Prerequisites: local Python/pip works; the first conversion is an https: page you have the right to access publicly — do not feed a key file or an internal file: first. This will read the URI you specify and may go out to the network.

Where to configure: in the client MCP, set command to markitdown-mcp (stdio). Open HTTP only after you understand that any process on this machine can reach it.

Low-risk first call: convert_to_markdown(uri) with a public https: uri. Do not use file: pointing at a home directory or secrets, and do not change --host.

Success signal: the tool returns Markdown converted from that URI. If the process will not start, check the pip package name first; do not switch to Docker.

Use cases

Case 1: Convert a public web page to Markdown. Call convert_to_markdown with a https: uri. The evidence only guarantees it accepts this kind of URI; it does not document output style, size limits, or login-wall handling. So what you can confirm is: you see the converted text.

Case 2: Convert a local file to Markdown. Use a file: uri. This reads disk as the server user; in HTTP/SSE mode, other processes on this machine can trigger the same read. Confirm the path has no secrets first. A data: URI also goes through conversion; the evidence does not document a length limit. Docker build is docker build -t markitdown-mcp:latest . then docker run -it --rm markitdown-mcp:latest, which is not the same main path as pip.

Limits

No authentication; permissions equal the starting user. HTTP/SSE binds to localhost by default and can still be reached by other processes or users on this machine. Do not bind it to another NIC. The only tool is convert_to_markdown. It can read files and network data the user can read — not zero risk, and not a reversible write: the evidence has no undo. Do not treat Docker and pip as parallel primary installs.