Install
$ agentstack add mcp-zanetworker-mcp-docling ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ● Environment & secrets Used
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
MCP Docling Server
An MCP server that provides document processing capabilities using the Docling library.
Installation
You can install the package using pip:
pip install -e .
Usage
Start the server using either stdio (default) or SSE transport:
# Using stdio transport (default)
mcp-server-lls
# Using SSE transport on custom port
mcp-server-lls --transport sse --port 8000
If you're using uv, you can run the server directly without installing:
# Using stdio transport (default)
uv run mcp-server-lls
# Using SSE transport on custom port
uv run mcp-server-lls --transport sse --port 8000
Available Tools
The server exposes the following tools:
- convert_document: Convert a document from a URL or local path to markdown format
source: URL or local file path to the document (required)enable_ocr: Whether to enable OCR for scanned documents (optional, default: false)ocr_language: List of language codes for OCR, e.g. ["en", "fr"] (optional)
- convertdocumentwith_images: Convert a document and extract embedded images
source: URL or local file path to the document (required)enable_ocr: Whether to enable OCR for scanned documents (optional, default: false)ocr_language: List of language codes for OCR (optional)
- extract_tables: Extract tables from a document as structured data
source: URL or local file path to the document (required)
- convert_batch: Process multiple documents in batch mode
sources: List of URLs or file paths to documents (required)enable_ocr: Whether to enable OCR for scanned documents (optional, default: false)ocr_language: List of language codes for OCR (optional)
- qnafromdocument: Create a Q&A document from a URL or local path to YAML format
source: URL or local file path to the document (required)no_of_qnas: Number of expected Q&As (optional, default: 5)- Note: This tool requires IBM Watson X credentials to be set as environment variables:
WATSONX_PROJECT_ID: Your Watson X project IDWATSONX_APIKEY: Your IBM Cloud API keyWATSONX_URL: The Watson X API URL (default: https://us-south.ml.cloud.ibm.com)
- getsysteminfo: Get information about system configuration and acceleration status
Example with Llama Stack
https://github.com/user-attachments/assets/8ad34e50-cbf7-4ec8-aedd-71c42a5de0a1
You can use this server with Llama Stack to provide document processing capabilities to your LLM applications. Make sure you have a running Llama Stack server, then configure your 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')
Caching
The server caches processed documents in ~/.cache/mcp-docling/ to improve performance for repeated requests.
Source & license
This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: zanetworker
- Source: zanetworker/mcp-docling
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.