mcp-paperless-ngx
A read-only and write MCP server for Paperless-ngx, enabling document listing, metadata retrieval, and creation of tags, correspondents, document types, and sorting workflows via natural language.
README
mcp-paperless-ngx
MCP server for Paperless-ngx using the streamable HTTP transport protocol.
Features
Resources
| URI | Description |
|---|---|
paperless://openapi |
Full OpenAPI spec for the Paperless-ngx REST API |
paperless://server |
Configured server base URL |
paperless://token |
API auth token |
Tools (read-only)
list_documents— list documents with filters (tag, correspondent, document type, full-text query)get_document— retrieve a single document with all metadataget_document_content— retrieve extracted text content of a documentget_document_suggestions— AI-generated metadata suggestions for a documentlist_tags— list all tagslist_correspondents— list all correspondentslist_document_types— list all document typeslist_workflows— list all sorting workflowslist_workflow_triggers— list all workflow triggerslist_workflow_actions— list all workflow actions
Tools (write — metadata and workflow creation)
create_tag— create a new tagcreate_correspondent— create a new correspondentcreate_document_type— create a new document typecreate_workflow_trigger— create a workflow trigger (conditions)create_workflow_action— create a workflow action (assignments)create_workflow— create a complete workflow linking triggers and actions
Prompts
get_inbox_documents— formatted overview of all inbox documentsget_document_data_for_rule_creation(document_id)— detailed document data to help design a sorting rulecreate_sorting_rule(document_id?)— guided walkthrough for creating a sorting workflow
Configuration
Create ~/.config/mcp-paperless-ngx/config.toml:
[paperless]
server_url = "http://your-paperless-server:8000"
token = "your-api-token"
inbox_tag_id = 1 # ID of the tag used for the inbox view
Override the config path with the PAPERLESS_MCP_CONFIG environment variable.
Running
# Install dependencies
uv sync
# Start the server (listens on 0.0.0.0:8000/mcp)
uv run mcp-paperless-ngx
The MCP endpoint is available at http://localhost:8000/mcp (streamable HTTP).
Docker
Quick start
# Pull and run (replace values in the environment or mount a config file)
docker run -d \
--name mcp-paperless-ngx \
-p 8000:8000 \
-v ./config:/config:ro \
ghcr.io/Code-Omega-Solutions/mcp-paperless-ngx:latest
Create ./config/config.toml before starting (see Configuration above).
docker-compose
# 1. Create the config directory and file
mkdir config
cat > config/config.toml <<'EOF'
[paperless]
server_url = "http://your-paperless-server:8000"
token = "your-api-token"
inbox_tag_id = 1
EOF
# 2. Start the service
docker compose up -d
# 3. Check it is healthy
docker compose ps
The docker-compose.yml in this repository mounts ./config as read-only and
includes a health check that verifies the server is accepting TCP connections on
port 8000.
Building locally
docker build -t mcp-paperless-ngx .
docker run -d -p 8000:8000 -v ./config:/config:ro mcp-paperless-ngx
Published image
Pre-built images for linux/amd64 and linux/arm64 are available at:
ghcr.io/Code-Omega-Solutions/mcp-paperless-ngx:latest
Tags follow Semantic Versioning — v1.2.3, 1.2, latest.
Getting an API token
In Paperless-ngx, go to Settings → Profile and generate an API token, or use:
curl -X POST http://your-server/api/token/ \
-d '{"username": "your-user", "password": "your-password"}' \
-H "Content-Type: application/json"
Connecting from Open WebUI
To use this MCP server with Open WebUI:
-
Open Settings → Functions
-
Click "+" to add a new function
-
Configure the MCP connection:
- Name: Paperless Assistant (or your preferred name)
- Type: MCP
- URL:
http://host.docker.internal:8000/mcp- If Open WebUI runs in Docker on the same host as mcp-paperless-ngx, use
host.docker.internal - If running on different hosts, replace with the actual hostname/IP
- Critical: The port (
:8000) and/mcppath are required
- If Open WebUI runs in Docker on the same host as mcp-paperless-ngx, use
- Auth: None ⚠️
- Do NOT use "Bearer" — the server authenticates to Paperless internally using credentials from
config.toml - Open WebUI does not need to provide additional auth tokens
- Do NOT use "Bearer" — the server authenticates to Paperless internally using credentials from
- Description: (Optional) "Access Paperless-ngx documents"
-
Click Save
-
Test the connection by asking: "Show me documents in my inbox"
Common Issues
- 404 errors: Verify the URL includes
/mcpat the end - Connection refused: Ensure the port
:8000is included and the server is running (uv run mcp-paperless-ngx) - Authentication errors: Confirm Auth is set to "None", not "Bearer"
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.