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. 01将 PDF 或网页文档转换为 Markdown 供 LLM 使用
  2. 02从文档中提取表格为结构化数据
  3. 03结合 Llama Stack 构建文档问答应用

MCP 相关

该服务通过 stdio 或 SSE 传输运行,向 MCP 客户端暴露文档转换、表格提取、批量处理和问答生成等工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

MCP Docling 服务

一个使用 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 格式的问答文档

    • source:文档的 URL 或本地文件路径(必填)
    • no_of_qnas:预期的问答数量(可选,默认值:5)
    • 注意:此工具需要将 IBM Watson X 凭据设置为环境变量:
  6. get_system_info:获取有关系统配置和加速状态的信息

Llama Stack 示例

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

你可以将此服务与 Llama Stack 配合使用,为你的大模型应用提供文档处理功能。请确保 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/,以提升重复请求的性能。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。