mcp-paperless-ngx
Allows managing documents, tags, correspondents, document types, and workflows in a Paperless-ngx instance.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-paperless-ngxlist my inbox documents"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcp-paperless-ngx
MCP server for Paperless-ngx using the streamable HTTP transport protocol.
Features
Resources
URI | Description |
| Full OpenAPI spec for the Paperless-ngx REST API |
| Configured server base URL |
| 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
Related MCP server: PaperCortex
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 viewOverride 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-ngxThe 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:latestCreate ./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 psThe 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-ngxPublished image
Pre-built images for linux/amd64 and linux/arm64 are available at:
ghcr.io/Code-Omega-Solutions/mcp-paperless-ngx:latestTags 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/mcpIf Open WebUI runs in Docker on the same host as mcp-paperless-ngx, use
host.docker.internalIf running on different hosts, replace with the actual hostname/IP
Critical: The port (
:8000) and/mcppath are required
Auth: None ⚠️
Do NOT use "Bearer" — the server authenticates to Paperless internally using credentials from
config.tomlOpen WebUI does not need to provide additional auth tokens
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 endConnection 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"
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Code-Omega-Solutions/mcp-paperless-ngx'
If you have feedback or need assistance with the MCP directory API, please join our Discord server