一个使用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
服务器提供了以下工具:
convert_document: 将来自URL或本地路径的文档转换为markdown格式
source: 文档的URL或本地文件路径(必需)enable_ocr: 是否启用OCR以处理扫描文档(可选,默认:false)ocr_language: OCR的语言代码列表,例如["en", "fr"](可选)convert_document_with_images: 转换文档并提取嵌入的图像
source: 文档的URL或本地文件路径(必需)enable_ocr: 是否启用OCR以处理扫描文档(可选,默认:false)ocr_language: OCR的语言代码列表(可选)extract_tables: 从文档中提取表格作为结构化数据
source: 文档的URL或本地文件路径(必需)convert_batch: 批量处理多个文档
sources: 文档的URL或文件路径列表(必需)enable_ocr: 是否启用OCR以处理扫描文档(可选,默认:false)ocr_language: OCR的语言代码列表(可选)qna_from_document: 根据URL或本地路径创建一个Q&A文档,并将其转换为YAML格式
source: 文档的URL或本地文件路径(必需)no_of_qnas: 预期的Q&A数量(可选,默认:5)WATSONX_PROJECT_ID: 你的Watson X项目IDWATSONX_APIKEY: 你的IBM Cloud API密钥WATSONX_URL: Watson X API URL(默认:https://us-south.ml.cloud.ibm.com)get_system_info: 获取系统配置和加速状态的信息
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/缓存已处理的文档,以提高重复请求的性能。