paperless-ngx

A connection to paperless-ngx, a self-hosted document archive that can store and organize scanned files and their text.

In plain words
What is it for?
It is for searching, reading, filing, and uploading documents in a paperless-ngx archive.
Why use it?
It lets an agent work with archive documents without manually opening the paperless-ngx web interface.

Plugin for Claude Code

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Claude Code
/plugin marketplace add patrickcylai/paperless-ngx-mcp
agentmods
npx agentmods add plugins/patrickcylai/paperless-ngx-mcp/plugin
Clone the repo
git clone --depth 1 https://github.com/patrickcylai/paperless-ngx-mcp

Made for: Claude Code.

Per session not measured What this adds to a session before it is invoked.
When invoked not measured Not applicable: nothing here is loaded into a session.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Security

Grade A, and why

paperless-ngx scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured yesterday.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

plugin/.claude-plugin/plugin.json · 45 lines

What it actually says

{
    "name": "paperless-ngx",
    "description": "Search, read, file and upload documents in a paperless-ngx archive.",
    "version": "0.2.0",
    "author": {
        "name": "Patrick Lai"
    },
    "homepage": "https://github.com/patrickcylai/paperless-ngx-mcp#readme",
    "repository": "https://github.com/patrickcylai/paperless-ngx-mcp",
    "license": "MIT",
    "userConfig": {
        "url": {
            "type": "string",
            "title": "Paperless URL",
            "description": "Base URL of your paperless-ngx install, e.g. https://paperless.example.com. A trailing /api is stripped, so either form works.",
            "required": true
        },
        "token": {
            "type": "string",
            "title": "API token",
            "description": "Paperless web UI -> user menu -> My Profile -> the circular arrow next to API Token.",
            "sensitive": true,
            "required": true
        },
        "read_only": {
            "type": "boolean",
            "title": "Read-only mode",
            "description": "Refuse every tool that would modify the archive. Downloads still write files, inside the download directory below.",
            "default": false
        },
        "download_dir": {
            "type": "directory",
            "title": "Download directory",
            "description": "The only directory downloads may be written into. Leave empty for a private directory under your system temp folder.",
            "default": ""
        },
        "upload_dirs": {
            "type": "string",
            "title": "Upload directories",
            "description": "Comma-separated directories uploads may read from, e.g. ~/Documents/scans. Leave empty to allow only the download directory.",
            "default": ""
        }
    }
}
Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. yesterday First seen · 45 lines scan A f4ca314b64c1

Subscribe to this mod's changes

paperless-ngx is a plugin published in the GitHub repository patrickcylai/paperless-ngx-mcp (0 stars, last pushed 12d ago), licensed MIT. Its token cost is not measured: this kind of file is read by the harness, not the model. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.