MCP Servers

模型上下文协议服务器、框架、SDK 和模板的综合目录。

M
Markitdown MCP Npx
作者 @xkiranj

NPX wrapper for Microsoft's MarkItDown MCP server - run without Docker

创建于 6/4/2025
更新于 2 days ago
Repository documentation and setup instructions

MarkItDown-MCP-NPX

npm version Built for AutoGen

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.

✨ Features

  • 🚀 No Docker Required: Run directly with "node"
  • 🔧 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

📋 Prerequisites

Required

  • Node.js 16+: Required for running the local script
  • Python 3.10+: Required for MarkItDown functionality
  • Internet Connection: For initial package installation

Optional (for enhanced functionality)

  • 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.

🚀 Quick Start

Using Local Installation (Recommended)

# Run directly with node (no installation required after setup)
node C:\Users\YOUR_USERNAME\MCP\markitdown-mcp-npx\bin\markitdown-mcp-npx.js

# Run with HTTP transport
node C:\Users\YOUR_USERNAME\MCP\markitdown-mcp-npx\bin\markitdown-mcp-npx.js --http --host 127.0.0.1 --port 3001

# Run with specific arguments
node C:\Users\YOUR_USERNAME\MCP\markitdown-mcp-npx\bin\markitdown-mcp-npx.js --help

Future NPX Usage (if published to NPM)

# Once published to NPM, you could use:
npx markitdown-mcp-npx
npx markitdown-mcp-npx --http --host 127.0.0.1 --port 3001

Local Installation

# Clone or download this package
git clone <this-repo-url>
cd markitdown-mcp-npx

# Install dependencies
npm install

# Run locally
npm start

🔧 Configuration for Claude Desktop

The local version can be used as a drop-in replacement for the Docker version in Claude Desktop.

Claude Desktop Configuration

For Local Installation:

{
  "mcpServers": {
    "markitdown": {
      "command": "node",
      "args": [
        "C:\\Users\\YOUR_USERNAME\\MCP\\markitdown-mcp-npx\\bin\\markitdown-mcp-npx.js"
      ]
    }
  }
}

For NPX version (if published to NPM):

{
  "mcpServers": {
    "markitdown": {
      "command": "npx",
      "args": [
        "markitdown-mcp-npx"
      ]
    }
  }
}

For HTTP transport:

{
  "mcpServers": {
    "markitdown": {
      "command": "node",
      "args": [
        "C:\\Users\\YOUR_USERNAME\\MCP\\markitdown-mcp-npx\\bin\\markitdown-mcp-npx.js",
        "--http",
        "--host",
        "127.0.0.1",
        "--port",
        "3001"
      ]
    }
  }
}

Comparison with Docker Version

| Feature | Docker Version | Local Node Version | |---------|----------------|--------------------| | Setup | Requires Docker | Requires Node.js + Python | | Command | docker run ... | node path/to/markitdown-mcp-npx.js | | Dependencies | Isolated in container | Managed in virtual environment | | Performance | Container overhead | Direct execution | | File Access | Requires volume mounts | Direct file system access |

📖 Usage Examples

Basic STDIO Mode (Default)

node C:\Users\YOUR_USERNAME\MCP\markitdown-mcp-npx\bin\markitdown-mcp-npx.js

HTTP/SSE Mode

node C:\Users\YOUR_USERNAME\MCP\markitdown-mcp-npx\bin\markitdown-mcp-npx.js --http --host 127.0.0.1 --port 3001

With Custom Host/Port

node C:\Users\YOUR_USERNAME\MCP\markitdown-mcp-npx\bin\markitdown-mcp-npx.js --http --host 0.0.0.0 --port 8080

🛠️ Available Options

Usage: 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

🔍 How It Works

  1. Environment Detection: Automatically detects Python 3.10+ installation
  2. Virtual Environment: Creates isolated Python environment in temp directory
  3. Package Installation: Installs markitdown-mcp and dependencies
  4. Process Management: Spawns and manages the Python MCP server process
  5. Signal Handling: Properly handles termination signals

🐛 Troubleshooting

Python Not Found

Error: Python 3.10+ is required but not found

Solution: Install Python 3.10+ and ensure it's in your PATH

Permission Errors

Error: Failed to create virtual environment

Solution: Check write permissions to your temp directory

Installation Failures

Error: Failed to install markitdown-mcp

Solution: Check internet connectivity and proxy settings

Port Already in Use

Error: Port 3001 already in use

Solution: Use a different port with --port <number>

🧪 Testing with MCP Inspector

You can test the server using the MCP Inspector:

# Start the inspector
npx @modelcontextprotocol/inspector

# For STDIO mode:
# - Transport: STDIO
# - Command: node
# - Args: C:\Users\YOUR_USERNAME\MCP\markitdown-mcp-npx\bin\markitdown-mcp-npx.js

# For HTTP mode:
# - Transport: Streamable HTTP
# - URL: http://127.0.0.1:3001/mcp

📂 File Structure

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

🔐 Security Considerations

  • 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 localhost unless specifically needed otherwise
  • Virtual environments provide isolation for Python dependencies

🆚 vs. Docker Version

Advantages of Local Node Version:

  • ✅ No Docker installation required
  • ✅ Direct file system access (no volume mounts)
  • ✅ Faster startup (no container overhead)
  • ✅ Easier to debug and troubleshoot

Advantages of Docker Version:

  • ✅ Complete isolation
  • ✅ Consistent environment across systems
  • ✅ No Python installation required on host

📄 License

This project follows the same MIT license as the original markitdown project.

🔧 Expected Tool Behavior

✓ 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!

🚫 Troubleshooting

FFmpeg Warning

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)

Python Not Found

Error: Python 3.10+ is required but not found

Solution: Install Python 3.10+ and ensure it's in your PATH

Permission Errors

Error: Failed to create virtual environment

Solution: Check write permissions to your temp directory

Installation Failures

Error: Failed to install markitdown-mcp

Solution: Check internet connectivity and proxy settings

Port Already in Use

Error: Port 3001 already in use

Solution: Use a different port with --port <number>

🤝 Contributing

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:

  1. Check the troubleshooting section
  2. Verify your Python and Node.js installations
  3. Test with the MCP Inspector

🙏 Acknowledgments

  • Microsoft AutoGen Team: For creating the original MarkItDown and MCP server
  • Model Context Protocol: For the MCP specification
  • Claude Desktop: For MCP integration

Note: This is an unofficial wrapper for MarkItDown MCP. For the official Docker version, visit the original repository.

快速设置
此服务器的安装指南

安装包 (如果需要)

npx @modelcontextprotocol/server-markitdown-mcp-npx

Cursor 配置 (mcp.json)

{ "mcpServers": { "xkiranj-markitdown-mcp-npx": { "command": "npx", "args": [ "xkiranj-markitdown-mcp-npx" ] } } }