# microsoft/markitdown [Health: Active]

**Category:** 📂 File Systems  
**Repository:** https://github.com/microsoft/markitdown/tree/main/packages/markitdown-mcp  
**GitHub Stars:** 192512  
**Views:** 9  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/microsoft-markitdown

## Description
MCP tool access to MarkItDown -- a library that converts many file formats (local or remote) to Markdown for LLM consumption.

## Tools
Capabilities this server exposes over MCP:

- **convert_to_markdown** — Convert a resource described by an http:, https:, file: or data: URI to markdown

## Claude Desktop Quick Installation
Install path detected from listing signals. Uses `uvx` (confidence: high):

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

## Documentation

## What microsoft/markitdown does

microsoft/markitdown provides MCP access to MarkItDown, a library for converting many file formats into Markdown for use by large language model workflows. Its only exposed tool, `convert_to_markdown`, accepts a resource identified by a URI and returns the converted Markdown.

The accepted URI schemes are `http:`, `https:`, `file:`, and `data:`. This lets an agent work with remote resources, files available to the local process, or content embedded directly in a data URI. The package is intended for local use with trusted agents rather than as an internet-facing service.

## How it works

Install the Python package and start the `markitdown-mcp` command. Without extra options, the process communicates over STDIO, which is suitable for MCP clients that launch local servers. The server also supports Streamable HTTP and SSE. In those modes, it can listen on a configured host and port; the documented local example uses `127.0.0.1:3001`.

An MCP client calls `convert_to_markdown` with a supported URI. For HTTP and HTTPS resources, the server retrieves the remote content. For file URIs, it reads files using the permissions of the account running the server. When running in Docker, local paths must be made available by mounting the relevant host directory into the container.

## Setup and configuration

Install the package with:

```bash
pip install markitdown-mcp
```

Start the default STDIO transport with:

```bash
markitdown-mcp
```

To use Streamable HTTP and SSE, run:

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

The project also provides a Dockerfile. A container can process remote URIs directly; access to host files requires a volume mount such as `/home/user/data:/workdir`. Claude Desktop can launch the Docker image through its MCP server configuration.

For connection testing, MCP Inspector can be started with `npx @modelcontextprotocol/inspector`. Its STDIO, Streamable HTTP, and SSE connection modes can be used to list and invoke the conversion tool.

## Tools and capabilities

- `convert_to_markdown(uri)`: converts a resource referenced by an HTTP, HTTPS, file, or data URI to Markdown.
- STDIO transport for local client-launched processes.
- Streamable HTTP and SSE transports for local HTTP connections.
- Docker execution with optional directory mounts for local-file access.

## Limitations and notes

The server has no authentication and runs with the privileges of its operating-system user. In HTTP or SSE mode, it binds to localhost by default, but other processes or users on the same machine may still be able to access it. Because the conversion tool can read files available to that user and retrieve network data, avoid binding it to non-local interfaces unless the security consequences are understood.

A sandbox, virtual machine, or container with restricted permissions can help limit access to sensitive files and network segments. Docker isolation does not automatically expose host files; directories must be mounted explicitly.

_Full upstream README: https://allmcps.com/mcp/microsoft-markitdown/readme_

