MarkItDown MCP Server
Enables conversion of YouTube video URLs to Markdown format, extracting content and metadata from videos.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MarkItDown MCP Serverconvert https://example.com/report.pdf to markdown"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MarkItDown MCP Server
A production-ready Model Context Protocol (MCP) server for converting documents and files to Markdown using Microsoft MarkItDown.
Provides 3 tools for converting documents from URIs, local file paths, or raw string content — supporting a wide range of file formats.
Supports three transport modes: stdio, SSE, and Streamable HTTP.
Folder Structure
markitdown-tool/
|-- markitdown_server.py # Main server entry point
|-- Dockerfile
|-- LICENSE
|-- mcp.example.json
|-- pyproject.toml
|-- README.md
`-- tools/
|-- __init__.py
|-- markitdown_tools.py
`-- toolhandler.pyRelated MCP server: flexberry-markitdown-mcp
Available Tools (3)
Tool | Description |
| Convert a resource from an http:, https:, file:, or data: URI to Markdown |
| Convert a local file by absolute or relative path to Markdown |
| Convert raw string content to Markdown with optional file extension hint |
Supported File Formats
Format | Extensions |
| |
Word |
|
PowerPoint |
|
Excel |
|
Images (OCR) |
|
Audio (transcription) |
|
HTML |
|
CSV / JSON / XML |
|
ZIP |
|
EPub |
|
YouTube URLs |
|
Tools Reference
1. convert_to_markdown
Convert a remote or local resource via URI.
Parameters:
Parameter | Required | Description |
| Yes | URI to convert. Schemes: |
Example:
{
"uri": "https://example.com/report.pdf"
}Returns:
{
"success": true,
"uri": "https://example.com/report.pdf",
"title": "Annual Report 2025",
"markdown": "# Annual Report 2025\n\n..."
}2. convert_local_file
Convert a file on the local filesystem.
Parameters:
Parameter | Required | Description |
| Yes | Absolute or relative path to the file |
Example:
{
"file_path": "C:/Users/me/Documents/report.docx"
}Returns:
{
"success": true,
"file_path": "C:/Users/me/Documents/report.docx",
"title": "Q4 Report",
"markdown": "# Q4 Report\n\n..."
}3. convert_stream
Convert raw string content to Markdown. Useful for in-memory or clipboard data.
Parameters:
Parameter | Required | Description |
| Yes | String content to convert |
| No | Extension hint for format detection (e.g. |
Example:
{
"content": "<html><body><h1>Hello</h1><p>World</p></body></html>",
"file_extension": ".html"
}Returns:
{
"success": true,
"file_extension": ".html",
"title": null,
"markdown": "# Hello\n\nWorld\n"
}Prerequisites
Python 3.10+
ffmpegandlibmagic(for audio/image support — installed automatically in Docker)
Installation
# From the workspace root (where .venv lives)
.venv\Scripts\activate # Windows
# source .venv/bin/activate # macOS / Linux
cd markitdown-tool
# Core install
pip install -e .
# With all optional format support (recommended)
pip install -e ".[all]"Run
stdio (default — for MCP desktop clients like Claude Desktop)
markitdown-mcp --mode stdioSSE
markitdown-mcp --mode sse --host 0.0.0.0 --port 8000Endpoints:
GET /ssePOST /messages/GET /health
Streamable HTTP
markitdown-mcp --mode streamable-http --host 0.0.0.0 --port 8000Endpoints:
POST /mcpGET /healthGET /
Environment variables (alternative to CLI flags)
Variable | Default | Description |
|
|
|
|
| Bind host |
|
| Bind port |
|
| Enable MarkItDown plugins ( |
Docker
# Build
docker build -t markitdown-mcp .
# Run (streamable-http, port 8000)
docker run -p 8000:8000 markitdown-mcp
# With local file access
docker run -v /path/to/docs:/workdir -p 8000:8000 markitdown-mcp
# With plugins enabled
docker run -e MARKITDOWN_ENABLE_PLUGINS=true -p 8000:8000 markitdown-mcpMCP Client Configuration
See mcp.example.json for a ready-to-use client config snippet.
stdio (Claude Desktop / Cursor):
{
"mcpServers": {
"markitdown": {
"command": "markitdown-mcp",
"args": ["--mode", "stdio"],
"env": {
"MARKITDOWN_ENABLE_PLUGINS": "false"
}
}
}
}Streamable HTTP (MCP Inspector / MCPmon):
http://localhost:8000/mcpSSE:
http://localhost:8000/sseArchitecture
MCP Client (Claude / Cursor / MCP Inspector)
|
| JSON-RPC 2.0
v
Transport Layer (stdio | SSE | Streamable HTTP) ← markitdown_server.py
|
v
ToolHandler Registry (3 tools)
|
v
MarkItDown Tool Handlers ← tools/markitdown_tools.py
|
v
MarkItDown Library (Microsoft)
|
v
File / URL / StreamTroubleshooting
ModuleNotFoundError: No module named 'markitdown' — Run pip install -e ".[all]".
ffmpeg not found — Install ffmpeg: choco install ffmpeg (Windows) or apt-get install ffmpeg (Linux).
Port already in use — Change APP_PORT env var or use --port flag.
convert_local_file returns "File not found" — Use an absolute path. In Docker, mount the directory with -v.
License
MIT License — see LICENSE for details.
This server cannot be deployed
Maintenance
Related MCP Connectors
Document-to-Markdown MCP server — convert PDF, Office and HTML into LLM-ready Markdown.
Generate PDF, Word (.docx) and PowerPoint (.pptx) documents from Markdown over MCP.
Hosted MCP server: convert PDFs to clean, LLM-ready Markdown with tables, formulas and OCR.
MCP server for detecting and redacting PII (Personally Identifiable Information) in PDF documents.
Related MCP Servers
- AlicenseAqualityBmaintenanceAn MCP server for converting Markdown documents to PDF files.115 npm36MIT
- AlicenseNot gradedqualityCmaintenanceMCP server for converting various file formats (PDF, DOCX, images, audio, etc.) to Markdown using Microsoft MarkItDown, with support for large files and Cyrillic text.1MIT
- AlicenseAqualityDmaintenanceA secure MCP server for converting documents between Markdown, DOCX, HTML, PDF, and TXT formats within a sandboxed working directory.3MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server for converting between document formats (DOCX/PDF to Markdown and Markdown to DOCX) with academic styling support.1MIT