【Claude Desktop/Docker】Microsoft MarkItDown-MCPサーバーを触ってみる
はじめに
普段の開発作業中に思わぬ壁にぶつかったんですよ。いろんな形式のファイルをLLMに食わせたいけど、PDFやExcelファイルをそのまま投げ込むとLLMが「ん?何これ?」って感じになっちゃうんです(笑)。
そんな時に出会ったのが、Microsoftが開発した「MarkItDown」というPythonライブラリ。これがマジですごいんですよ!今日はこのツールについて、実際に使ってみた体験を交えながら紹介していきます。正直言って、これは開発者にとって宝物レベルのツールだと思いますよ!
MarkItDownって何?開発者の救世主!
基本的な概念
MarkItDownは、簡単に言うと「何でもマークダウンに変換してくれる魔法のツール」です。Microsoftが開発したPythonライブラリで、様々なファイル形式をマークダウン形式に変換できます。
私が最初にこれを知った時は「へぇ〜、便利そうだな」程度に思ってたんですが、実際に使ってみると「これマジですごい!なんでもっと早く知らなかったんだ!」ってなりましたね(笑)。
対応ファイル形式が豊富すぎる!
MarkItDownが対応しているファイル形式は本当に幅広いんです:
- Officeドキュメント: PowerPoint、Word、Excel(会社の資料をそのままLLMに食わせられる!)
- リッチメディア: 画像(EXIFデータや画像説明付き)、音声(文字起こし機能付き)
- ウェブ・構造化データ: HTML、CSV、JSON、XML(APIのレスポンスとかもOK!)
- アーカイブ: ZIPファイル
特にすごいのは、OCRや音声認識を使ってマルチモーダルなファイルからもコンテンツを抽出できること。画像に含まれるテキストも認識してくれるんですよ!これ、テスト自動化とかでめちゃくちゃ役立ちます。
LLMとの相性抜群!RAGシステム構築の強い味方
なぜマークダウン形式がいいの?
「なんでわざわざマークダウンに変換するの?」って思う人もいるかもしれませんね。理由はシンプルです:
- テキストデータだからLLMに投入しやすい: バイナリデータじゃないので処理が楽チン
- LLMはマークダウン形式の解釈が得意: 構造化されたテキストなので回答精度が上がる
- 統一フォーマットでデータ管理が簡単: 異なるファイル形式も全部マークダウンになるので扱いやすい
特にRAG(Retrieval Augmented Generation)システムを構築する時に、このツールの真価が発揮されます。社内ドキュメントをまとめてマークダウン化して、それをベクトルDBに突っ込めば、最強の社内ナレッジベースの完成です!
実践!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/
)を通じてインスペクターに接続できます。
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