🐡

【Claude Desktop/Docker】Microsoft MarkItDown-MCPサーバーを触ってみる

に公開

はじめに

普段の開発作業中に思わぬ壁にぶつかったんですよ。いろんな形式のファイルをLLMに食わせたいけど、PDFやExcelファイルをそのまま投げ込むとLLMが「ん?何これ?」って感じになっちゃうんです(笑)。

そんな時に出会ったのが、Microsoftが開発した「MarkItDown」というPythonライブラリ。これがマジですごいんですよ!今日はこのツールについて、実際に使ってみた体験を交えながら紹介していきます。正直言って、これは開発者にとって宝物レベルのツールだと思いますよ!

MarkItDownって何?開発者の救世主!

基本的な概念

MarkItDownは、簡単に言うと「何でもマークダウンに変換してくれる魔法のツール」です。Microsoftが開発したPythonライブラリで、様々なファイル形式をマークダウン形式に変換できます。

私が最初にこれを知った時は「へぇ〜、便利そうだな」程度に思ってたんですが、実際に使ってみると「これマジですごい!なんでもっと早く知らなかったんだ!」ってなりましたね(笑)。

https://github.com/microsoft/markitdown

対応ファイル形式が豊富すぎる!

MarkItDownが対応しているファイル形式は本当に幅広いんです:

  • Officeドキュメント: PowerPoint、Word、Excel(会社の資料をそのままLLMに食わせられる!)
  • リッチメディア: 画像(EXIFデータや画像説明付き)、音声(文字起こし機能付き)
  • ウェブ・構造化データ: HTML、CSV、JSON、XML(APIのレスポンスとかもOK!)
  • アーカイブ: ZIPファイル

特にすごいのは、OCRや音声認識を使ってマルチモーダルなファイルからもコンテンツを抽出できること。画像に含まれるテキストも認識してくれるんですよ!これ、テスト自動化とかでめちゃくちゃ役立ちます。

LLMとの相性抜群!RAGシステム構築の強い味方

なぜマークダウン形式がいいの?

「なんでわざわざマークダウンに変換するの?」って思う人もいるかもしれませんね。理由はシンプルです:

  1. テキストデータだからLLMに投入しやすい: バイナリデータじゃないので処理が楽チン
  2. LLMはマークダウン形式の解釈が得意: 構造化されたテキストなので回答精度が上がる
  3. 統一フォーマットでデータ管理が簡単: 異なるファイル形式も全部マークダウンになるので扱いやすい

特にRAG(Retrieval Augmented Generation)システムを構築する時に、このツールの真価が発揮されます。社内ドキュメントをまとめてマークダウン化して、それをベクトルDBに突っ込めば、最強の社内ナレッジベースの完成です!

実践!MarkItDown-MCPの使い方

MarkItDown-MCP

インストール方法

まずはインストールから。超簡単です:

pip install markitdown-mcp

たったこれだけ!依存関係も自動で解決してくれるので、環境構築のストレスがないのが嬉しいですね。

基本的な使い方

MarkItDown-MCPは、STDIOとSSEの両方のMCPサーバーとして動作します。
デフォルトではSTDIOモードで起動します:

markitdown-mcp

SSEモードで使いたい場合は以下のようにします:

markitdown-mcp --sse --host 127.0.0.1 --port 3001

私はSSEモードの方が他のツールと連携しやすくて好きですね。特にAPIテストツールと組み合わせると最強です!

APIテストツールApidogを使えば、MarkItDown-MCPサーバーへのリクエストも簡単に管理できます。WebSocketやSSE通信にも対応しているので、MCPサーバーとの連携も快適。チーム内でAPIドキュメントを共有しながら、効率的なLLM開発環境を構築しましょう!

Docker環境での実行方法

本番環境ではDockerで動かすのがおすすめです。以下のコマンドでイメージをビルドします:

docker build -t markitdown-mcp:latest .

実行するには:

docker run -it --rm markitdown-mcp:latest

ローカルファイルにアクセスする必要がある場合は、ボリュームをマウントします:

docker run -it --rm -v /home/user/data:/workdir markitdown-mcp:latest

これで /home/user/data 内のファイルがコンテナ内の /workdir からアクセスできるようになります。便利ですよね!

Claude Desktopとの連携方法

AIアシスタントとの連携も簡単です。Claude Desktopを使っている方は、claude_desktop_config.json ファイルを編集して以下のJSONエントリを追加するだけ:

{
  "mcpServers": {
    "markitdown": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "markitdown-mcp:latest"
      ]
    }
  }
}

ディレクトリをマウントする場合は、以下のように調整します:

{
  "mcpServers": {
    "markitdown": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "-v",
        "/home/user/data:/workdir",
        "markitdown-mcp:latest"
      ]
    }
  }
}

これでClaudeからMarkItDownの機能を直接呼び出せるようになります。マジで便利ですよ!

デバッグ方法と注意点

MCPインスペクターの活用

デバッグには mcpinspector ツールが便利です:

npx @modelcontextprotocol/inspector

指定されたホストとポート(例:http://127.0.0.1:6274/)を通じてインスペクターに接続できます。

MCPインスペクター

STDIOモードの場合

  • トランスポートタイプとして STDIO を選択
  • コマンドとして markitdown-mcp を入力
  • 「Connect」をクリック

SSEモードの場合

  • トランスポートタイプとして SSE を選択
  • URLとして http://localhost:3001/sse を入力
  • 「Connect」をクリック

接続後は「Tools」タブをクリックして、「List Tools」→「convert_to_markdown」と進み、任意の有効なURIでツールを実行できます。

セキュリティ上の注意点

重要なポイントとして、このサーバーは認証をサポートしておらず、実行ユーザーの権限で動作します。そのため、SSEモードで実行する場合は、デフォルトの localhost にバインドすることをお勧めします。

正直、社内ネットワークで公開する場合は、別途認証層を追加した方が安全ですね。APIテストツールのApidogを使えば、簡単にプロキシ設定ができるので、そういった対策も検討してみてください。

まとめ:MarkItDownは開発者の必須ツール!

MarkItDownは、様々なファイル形式をマークダウンに変換できる強力なツールです。特にLLMを活用した開発をしている方には、作業効率を劇的に向上させてくれる救世主的存在だと思います。

私自身、このツールを導入してから、ドキュメント処理の時間が半分以下になりました。特にRAGシステムの構築が格段に楽になったのは大きいですね。

今後のAI開発では、こういったデータ変換ツールの重要性がますます高まると思います。ぜひ皆さんも試してみてください!

何か質問や感想があれば、コメント欄でぜひ教えてくださいね。一緒にAI開発の可能性を広げていきましょう!

Discussion