document-converter
๐ Document Converter MCP
Give your AI assistant the ability to read PDFs, Office files, spreadsheets, emails, audio, and more as clean Markdown โ so it can summarize, search, and reason over content instead of struggling with binary attachments.
Table of contents
Overview ๐
Document Converter MCP is a lightweight stdio server that wraps Microsoft's MarkItDown library for the Model Context Protocol.
flowchart LR
A[Your file on disk] --> B[Document Converter MCP]
B --> C[MarkItDown]
C --> D[Markdown in chat or .md file]Registry | |
Repository | |
Transport | stdio |
Author | Zahid Abbas Ali Baig |
Dependencies |
|
Once connected, your agent converts files locally and returns structured text โ nothing is sent to a conversion API.
Use cases ๐ก
Scenario | What you gain |
Research | Turn PDF papers into Markdown, then ask for summaries, comparisons, or citations |
Documentation | Convert |
Product & engineering | Preview specs and slide decks in chat before writing tickets or release notes |
Data & ops | Convert Excel exports into tables the model can filter, explain, or transform |
Email & archives | Extract text from |
Media | Transcribe |
Features โจ
๐ Local-first โ files stay on your machine; no third-party conversion service
๐ Broad format coverage โ PDF, Office, CSV/JSON/text, Outlook
.msg, audio, YouTube, and more (via MarkItDown)๐ Two workflows โ save Markdown next to the source, or preview in chat only
๐ Copy-paste setup โ step-by-step install for Cursor, VS Code, and Claude Desktop
๐ฆ Registry published โ listed on the official MCP Registry
โ๏ธ MIT licensed โ free for personal and commercial use
Supported formats ๐
Formats below are verified against MarkItDown 0.1.6 with our installed extras:
markitdown[pdf,docx,pptx,xlsx,xls,outlook,audio-transcription,youtube-transcription]
We avoid markitdown[all] because it pulls Azure pre-release packages that uv cannot resolve with uvx.
Fully supported (with this project's dependencies)
Category | Extensions / inputs | What you get |
| Text and layout extraction ( | |
Word |
| Headings, paragraphs, tables ( |
PowerPoint |
| Slide text and structure ( |
Excel |
| Workbook tables ( |
Outlook |
| Headers, body, metadata ( |
Web |
| HTML โ Markdown (built-in) |
CSV |
| Markdown tables (built-in) |
Text & JSON |
| Plain text / JSON content (built-in) |
Notebooks |
| Notebook cells as Markdown (built-in) |
E-books |
| Chapter HTML โ Markdown (built-in) |
Archives |
| Each inner file converted if its type is supported (built-in) |
Audio |
| Metadata + speech transcription ( |
YouTube |
| Title, description, captions when available ( |
Limited support
Category | Extensions | Reality |
Images |
| EXIF metadata if |
XML |
| May work as plain text depending on file detection โ not a dedicated XML parser |
Other URLs | Wikipedia, RSS, Bing SERP | MarkItDown can fetch some web URLs; not tested as part of this MCP |
Not supported
Item | Why |
| No MarkItDown converter for RFC 822 |
| Image converter only accepts |
Legacy Office |
|
Video files |
|
Azure Document Intelligence | Needs |
Azure Content Understanding | Pre-release package; breaks |
| Bundles the Azure extras above |
Conversion quality depends on the source file. See the MarkItDown documentation for upstream details.
Quick install ๐
Follow the steps for your editor. Every config below uses the same command โ only the JSON file and wrapper key differ.
Before you start (all editors)
Install uv (includes
uvx).Windows (PowerShell):
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"macOS / Linux:
curl -LsSf https://astral.sh/uv/install.sh | shVerify
uvxworks (open a new terminal after installing):uvx --versionOptional โ test the server (it will sit idle with no output; that is normal for stdio MCP):
uvx --from git+https://github.com/Zahid-Abbas-Ali-Baig/document-converter --with markitdown[pdf,docx,pptx,xlsx,xls,outlook,audio-transcription,youtube-transcription] document-converter-mcpPress
Ctrl+Cto stop.
Install in Cursor ๐ฑ๏ธ
Open Cursor โ Settings โ MCP (or edit your config file directly).
Config file location:
Windows:
%USERPROFILE%\.cursor\mcp.jsonmacOS:
~/.cursor/mcp.jsonLinux:
~/.cursor/mcp.jsonProject-only:
.cursor/mcp.jsonin your project folder
Add or merge this block inside
mcpServers(copy the whole JSON):
{
"mcpServers": {
"document-converter": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/Zahid-Abbas-Ali-Baig/document-converter",
"--with",
"markitdown[pdf,docx,pptx,xlsx,xls,outlook,audio-transcription,youtube-transcription]",
"document-converter-mcp"
]
}
}
}Save the file and restart Cursor (or click Reload next to MCP in settings).
Check: Settings โ MCP โ
document-convertershould show enabled (green). Tools:convert_to_markdown,preview_markdown.
Open this link in your browser: Add to Cursor
Or paste into the browser address bar:
cursor://anysphere.cursor-deeplink/mcp/install?name=document-converter&config=eyJjb21tYW5kIjoidXZ4IiwiYXJncyI6WyItLWZyb20iLCJnaXQraHR0cHM6Ly9naXRodWIuY29tL1phaGlkLUFiYmFzLUFsaS1CYWlnL2RvY3VtZW50LWNvbnZlcnRlciIsIi0td2l0aCIsIm1hcmtpdGRvd25bcGRmLGRvY3gscHB0eCx4bHN4LHhscyxvdXRsb29rLGF1ZGlvLXRyYW5zY3JpcHRpb24seW91dHViZS10cmFuc2NyaXB0aW9uXSIsImRvY3VtZW50LWNvbnZlcnRlci1tY3AiXX0%3DClick Install in Cursor, then restart if tools do not appear.
Install in VS Code ๐ป
Requires VS Code 1.102+ with built-in MCP support.
Do not paste
vscode://mcp/install?...anywhere. That link is broken in VS Code and creates servers likemy-mcp-server-*withspawn vscode://... ENOENT. Use the JSON below.
Method A โ Copy-paste user config (recommended)
Ctrl+Shift+P โ MCP: Open User Configuration
Delete any broken servers where
"command"starts withvscode://(e.g.my-mcp-server-15e7e771).Replace the file contents with (or merge
serversinto your existing file):
{
"servers": {
"document-converter": {
"type": "stdio",
"command": "uvx",
"args": [
"--from",
"git+https://github.com/Zahid-Abbas-Ali-Baig/document-converter",
"--with",
"markitdown[pdf,docx,pptx,xlsx,xls,outlook,audio-transcription,youtube-transcription]",
"document-converter-mcp"
]
}
}
}Save, then Ctrl+Shift+P โ MCP: List Servers โ start document-converter.
If you get uvx not found (ENOENT): run where uvx (Windows) or which uvx (macOS/Linux) and set "command" to the full path:
"command": "C:\\Users\\YOUR_USER\\.local\\bin\\uvx.exe"Method B โ Open this repo in VS Code
git clone https://github.com/Zahid-Abbas-Ali-Baig/document-converter.gitFile โ Open Folder โ select
document-converterVS Code loads
.vscode/mcp.jsonautomaticallyCtrl+Shift+P โ MCP: List Servers โ start document-converter
Method C โ Add Server wizard
Ctrl+Shift+P โ MCP: Add Server โ choose stdio, then enter:
Field | Value |
Command |
|
Arg 1 |
|
Arg 2 |
|
Arg 3 |
|
Arg 4 |
|
Arg 5 |
|
Install in Claude Desktop ๐ค
Open Claude Desktop config:
Windows (Microsoft Store):
%LOCALAPPDATA%\Packages\Claude_<id>\LocalCache\Roaming\Claude\claude_desktop_config.jsonWindows (classic):
%APPDATA%\Claude\claude_desktop_config.jsonmacOS:
~/Library/Application Support/Claude/claude_desktop_config.json
On Windows Store Claude,
%APPDATA%\Claude\may not exist โ use thePackages\Claude_*\...path above.Windows (Microsoft Store) โ one-time setup so
uvx --from git+...can find Git (Claude passes a minimal PATH to MCP servers):powershell -ExecutionPolicy Bypass -File scripts/setup-windows-uvx-git-shim.ps1Or download and run that script from the repo. It creates
%USERPROFILE%\.local\bin\git.cmdpointing at Git for Windows.Add inside
mcpServers(keep existingpreferencesat the root):
{
"mcpServers": {
"document-converter": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/Zahid-Abbas-Ali-Baig/document-converter",
"--with",
"markitdown[pdf,docx,pptx,xlsx,xls,outlook,audio-transcription,youtube-transcription]",
"document-converter-mcp"
]
}
}
} If you get uvx not found (ENOENT): set "command" to the full path from where uvx, e.g. C:\\Users\\YOUR_USER\\.local\\bin\\uvx.exe.
Restart Claude Desktop completely (quit from tray, reopen).
Verify it works โ
Ask your AI assistant:
List the tools from document-converter MCP.Or:
Preview markdown for a PDF on my machine at C:\path\to\file.pdfYou should see convert_to_markdown and preview_markdown being called.
Tools ๐ ๏ธ
Tool | Description | Writes to disk |
| Converts a file or URL to Markdown and saves output ( | Yes |
| Returns Markdown in the chat response only | No |
Input: absolute or relative path to a file on your machine (or a supported URL for YouTube).
Output: Markdown text suitable for summarization, diffing, or committing to Git.
Usage examples ๐ฌ
Natural-language prompts you can paste into Cursor, VS Code, or Claude Desktop after the MCP server is connected.
Convert a PDF and summarize
Prompt:
Use document-converter to convert C:\Reports\annual-report.pdf to markdown,
then give me a 5-bullet executive summary.What happens: The agent calls convert_to_markdown, creates annual-report.md next to the PDF, and summarizes the result.
Preview a Word doc before saving
Prompt:
Preview markdown for ./contracts/vendor-agreement.docx without saving.
Tell me if there is a termination clause.What happens: The agent calls preview_markdown, reads the content in chat, and answers your question โ no file is written.
Excel to analysis
Prompt:
Convert D:\data\sales-q1.xlsx to markdown and list the top 3 products by revenue.What happens: Spreadsheet tables become Markdown the model can parse and rank.
PowerPoint for release notes
Prompt:
Preview ./slides/product-launch.pptx as markdown and draft release notes
from the slide titles and bullet points.Outlook email extraction
Prompt:
Convert C:\Mail\customer-escalation.msg to markdown and extract action items.Batch-style workflow (multiple files)
Prompt:
Convert these to markdown and save beside each file:
- C:\Docs\spec-v2.pdf
- C:\Docs\api-reference.docx
- C:\Docs\metrics.xlsx
Then confirm the .md paths.Audio transcription
Prompt:
Preview markdown for ./recordings/standup-notes.mp3 and list decisions made.Requires the audio-transcription extra (included in this project's dependencies).
YouTube URL
Prompt (preview in chat):
Use preview_markdown on https://www.youtube.com/watch?v=EXAMPLE and summarize the main points.Prompt (save to file):
Use convert_to_markdown on https://www.youtube.com/watch?v=EXAMPLEWhat happens: MarkItDown fetches the watch page, extracts title/description/metadata, and appends captions via youtube-transcript-api when available. convert_to_markdown saves youtube-EXAMPLE.md in the server working directory.
Use https://www.youtube.com/watch?v=... format. Requires the youtube-transcription extra and an internet connection.
Example Markdown output (PDF)
Illustrative snippet after conversion:
# Quarterly Results
Revenue increased 12% year over year driven by enterprise subscriptions.
## Highlights
- Net retention: 118%
- New logos: 240
- Gross margin: 74%Quality depends on the source document layout and MarkItDown version.
Local development ๐งช
Clone if you prefer a local virtual environment over uvx.
git clone https://github.com/Zahid-Abbas-Ali-Baig/document-converter.git
cd document-converter
python -m venv .venvWindows (PowerShell):
.venv\Scripts\activate
pip install -r requirements.txtmacOS / Linux:
source .venv/bin/activate
pip install -r requirements.txtRun the server directly (stdio โ used by MCP clients):
python server.pyConfiguration reference โ๏ธ
All clients run the same underlying command (full JSON examples are in Quick install ๐ โ not repeated here):
Part | Value |
Command |
|
Arg 1 |
|
Arg 2 |
|
Arg 3 |
|
Arg 4 |
|
Arg 5 |
|
Config file locations
Client | File | JSON root key |
Cursor |
|
|
VS Code | User MCP config or |
|
Claude Desktop |
|
|
Copy-paste configs: Quick install ๐.
Local clone (no uvx)
Clone and install โ see Local development ๐งช. Then point your MCP client at the venv Python:
Windows:
{
"mcpServers": {
"document-converter": {
"command": "REPO_PATH\\.venv\\Scripts\\python.exe",
"args": ["REPO_PATH\\server.py"]
}
}
}macOS / Linux:
{
"mcpServers": {
"document-converter": {
"command": "REPO_PATH/.venv/bin/python",
"args": ["REPO_PATH/server.py"]
}
}
}MCP Registry ๐ฆ
Listed on the official MCP Registry as io.github.Zahid-Abbas-Ali-Baig/document-converter (v1.0.0).
๐ GitHub repository
๐ฅ GitHub Release v1.0.0 (
.mcpbbundle)
Troubleshooting ๐ง
Dependency resolution / markitdown[all] errors
If you see errors about azure-ai-contentunderstanding or pre-releases, remove markitdown[all] from your config. Use:
markitdown[pdf,docx,pptx,xlsx,xls,outlook,audio-transcription,youtube-transcription]VS Code: spawn vscode://mcp/install?... ENOENT
VS Code's install link wrote the URL as the command instead of uvx. Fix:
MCP: Open User Configuration (or
.vscode/mcp.jsonin this repo)Delete entries like
my-mcp-server-*where"command"starts withvscode://Use
.vscode/mcp.jsonfrom this repo, or the JSON in Install in VS Code ๐ปMCP: List Servers โ restart document-converter
Do not use the README vscode://mcp/install?... link โ it is unreliable in VS Code.
Claude Desktop: Git executable not found
uvx --from git+... needs Git on PATH. Microsoft Store Claude on Windows often spawns MCP servers with a minimal PATH that omits C:\Program Files\Git\cmd, even when Git works in a normal terminal.
Fix: run the one-time shim script from Install in Claude Desktop ๐ค (step 2). It places git.cmd next to uvx.exe in %USERPROFILE%\.local\bin.
Also ensure: Git for Windows and uv are installed. Pre-warm in PowerShell: uvx --from git+https://github.com/Zahid-Abbas-Ali-Baig/document-converter --with markitdown[pdf,docx,pptx,xlsx,xls,outlook,audio-transcription,youtube-transcription] document-converter-mcp (idle = normal for stdio).
Fallback: Local clone (no uvx) if you cannot use uvx.
Failed to acquire MessagePort
This comes from Cursor or VS Code, not this server:
[MCPService] Error creating client: Failed to acquire MessagePort ...Step | Action |
1 | Fully quit the editor, then reopen |
2 | Install uv for |
3 | Test: |
4 | Use Local clone (no |
5 | Settings โ MCP โ remove and re-add the server |
6 | Update Cursor/VS Code to the latest version |
Reliable fallback: follow Local development ๐งช and use the local clone MCP config.
Install button does nothing (Cursor on Windows)
Use the copy-paste JSON in Install in Cursor ๐ฑ๏ธ instead of the install badge.
Tools not visible
Reload MCP or restart the editor. Confirm the server is enabled (not red/disabled).
License ๐
MIT License โ see LICENSE.
Copyright (c) 2026 Zahid Abbas Ali Baig