NPX wrapper for Microsoft's MarkItDown MCP server - No Docker Required!
This package provides an NPX-compatible wrapper for Microsoft's markitdown-mcp, allowing you to run the MarkItDown MCP server without Docker dependencies.
- π No Docker Required: Run directly with NPX - no installation needed
- π§ Automatic Setup: Handles Python environment and dependencies automatically
- π Full Compatibility: Works exactly like the original Docker version
- π» Cross-Platform: Works on Windows, macOS, and Linux
- β‘ Fast: Reuses virtual environment after first setup
- π¦ Zero Config: Just run
npx -y markitdown-mcp-npxand you're ready!
- Node.js 16+: Required for NPX execution
- Python 3.10+: Required for MarkItDown functionality
- Internet Connection: For initial package installation
- FFmpeg: For audio file processing and transcription (.mp3, .wav files)
- ExifTool: For advanced image metadata extraction
π‘ Note: MarkItDown works perfectly for most file types (PDF, Word, Excel, basic images) without the optional dependencies. They're only needed for audio files and advanced image metadata.
Windows users: See WINDOWS_SETUP.md for easy installation of optional dependencies.
# Basic STDIO mode (for Claude Desktop)
npx -y markitdown-mcp-npx
# HTTP mode for testing
npx -y markitdown-mcp-npx --http --host 127.0.0.1 --port 3001
# Show help
npx -y markitdown-mcp-npx --help# Install globally
npm install -g markitdown-mcp-npx
# Then run directly
markitdown-mcp-npx# Clone this repository
git clone https://github.com/xkiranj/markitdown-mcp-npx.git
cd markitdown-mcp-npx
# Run locally
npm startNPX Version (Recommended):
{
"mcpServers": {
"markitdown": {
"command": "npx",
"args": [
"-y",
"markitdown-mcp-npx"
]
}
}
}With HTTP transport:
{
"mcpServers": {
"markitdown": {
"command": "npx",
"args": [
"-y",
"markitdown-mcp-npx",
"--http",
"--host",
"127.0.0.1",
"--port",
"3001"
]
}
}
}Global Installation:
{
"mcpServers": {
"markitdown": {
"command": "markitdown-mcp-npx",
"args": []
}
}
}π Critical: The
-yflag is required for NPX in Claude Desktop to prevent installation prompts that would cause the server to hang.
| Feature | Docker Version | NPX Version |
|---|---|---|
| Setup | Requires Docker | Just NPX (comes with Node.js) |
| Command | docker run ... |
npx -y markitdown-mcp-npx |
| Dependencies | Isolated in container | Managed in virtual environment |
| Performance | Container overhead | Direct execution |
| File Access | Requires volume mounts | Direct file system access |
| Installation | Docker pull required | Zero installation with NPX |
npx -y markitdown-mcp-npxnpx -y markitdown-mcp-npx --http --host 127.0.0.1 --port 3001npx -y markitdown-mcp-npx --http --host 0.0.0.0 --port 8080# Test installation and show help
npx -y markitdown-mcp-npx --helpUsage: markitdown-mcp-npx [options]
Options:
--http Run with Streamable HTTP and SSE transport (default: STDIO)
--sse Alias for --http (deprecated)
--host HOST Host to bind to (default: 127.0.0.1)
--port PORT Port to listen on (default: 3001)
--help Show help message
- NPX Magic: NPX automatically downloads and runs the latest version
- Auto-confirmation: The
-yflag skips installation prompts for seamless startup - Environment Detection: Automatically detects Python 3.10+ installation
- Virtual Environment: Creates isolated Python environment in temp directory
- Package Installation: Installs
markitdown-mcpand dependencies - Process Management: Spawns and manages the Python MCP server process
- Signal Handling: Properly handles termination signals
- Caching: Reuses the virtual environment for faster subsequent runs
You can test the server using the MCP Inspector:
# Start the inspector
npx @modelcontextprotocol/inspector
# For STDIO mode:
# - Transport: STDIO
# - Command: npx
# - Args: -y, markitdown-mcp-npx
# For HTTP mode:
# - Start server: npx -y markitdown-mcp-npx --http
# - Transport: Streamable HTTP
# - URL: http://127.0.0.1:3001/mcpβ Single Tool: MarkItDown MCP provides exactly 1 tool called convert_to_markdown
β Universal Converter: This one tool handles all file types:
- π Documents: PDF, Word (.docx), Excel (.xlsx), PowerPoint (.pptx)
- πΌοΈ Images: JPG, PNG, GIF, etc. (with OCR support)
- π§ Audio: MP3, WAV (with transcription if FFmpeg installed)
- π Web: HTTP/HTTPS URLs
- ποΈ Archives: ZIP files
- π Data: CSV, JSON, XML
β URI Parameter: Accepts http:, https:, file:, or data: URIs
π‘ Note: Seeing "1 tools available" in Claude Desktop is correct behavior!
Server appears to hang or timeout on startup
Solution: Ensure you're using the -y flag: npx -y markitdown-mcp-npx
Cause: Without -y, NPX prompts for installation confirmation, which hangs in non-interactive environments like Claude Desktop.
Error: Python 3.10+ is required but not found
Solution: Install Python 3.10+ and ensure it's in your PATH
Error: Failed to create virtual environment
Solution: Check write permissions to your temp directory
Error: Failed to install markitdown-mcp
Solution: Check internet connectivity and proxy settings
Error: Port 3001 already in use
Solution: Use a different port with --port <number>
Error: Package not found or outdated
Solution: Clear NPX cache with npx clear-npx-cache or use npx -y markitdown-mcp-npx
RuntimeWarning: Couldn't find ffmpeg or avconv - defaulting to ffmpeg, but may not work
This warning is harmless! It means:
- β MarkItDown is working correctly
- β All file types work (PDF, Word, Excel, images)
β οΈ Audio files (.mp3, .wav) processing will be limited
To resolve: Install FFmpeg (see WINDOWS_SETUP.md for Windows)
markitdown-mcp-npx/
βββ package.json # NPM package configuration
βββ index.js # Main entry point
βββ bin/
β βββ markitdown-mcp-npx.js # Node.js executable script
βββ README.md # This file
βββ WINDOWS_SETUP.md # Windows setup guide
βββ test.js # Test suite
βββ LICENSE # MIT License
- The server runs with the same privileges as the user executing it
- No authentication is provided for HTTP/SSE modes
- For HTTP mode, bind to
localhostunless specifically needed otherwise - Virtual environments provide isolation for Python dependencies
- NPX ensures you always get the latest published version
- β No Docker installation required
- β Zero configuration with NPX
- β Direct file system access (no volume mounts)
- β Faster startup (no container overhead)
- β Easier to debug and troubleshoot
- β Always up-to-date with NPX
- β Complete isolation
- β Consistent environment across systems
- β No Python installation required on host
The NPX version automatically uses the latest published version. To check for updates or force a fresh download:
# Clear cache and run latest version
npx -y markitdown-mcp-npx
# Check current version
npx -y markitdown-mcp-npx --help- Package: markitdown-mcp-npx
- Repository: GitHub
- License: MIT
- Node.js: >=16.0.0
- Python: >=3.10
This is an unofficial wrapper for Microsoft's MarkItDown MCP server. For issues with the core MarkItDown functionality, please refer to the original repository.
For issues specific to this wrapper:
- Check the troubleshooting section
- Verify your Python and Node.js installations
- Test with the MCP Inspector
- Open an issue on GitHub
- Microsoft AutoGen Team: For creating the original MarkItDown and MCP server
- Model Context Protocol: For the MCP specification
- Claude Desktop: For MCP integration
- NPM Community: For the fantastic NPX tool
β¨ Ready to use? Just run: npx -y markitdown-mcp-npx
This is an unofficial wrapper for MarkItDown MCP. For the official Docker version, visit the original repository.