Fetch MCP Server
Fetches web pages and returns them as HTML, Markdown, plain text, JSON, article text or YouTube transcripts
Microsoft's MCP wrapper for MarkItDown: turn files, web pages and data URIs into Markdown
Official · Microsoft Python Local · stdio Files and storageBrowser automation
78 popularity score ★ 194k ↓ 90k/mo
Opens the app, which asks before it adds the server.
pip install markitdown-mcpclaude mcp add markitdown -- markitdown-mcp{
"mcpServers": {
"markitdown": {
"command": "markitdown-mcp",
"args": []
}
}
}{
"mcpServers": {
"markitdown": {
"command": "markitdown-mcp",
"args": []
}
}
}{
"servers": {
"markitdown": {
"type": "stdio",
"command": "markitdown-mcp",
"args": []
}
}
}[mcp_servers.markitdown]
command = "markitdown-mcp"
args = []gemini mcp add --scope user markitdown markitdown-mcpOpens the app, which asks before it adds the server.
git clone https://github.com/microsoft/markitdown.git
cd markitdown/packages/markitdown-mcp
docker build -t markitdown-mcp:latest .claude mcp add markitdown -- docker run --rm -i markitdown-mcp:latest{
"mcpServers": {
"markitdown": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"markitdown-mcp:latest"
]
}
}
}{
"mcpServers": {
"markitdown": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"markitdown-mcp:latest"
]
}
}
}{
"servers": {
"markitdown": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"markitdown-mcp:latest"
]
}
}
}[mcp_servers.markitdown]
command = "docker"
args = ["run", "--rm", "-i", "markitdown-mcp:latest"]gemini mcp add --scope user markitdown docker -- run --rm -i markitdown-mcp:latestMARKITDOWN_ENABLE_PLUGINS |
Optional: Set to true, 1 or yes to load installed third-party MarkItDown plugins; the repository's Docker image sets it to True. |
|---|---|
EXIFTOOL_PATH |
Optional: Path to the exiftool program used for file metadata; read by the MarkItDown library, which otherwise looks for exiftool in well-known system folders. |
In a container, a setting goes in with -e NAME=value after docker run.
MarkItDown-MCP puts Microsoft's MarkItDown conversion library behind a single MCP tool. Given an http:, https:, file: or data: URI, it fetches or opens the resource and hands back its content as Markdown, so an assistant can read a PDF, Word, PowerPoint or Excel file, an HTML page, a CSV or JSON file, a ZIP archive or a YouTube link as plain structured text.
It speaks STDIO by default. With --http it serves Streamable HTTP (at /mcp) and SSE (at /sse) on 127.0.0.1:3001 unless --host or --port says otherwise; --sse is kept as a deprecated alias for --http. The package installs MarkItDown 0.1.x with all of its optional format dependencies and is built on version 2 of the Python MCP SDK.
Some things the package README leaves out, all in the server's source: third-party MarkItDown plugins stay off unless MARKITDOWN_ENABLE_PLUGINS is set to true, 1 or yes, while the repository's Dockerfile switches them on and runs the server as the unprivileged nobody user. Failures come back as short tool errors (an HTTP status, "File conversion failed.", or the operating system's error text for a file) that leave out the resolved file path. The tool builds a plain MarkItDown converter with no LLM client and no Azure endpoint, so the Azure Document Intelligence settings in the MarkItDown README (AZURE_API_KEY, the DefaultAzureCredential fallback, model ID, features and query fields) and its Content Understanding, LLM image description and OCR options apply to the library and its command line, not to this server.
| Runtime | Python 3.10+ |
|---|---|
| Runs on | macOS, Windows, Linux |
| Also |
|
pip install markitdown-mcp puts the markitdown-mcp command on PATH. For the Docker way, Docker plus a clone of the repository: the image is built locally from packages/markitdown-mcp and is not pulled from a registry. No account or API key.
One tool only: it converts a URI to Markdown and does nothing else. The package is an alpha release (0.0.1a7 on PyPI). There is no authentication on the HTTP and SSE transports; its makers say it is meant for local use with trusted agents. LLM image descriptions, the markitdown-ocr plugin and the Azure conversion services in the MarkItDown library are not wired up, since the tool passes no LLM client or Azure endpoint. Inside the Docker image, local files are visible only when a directory is mounted (for example at /workdir).
Suits a developer who wants an assistant to read local documents or web pages as Markdown on their own machine, with no account and no cloud service involved. It reads files and the network but changes nothing. Pick something else when the server must be shared over a network (it has no sign-in), when you need OCR, image descriptions from an LLM or Azure Document Intelligence output, or when you want more than conversion, such as editing or saving files.
1 only reads. A ? marks an optional parameter.
convert_to_markdownuri: string