# MarkItDown MCP server

> Convert PDF, Office documents, HTML, images and other files or URLs to Markdown for use in LLM context.

- Listing: https://mcp.tc/i/markitdown
- Connect: this is a local (stdio) server; install it on your machine (see Install). The listing link is a page, not an MCP endpoint.
- Type: local (stdio)
- Auth: no API key needed
- Category: [Utilities](https://mcp.tc/c/utilities)
- Vendor: Microsoft
- Verified: yes, mcp.tc checked that this is the official server (https://mcp.tc/verify). It says who runs the server, not that it is safe.
- Homepage: <https://github.com/microsoft/markitdown>
- Docs: <https://github.com/microsoft/markitdown>
- Repository: <https://github.com/microsoft/markitdown/tree/main/packages/markitdown-mcp>
- Package: pypi `markitdown-mcp`

## About

Wraps the MarkItDown Python library and exposes one tool, convert\_to\_markdown, which takes an http:, https:, file: or data: URI and returns the content as Markdown. It handles formats such as PDF, Office documents, HTML and images.

Runs locally as a Python package with uvx markitdown-mcp over STDIO by default. It can also serve Streamable HTTP or SSE on localhost. No sign-in or API key is needed. The server has no authentication and runs with the privileges of the user, so it can read any file that user can access. Keep it bound to localhost, or run it in Docker with only the directories you need mounted.

## What it can do

- Convert remote web pages and files to Markdown via http: and https: URIs
- Convert local files through file: URIs
- Convert inline content passed as data: URIs
- Run over STDIO, Streamable HTTP or SSE
- Run in Docker with a mounted directory for local files

## Example prompts

- "Convert file:///home/user/data/report.pdf to Markdown and summarize it."
- "Fetch https://example.com/page.html as Markdown."
- "Turn this Word document into Markdown so I can edit it."
- "Read the Excel file at file:///home/user/data/budget.xlsx as Markdown."

## Install

### Claude Code

1. Run this in a terminal, in your project folder:

```bash
claude mcp add --transport stdio markitdown -- uvx markitdown-mcp
```

2. Start Claude Code and type `/mcp`. **markitdown** should show as connected.

Add `--scope user` to make it available in every project.

### Claude Desktop

1. Open **Settings → Developer → Edit Config**. It opens `claude_desktop_config.json`. Add:

`claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "markitdown": {
      "command": "uvx",
      "args": [
        "markitdown-mcp"
      ]
    }
  }
}
```

2. Save the file and restart Claude Desktop.

Needs uv (Python) on your computer. The file lives in `~/Library/Application Support/Claude/` on macOS and `%APPDATA%\Claude\` on Windows.

### Cursor

[Add to Cursor](<https://cursor.com/install-mcp?name=markitdown&config=eyJjb21tYW5kIjoidXZ4IiwiYXJncyI6WyJtYXJraXRkb3duLW1jcCJdfQ%3D%3D>) (opens Cursor)

Or add it by hand to `~/.cursor/mcp.json` (all projects) or `.cursor/mcp.json` (this project):

`mcp.json`:

```json
{
  "mcpServers": {
    "markitdown": {
      "command": "uvx",
      "args": [
        "markitdown-mcp"
      ]
    }
  }
}
```

Needs uv (Python) on your computer.

### VS Code

[Install in VS Code](<https://vscode.dev/redirect/mcp/install?name=markitdown&config=%7B%22type%22%3A%22stdio%22%2C%22command%22%3A%22uvx%22%2C%22args%22%3A%5B%22markitdown-mcp%22%5D%7D>) (opens VS Code)

Or from a terminal:

```bash
code --add-mcp '{"name":"markitdown","type":"stdio","command":"uvx","args":["markitdown-mcp"]}'
```

Or commit it to the repo in `.vscode/mcp.json`:

`.vscode/mcp.json`:

```json
{
  "servers": {
    "markitdown": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "markitdown-mcp"
      ]
    }
  }
}
```

Needs uv (Python) on your computer.

### Devin Desktop

1. Add it to `~/.config/devin/mcp_config.json` (macOS and Linux) or `%APPDATA%\devin\mcp_config.json` (Windows):

`mcp_config.json`:

```json
{
  "mcpServers": {
    "markitdown": {
      "command": "uvx",
      "args": [
        "markitdown-mcp"
      ]
    }
  }
}
```

2. Refresh the MCP server list in Cascade.

Devin Desktop is the new name for Windsurf.

### Codex

```bash
codex mcp add markitdown -- uvx markitdown-mcp
```

Or edit `~/.codex/config.toml` directly:

`config.toml`:

```toml
[mcp_servers.markitdown]
command = "uvx"
args = ["markitdown-mcp"]
```

Needs uv (Python) on your computer.

### Gemini CLI

```bash
gemini mcp add markitdown uvx markitdown-mcp
```

This adds it to the current project. Add `-s user` to use it everywhere.

### Any client

Most clients that start local servers accept this shape:

```json
{
  "mcpServers": {
    "markitdown": {
      "command": "uvx",
      "args": [
        "markitdown-mcp"
      ]
    }
  }
}
```

Zed puts servers under `context_servers` in its settings, with the same `command`, `args` and `env` fields.

Needs uv (Python) on your computer.

## Details

- Server version: 0.0.1a7
- Last checked: 2026-10-03
- Listed: 2026-10-03
- Updated: 2026-10-03

---
Source: https://mcp.tc/i/markitdown (mcp.tc is an independent directory, not affiliated with this server's publisher). Corrections: https://mcp.tc/report
