MCP Docling Server

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Integrations

  • Converts arXiv PDF documents to markdown format, with support for table extraction and image extraction from the documents.

  • Integrates with Llama Stack (hosted on GitHub) to provide document processing capabilities to LLM applications built with the Llama Stack framework.

  • Converts various document formats to markdown, with support for embedded images extraction and OCR capabilities for scanned documents.

Servidor de acoplamiento MCP

Un servidor MCP que proporciona capacidades de procesamiento de documentos utilizando la biblioteca Docling.

Instalación

Puedes instalar el paquete usando pip:

pip install -e .

Uso

Inicie el servidor utilizando stdio (predeterminado) o el transporte SSE:

# Using stdio transport (default) mcp-server-lls # Using SSE transport on custom port mcp-server-lls --transport sse --port 8000

Si está usando uv, puede ejecutar el servidor directamente sin instalar:

# Using stdio transport (default) uv run mcp-server-lls # Using SSE transport on custom port uv run mcp-server-lls --transport sse --port 8000

Herramientas disponibles

El servidor expone las siguientes herramientas:

  1. convert_document : Convierte un documento desde una URL o ruta local al formato Markdown
    • source : URL o ruta del archivo local del documento (obligatorio)
    • enable_ocr : si se debe habilitar el OCR para documentos escaneados (opcional, valor predeterminado: falso)
    • ocr_language : lista de códigos de idioma para OCR, p. ej., ["en", "fr"] (opcional)
  2. convert_document_with_images : Convertir un documento y extraer imágenes incrustadas
    • source : URL o ruta del archivo local del documento (obligatorio)
    • enable_ocr : si se debe habilitar el OCR para documentos escaneados (opcional, valor predeterminado: falso)
    • ocr_language : Lista de códigos de idioma para OCR (opcional)
  3. extract_tables : Extrae tablas de un documento como datos estructurados
    • source : URL o ruta del archivo local del documento (obligatorio)
  4. convert_batch : Procesar múltiples documentos en modo por lotes
    • sources : Lista de URL o rutas de archivos a documentos (obligatorio)
    • enable_ocr : si se debe habilitar el OCR para documentos escaneados (opcional, valor predeterminado: falso)
    • ocr_language : Lista de códigos de idioma para OCR (opcional)
  5. qna_from_document : Crea un documento de preguntas y respuestas desde una URL o ruta local al formato YAML
    • source : URL o ruta del archivo local del documento (obligatorio)
    • no_of_qnas : Número de preguntas y respuestas esperadas (opcional, predeterminado: 5)
    • Nota : Esta herramienta requiere que las credenciales de IBM Watson X se configuren como variables de entorno:
      • WATSONX_PROJECT_ID : Su ID de proyecto Watson X
      • WATSONX_APIKEY : Su clave de API de IBM Cloud
      • WATSONX_URL : la URL de la API Watson X (predeterminada: https://us-south.ml.cloud.ibm.com )
  6. get_system_info : Obtener información sobre la configuración del sistema y el estado de la aceleración

Ejemplo con Llama Stack

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

Puede usar este servidor con Llama Stack para proporcionar capacidades de procesamiento de documentos a sus aplicaciones LLM. Asegúrese de tener un servidor Llama Stack en ejecución y luego configure su 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')

Almacenamiento en caché

El servidor almacena en caché los documentos procesados en ~/.cache/mcp-docling/ para mejorar el rendimiento de las solicitudes repetidas.

-
security - not tested
A
license - permissive license
-
quality - not tested

Un servidor que proporciona capacidades de procesamiento de documentos utilizando el Protocolo de Contexto de Modelo, permitiendo la conversión de documentos a Markdown, la extracción de tablas y el procesamiento de imágenes de documentos.

  1. Installation
    1. Usage
      1. Available Tools
        1. Example with Llama Stack
          1. Caching
            ID: vtzkoq9xso