返回市场
文档链接器

文档链接器

作者:zanetworker18 星标更新:2025-04-05

项目介绍

MCP Docling Server

一个使用Docling库提供文档处理功能的MCP服务器。

安装

你可以通过pip安装该包:

pip install -e .

使用

使用stdio(默认)或SSE传输启动服务器:

# 使用stdio传输(默认)
mcp-server-lls

# 在自定义端口上使用SSE传输
mcp-server-lls --transport sse --port 8000

如果你使用uv,可以直接运行服务器而无需安装:

# 使用stdio传输(默认)
uv run mcp-server-lls

# 在自定义端口上使用SSE传输
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或本地路径创建一个Q&A文档,并将其转换为YAML格式

    • source: 文档的URL或本地文件路径(必需)
    • no_of_qnas: 预期的Q&A数量(可选,默认:5)
    • 注意:此工具需要设置IBM Watson X凭证作为环境变量:
  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

# 设置你的模型ID
model_id = os.environ["INFERENCE_MODEL"]
client = LlamaStackClient(
    base_url=f"http://localhost:{os.environ.get('LLAMA_STACK_PORT', '8080')}"
)

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

# 定义带有MCP工具组的代理
agent_config = AgentConfig(
    model=model_id,
    instructions="""你是一个有权限访问用于操作文档的工具的帮助助手。
当被要求处理文档时,请始终使用适当的工具。""",
    toolgroups=["mcp::docling"],
    tool_choice="auto",
    max_tool_calls=3,
)

# 创建代理
agent = Agent(client, agent_config)

# 创建会话
session_id = agent.create_session("test-session")

def _summary_and_qna(source: str):
    # 定义提示
    run_turn(f"请将位于{source}的文档转换为markdown格式并总结其内容。")
    run_turn(f"请为位于{source}的源生成包含3个项目的Q&A文档,并以YAML格式显示它。")

def _run_turn(prompt):
    # 创建回合
    response = agent.create_turn(
        messages=[
            {
                "role": "user",
                "content": prompt,
            }
        ],
        session_id=session_id,
    )

    # 记录响应
    for log in EventLogger().log(response):
        log.print()

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

缓存

服务器在~/.cache/mcp-docling/缓存已处理的文档,以提高重复请求的性能。