Skip to main content
Glama
tobee89

mcp-paperless-ngx


Entwickelt für die REST-API Version 10, mit drei Dingen, die es anders macht:

  • Lückenlose Abdeckung. Jeder der 92 dokumentierten Endpunkte ist entweder als Tool verfügbar oder in src/tools/coverage.ts mit einer schriftlichen Begründung für den Ausschluss gelistet. Ein Test erzwingt das, sodass ein Paperless-Release, das einen Endpunkt hinzufügt, in der CI fehlschlägt, anstatt stillschweigend nicht unterstützt zu werden.

  • Token-Disziplin. Ein Paperless-Dokument enthält seinen vollständigen OCR-Text. Naive Wrapper geben ihn standardmäßig zurück, und eine einzige Suche kann den Kontext des Modells erschöpfen. Hier werden Listenergebnisse serverseitig über ?fields= beschnitten, der Text liegt hinter einem eigenen paginierten Tool, und kein Listen-Endpunkt reicht die rohe API-Antwort durch — ein Test erzwingt das. Siehe Kontextkosten.

  • Begrenzte Oberfläche. 99 Tools würden die Tool-Liste eines Modells überfluten. Toolsets ermöglichen es, nur das freizugeben, was ein bestimmter Client benötigt, und --read-only entfernt sämtliche Schreibpfade vollständig.

Paperless-ngx 2.x wird nicht unterstützt: API-Version 10 führte Endpunkte ein (verschachtelte Tags, Dokumentversionen, share_link_bundles, die Split-PDF-Operationen), die dieser Server voraussetzt.

Schnellstart

npx -y mcp-paperless-ngx --check   # verify connectivity, then exit

Claude Code

claude mcp add paperless --scope user \
  --env PAPERLESS_URL=https://paperless.example.com \
  --env PAPERLESS_TOKEN=your-api-token \
  -- npx -y mcp-paperless-ngx

Claude Desktop, Cursor, Cline und andere MCP-Clients

{
  "mcpServers": {
    "paperless": {
      "command": "npx",
      "args": ["-y", "mcp-paperless-ngx"],
      "env": {
        "PAPERLESS_URL": "https://paperless.example.com",
        "PAPERLESS_TOKEN": "your-api-token"
      }
    }
  }
}

API-Token erhalten

Paperless-Web-UI → Ihr Benutzername (oben rechts) → Mein Profil → die kreisförmige Pfeil-Schaltfläche neben dem API-Token-Feld.

Related MCP server: paperlessngx-mcp

Konfiguration

Variable

Erforderlich

Standard

Zweck

PAPERLESS_URL

ja

Basis-URL, mit der der Server kommuniziert.

PAPERLESS_TOKEN

ja

API-Token. PAPERLESS_API_KEY funktioniert ebenfalls.

PAPERLESS_PUBLIC_URL

nein

PAPERLESS_URL

URL, die beim Erstellen von Links für den Benutzer verwendet wird, falls die Instanz von außen unter einem anderen Namen erreichbar ist.

PAPERLESS_TOOLSETS

nein

siehe unten

Kommagetrennte Toolsets oder all.

PAPERLESS_READ_ONLY

nein

false

Nur Tools freigeben, die nichts verändern können.

PAPERLESS_HEADERS

nein

Zusätzliche Request-Header, als JSON ({"X-Auth":"…"}) oder Name: value, Name: value. Erforderlich hinter Forward-Auth-Proxys wie Authentik oder Authelia.

PAPERLESS_DOWNLOAD_DIR

nein

System-Temp

Verzeichnis, in das heruntergeladene Dateien geschrieben werden.

PAPERLESS_MAX_PAGE_SIZE

nein

100

Feste Obergrenze für Listenseitengrößen, unabhängig davon, was das Modell anfordert.

PAPERLESS_TIMEOUT_MS

nein

60000

Request-Timeout.

PAPERLESS_API_VERSION

nein

10

REST-API-Version, die im Accept-Header gesendet wird.

Die CLI-Flags --url, --token, --public-url, --toolsets und --read-only haben Vorrang vor der Umgebung. --check prüft die Verbindung, --list-tools gibt die aktivierten Tools aus.

Toolsets

Toolset

Standard

Inhalt

documents

an

Suche, Lesen, Aktualisieren, Löschen, Hochladen, Herunterladen, Notizen, Bulk- und PDF-Operationen

metadata

an

Tags, Korrespondenten, Dokumenttypen, Speicherpfade

customfields

an

Definitionen benutzerdefinierter Felder

views

an

Gespeicherte Ansichten

sharing

an

Freigabe-Links und Freigabe-Link-Bündel

workflows

an

Automatisierungsregeln, Trigger, Aktionen

system

an

Globale Suche, Statistiken, Status, Aufgaben, Papierkorb

mail

aus

IMAP-Konten, E-Mail-Regeln, verarbeitete E-Mail

admin

aus

Benutzer, Gruppen, Profil, Konfiguration, Logs (nur Lesen)

mail und admin sind standardmäßig deaktiviert, weil die meisten Sitzungen sie nie benötigen und jedes zusätzliche Tool bei jeder Anfrage Kontext kostet. Aktivieren Sie sie explizit:

PAPERLESS_TOOLSETS=documents,metadata,system,mail
PAPERLESS_TOOLSETS=all

Kontextkosten

Eine API für ein Sprachmodell zu kapseln, hat Kosten, die die API selbst nicht hat: Alles, was das Modell sieht, wird bei jeder Anfrage bezahlt. Zwei Stellen, an denen das zuschlägt, und was dieser Server dagegen tut.

Antworten. Drei Antwortformen sind in Paperless teuer und werden leicht versehentlich zurückgegeben:

Quelle

Problem

Handhabung

Dokumentlisten

Jedes Dokument enthält seinen vollständigen OCR-Text in content

?fields= schränkt die Antwort serverseitig ein; get_document_content paginiert den Text separat

/api/search/

Gibt hydratisierte Document-Objekte zurück, einschließlich OCR-Text, über alle Objekttypen

Dokumente werden zusammengefasst, andere Typen auf id + name reduziert

Workflows, E-Mail-Regeln, Gruppen, Aufgaben

27–34 Felder pro Objekt, verschachtelte Trigger-/Aktionsdefinitionen inline

Auf identifizierende Felder zusammengefasst; verschachtelte Listen werden auf Anzahlen reduziert. full: true gibt alles zurück

Tool-Definitionen. Das sind die größeren und weniger offensichtlichen Kosten: Namen, Beschreibungen und JSON-Schemata werden mit jeder Anfrage mitgeschickt, ob nun ein Tool aufgerufen wird oder nicht.

Toolsets

Tools

Ungefähre Kosten pro Anfrage

all

99

~20,500 Tokens

Standard

85

~18,500 Tokens

documents,metadata

49

~12,900 Tokens

Es gibt keinen Weg, das kostenlos zu machen — es ist der Preis für ein Tool, das das Modell ohne Raten nutzen kann. Aber es lohnt sich, bewusst zu wählen: Wenn Ihre Sitzungen nur Dokumente suchen und ablegen, spart das Ausführen von PAPERLESS_TOOLSETS=documents,metadata mehr Kontext als jede Antwortkürzung.

Sicherheit

Der Server stellt destruktive Operationen bereit, denn ein Dokumentenmanager ohne sie ist kein großer Manager. Er versucht nicht zu erraten, wann sie angemessen sind — dieses Urteil obliegt dem Client und dem Benutzer. Was er stattdessen tut:

  • Destruktive Tools sind mit destructiveHint: true annotiert, sodass MCP-Clients eine Bestätigung verlangen können.

  • Die Tool-Beschreibungen sagen deutlich, was nicht rückgängig gemacht werden kann (empty_trash, delete_custom_field, delete_originals), und bitten vor dem Aufruf um Bestätigung.

  • --read-only entfernt alle Schreib-Tools aus der Liste, anstatt sie erst beim Aufruf abzulehnen.

  • Bulk-Endpunkte unterstützen einen Modus „Auf alles anwenden, was diesem Filter entspricht“. Dieser Server legt ihn nicht offen: Bulk-Tools akzeptieren explizite ID-Listen, sodass ein falscher Filter nicht stillschweigend das gesamte Archiv beeinflussen kann.

  • create_share_link erzeugt eine öffentlich erreichbare URL. Die Beschreibung sagt das, und der Prompt audit_sharing dient dazu, zu prüfen, was bereits offengelegt ist.

Endpunkte mit Bezug zu Anmeldedaten (Token-Erzeugung, TOTP-Registrierung, Deaktivieren des zweiten Faktors einer Person) werden bewusst nicht offengelegt. Die vollständige Liste und die Begründung finden Sie unter EXCLUDED_ENDPOINTS.

Prompts

In Clients, die MCP-Prompts unterstützen, sind sie als Slash-Befehle registriert:

Prompt

Was er tut

triage_inbox

Geht ungesichtete Dokumente durch, schlägt Metadaten vor, die vorhandene Einträge bevorzugen, und wendet nichts an, bis der Benutzer zustimmt.

find_document

Lokalisiert ein Dokument anhand einer vagen Beschreibung und sucht zuerst kostengünstig, bevor es breit sucht.

audit_sharing

Überprüft alle öffentlichen Freigabe-Links und markiert diejenigen, die nie ablaufen.

Tests

Drei Ebenen, weil sie unterschiedliche Dinge abdecken:

npm test                                        # logic — no network
PAPERLESS_URL=… PAPERLESS_TOKEN=… \
  node scripts/smoke-test.mjs                   # all 55 read-only tools, live
PAPERLESS_URL=… PAPERLESS_TOKEN=… \
  node scripts/write-test.mjs                   # writes, live — see the warning

npm test prüft die eigene Logik dieses Servers: Endpunktabdeckung, Enum-Werte gegen das Schema, dass kein Listen-Tool rohe API-Objekte durchlässt, dass der Nur-Lese-Modus Schreibzugriffe wirklich entfernt.

smoke-test.mjs prüft die Annahmen, die es über Paperless trifft. Es ruft jedes Nur-Lese-Tool gegen eine echte Instanz auf, löst IDs aus Listenaufrufen auf, statt sie fest zu kodieren, und gibt Antwortgrößen aus, damit teure Tools sichtbar bleiben. Es schreibt nichts.

write-test.mjs deckt den Rest ab: Upload und Verarbeitung, Aktualisieren jedes Feldtyps, Notizen, Bulk-Tag-Bearbeitungen, Freigabe-Links, Rotation und einen Papierkorb-Durchlauf.

Es berührt nur Objekte, die es selbst erstellt. Alles, was es erzeugt, trägt ein zz-mcp-test-Präfix und wird am Ende wieder gelöscht, und es verändert nie ein Dokument, das es nicht hochgeladen hat. Wenn ein Lauf unterbrochen wird, können Rückstände mit diesem Präfix bedenkenlos gelöscht werden. Bevorzugen Sie eine Testinstanz, falls Sie eine haben.

Mit Paperless Schritt halten

PAPERLESS_URL=… PAPERLESS_TOKEN=… node scripts/sync-schema.mjs
npm test

sync-schema.mjs regeneriert schema/endpoints.json aus dem OpenAPI-Dokument Ihrer eigenen Instanz. Die Testsuite meldet dann jeden Endpunkt, der weder verfügbar gemacht noch explizit ausgeschlossen ist. Das ist der gesamte Wartungszyklus: Richten Sie es auf ein neueres Paperless aus, und der Test sagt Ihnen, was sich geändert hat.

Entwicklung

npm install
npm start          # run from source
npm run build      # compile to build/
npm test           # unit tests + coverage checks
npm run inspect    # build, then open the MCP inspector

Vorarbeiten

Mehrere MCP-Server für Paperless existieren bereits, insbesondere cubite-code/paperless-ngx-mcp, sowie nloui/paperless-mcp und barryw/PaperlessMCP. Diese zielen auf die 2.x-API ab. Wenn du Paperless-ngx 2.x verwendest, nutze einen davon; dieser hier setzt 3.x voraus.

Lizenz

MIT. Siehe LIZENZ.


A
license - permissive license
Not graded
quality - not tested
A
maintenance

Maintenance

Maintainers
Response time
0dRelease cycle
2Releases (12mo)
Commit activity

Related MCP Servers

  • A
    license
    C
    quality
    A
    maintenance
    An MCP (Model Context Protocol) server for interacting with a Paperless-NGX API server. This server provides tools for managing documents, tags, correspondents, and document types in your Paperless-NGX instance.
    23
    363
    137
    TypeScript
    ISC
  • F
    license
    A
    quality
    B
    maintenance
    A privacy-first MCP server for Paperless-ngx that lets an LLM agent search, organize, tag, and reference documents without exposing full text unless explicitly requested.
    13
  • A
    license
    Not graded
    quality
    A
    maintenance
    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.
    MIT

View all related MCP servers

Related MCP Connectors

  • A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…

  • MCP server for the PDFGate API. Generate PDFs, manage documents and handle e-signatures.

  • MCP server for secureFlows: token-free URL builders and integration-linting tools for AI agents.

View all MCP Connectors

Latest Blog Posts

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/tobee89/mcp-paperless-ngx'

If you have feedback or need assistance with the MCP directory API, please join our Discord server