mcpField
M
MCP Docling Server

MCP Docling Server

ローカル
github.com/zanetworker生産性1982 週間前に更新

MCP Docling Server について

MCP Docling Server は、Docling ライブラリを用いて文書を処理する MCP サーバーで、文書の Markdown 変換や表・画像の抽出を行います。LLM アプリケーションで文書内容を扱いたい利用者を対象とし、stdio と SSE の両方のトランスポートに対応します。

主な機能

  1. 01文書の Markdown への変換
  2. 02表と画像の抽出
  3. 03スキャン文書向けの任意の OCR 処理
  4. 04複数文書のバッチ処理
  5. 05処理済み文書のローカルキャッシュ

活用シーン

  1. 01PDF や Web 文書を LLM 向けに Markdown へ変換
  2. 02文書から表を構造化データとして抽出
  3. 03Llama Stack と組み合わせた文書ベースのアプリケーション構築

MCP 対応

サーバーは stdio または SSE で動作し、文書変換、表抽出、バッチ処理、Q&A 生成のツールを MCP クライアントに公開します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

MCP Docling Server

Docling ライブラリを使用してドキュメント処理機能を提供する MCP サーバーです。

インストール

pip を使用してパッケージをインストールできます:

pip install -e .

使用方法

stdio(デフォルト)または SSE トランスポートを使用してサーバーを起動します:

# Using stdio transport (default)
mcp-server-lls

# Using SSE transport on custom port
mcp-server-lls --transport sse --port 8000

uv を使用している場合は、インストールせずにサーバーを直接実行できます:

# Using stdio transport (default)
uv run mcp-server-lls

# Using SSE transport on custom port
uv run mcp-server-lls --transport sse --port 8000

利用可能なツール

サーバーは次のツールを公開します:

  1. convert_document:URL またはローカルパスからドキュメントを Markdown 形式に変換します

    • source:ドキュメントの URL またはローカルファイルパス(必須)
    • enable_ocr:スキャンされたドキュメントに対して OCR を有効にするかどうか(任意、デフォルト:false)
    • ocr_language:OCR 用の言語コードのリスト(例:["en", "fr"])(任意)
  2. convert_document_with_images:ドキュメントを変換し、埋め込まれた画像を抽出します

    • source:ドキュメントの URL またはローカルファイルパス(必須)
    • enable_ocr:スキャンされたドキュメントに対して OCR を有効にするかどうか(任意、デフォルト:false)
    • ocr_language:OCR 用の言語コードのリスト(任意)
  3. extract_tables:ドキュメントから表を構造化データとして抽出します

    • source:ドキュメントの URL またはローカルファイルパス(必須)
  4. convert_batch:複数のドキュメントをバッチモードで処理します

    • sources:ドキュメントの URL またはファイルパスのリスト(必須)
    • enable_ocr:スキャンされたドキュメントに対して OCR を有効にするかどうか(任意、デフォルト:false)
    • ocr_language:OCR 用の言語コードのリスト(任意)
  5. qna_from_document:URL またはローカルパスから YAML 形式の Q&A ドキュメントを作成します

    • source:ドキュメントの URL またはローカルファイルパス(必須)
    • no_of_qnas:想定される Q&A の数(任意、デフォルト:5)
    • 注:このツールを使用するには、IBM Watson X の認証情報を環境変数として設定する必要があります:
      • WATSONX_PROJECT_ID:Watson X のプロジェクト ID
      • WATSONX_APIKEY:IBM Cloud API キー
      • WATSONX_URL:Watson X API の URL(デフォルト:https://us-south.ml.cloud.ibm.com)
  6. get_system_info:システム構成とアクセラレーションの状態に関する情報を取得します

Llama Stack の使用例

https://github.com/user-attachments/assets/8ad34e50-cbf7-4ec8-aedd-71c42a5de0a1

このサーバーを Llama Stack と一緒に使用すると、LLM アプリケーションにドキュメント処理機能を提供できます。Llama Stack サーバーが起動していることを確認してから、INFERENCE_MODEL を設定してください

from llama_stack_client.lib.agents.agent import Agent
from llama_stack_client.lib.agents.event_logger import EventLogger
from llama_stack_client.types.agent_create_params import AgentConfig
from llama_stack_client.types.shared_params.url import URL
from llama_stack_client import LlamaStackClient
import os

# Set your model ID
model_id = os.environ["INFERENCE_MODEL"]
client = LlamaStackClient(
    base_url=f"http://localhost:{os.environ.get('LLAMA_STACK_PORT', '8080')}"
)

# Register MCP tools
client.toolgroups.register(
    toolgroup_id="mcp::docling",
    provider_id="model-context-protocol",
    mcp_endpoint=URL(uri="http://0.0.0.0:8000/sse"))

# Define an agent with MCP toolgroup
agent_config = AgentConfig(
    model=model_id,
    instructions="""You are a helpful assistant with access to tools to manipulate documents.
Always use the appropriate tool when asked to process documents.""",
    toolgroups=["mcp::docling"],
    tool_choice="auto",
    max_tool_calls=3,
)

# Create the agent
agent = Agent(client, agent_config)

# Create a session
session_id = agent.create_session("test-session")

def _summary_and_qna(source: str):
    # Define the prompt
    run_turn(f"Please convert the document at {source} to markdown and summarize its content.")
    run_turn(f"Please generate a Q&A document with 3 items for source at {source} and display it in YAML format.")

def _run_turn(prompt):
    # Create a turn
    response = agent.create_turn(
        messages=[
            {
                "role": "user",
                "content": prompt,
            }
        ],
        session_id=session_id,
    )

    # Log the response
    for log in EventLogger().log(response):
        log.print()

_summary_and_qna('https://arxiv.org/pdf/2004.07606')

キャッシュ

サーバーは、繰り返しのリクエストのパフォーマンスを向上させるため、処理済みのドキュメントを ~/.cache/mcp-docling/ にキャッシュします。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。