eichner.cloud

← Projekte

mcp-paperless-ngx

Ein MCP-Server, über den KI-Assistenten wie Claude auf Paperless-ngx zugreifen. Dokumente suchen, ablegen, verschlagworten und auswerten, ohne die Weboberfläche zu öffnen. Ich habe ihn selbst gebaut und als Open Source veröffentlicht.

Warum ich ihn gebaut habe

Der wichtigste Grund war die Tokensparsamkeit. Ein Paperless-Dokument trägt seinen kompletten OCR-Text mit sich. Reicht ein Server den ungekürzt durch, füllt schon eine Suche das Gedächtnis des Modells, und jede weitere Frage wird teurer und ungenauer. Bei den beiden aktiven Servern, die ich mir angesehen habe, habe ich kein Kürzen der Antworten gefunden. Meiner holt bei Listen nur die nötigen Felder. Den Volltext gibt es über ein eigenes Tool, seitenweise.

Der zweite Grund: Der Server unterstützt Paperless-ngx ab Version 3 vollständig und ausschließlich. Er spricht nur die API-Version 10 und nichts Älteres. Dafür nutzt er alles, was Version 3 mitbringt, zum Beispiel verschachtelte Tags, Dokumentversionen, Freigabe-Bündel und die PDF-Werkzeuge. Von den 92 dokumentierten Endpunkten ist jeder entweder als Tool vorhanden oder mit schriftlicher Begründung ausgelassen. Ein Test prüft das bei jedem Lauf. Wer noch Paperless-ngx 2 betreibt, nimmt besser einen anderen Server.

Installation

Du brauchst Node 20 oder neuer, Paperless-ngx 3 und einen API-Token.

1. API-Token holen

Klick in der Weboberfläche von Paperless oben rechts auf deinen Benutzernamen, dann auf „Mein Profil“. Neben dem Feld für den API-Token steht ein runder Pfeil. Er erzeugt den Token.

2. Verbindung prüfen

Dieser Befehl testet, ob der Server deine Instanz erreicht, und beendet sich danach:

PAPERLESS_URL=https://paperless.example.com PAPERLESS_TOKEN=dein-token npx -y mcp-paperless-ngx --check

3. In Claude Code einrichten

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

4. In Claude Desktop, Cursor, Cline und anderen Programmen

Trag den Server in die MCP-Konfiguration des Programms ein:

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

Starte das Programm danach neu.

Einstellungen

Alle Einstellungen laufen über Umgebungsvariablen. Nur die ersten beiden sind Pflicht.

VariableStandardWofür
PAPERLESS_URLkeinerAdresse deiner Paperless-Instanz
PAPERLESS_TOKENkeinerAPI-Token
PAPERLESS_TOOLSETSsiehe untenWelche Tool-Gruppen aktiv sind, oder all
PAPERLESS_READ_ONLYfalseNur Tools, die nichts verändern
PAPERLESS_PUBLIC_URLwie PAPERLESS_URLAdresse für Links, falls Paperless von außen anders heißt
PAPERLESS_HEADERSkeineZusätzliche Kopfzeilen, nötig hinter Forward-Auth wie Authentik oder Authelia
PAPERLESS_DOWNLOAD_DIRTemp-OrdnerWohin heruntergeladene Dateien kommen
PAPERLESS_MAX_PAGE_SIZE100Obergrenze für Listen, egal was das Modell verlangt

Mit --list-tools zeigt der Server, welche Tools gerade aktiv sind.

Tool-Gruppen und Kontextkosten

Standardmäßig sind sieben Gruppen aktiv: documents, metadata, customfields, views, sharing, workflows und system. Die Gruppen mail und admin sind aus, weil die meisten Sitzungen sie nie brauchen. Jedes zusätzliche Tool kostet bei jeder Anfrage Kontext:

GruppenToolsKosten pro Anfrage
alle (all)99etwa 20.500 Token
Standard85etwa 18.500 Token
documents,metadata49etwa 12.900 Token

Wenn du nur suchen und ablegen willst, setz PAPERLESS_TOOLSETS=documents,metadata. Das spart mehr als jede Kürzung der Antworten.

Hinter einem Anmeldeschutz

Steht vor Paperless ein Forward-Auth-Proxy, braucht der Server zusätzliche Kopfzeilen. Du gibst sie als JSON an, zum Beispiel {"X-Auth":"geheimer-wert"}.

Benutzen

Nach dem Einrichten fragst du den Assistenten in normaler Sprache. Beispiele:

Dazu gibt es drei fertige Befehle. In Programmen mit MCP-Unterstützung erscheinen sie als Slash-Befehle:

Sicherheit

Der Server kann Dinge löschen, sonst wäre er kein brauchbarer Dokumentenverwalter. Er schützt dich an mehreren Stellen. Tools, die etwas löschen, sind als gefährlich markiert, damit dein Programm vorher nachfragen kann. Mit PAPERLESS_READ_ONLY=true verschwinden alle schreibenden Tools aus der Liste, das Modell sieht sie also gar nicht. Sammelaktionen nehmen nur ausdrückliche Listen von Dokument-Nummern, nie „alles, was auf diesen Filter passt“. Tools für Zugangsdaten, etwa neue Tokens oder die Einrichtung von TOTP, gibt es absichtlich nicht.

Ein Hinweis zu Freigaben: create_share_link erzeugt eine öffentlich erreichbare Adresse.

Die aktuelle Version

Aktuell ist Version 0.1.1 unter MIT-Lizenz. Den Quellcode gibt es auf GitHub, das Paket auf npm. Der Server steht außerdem in der offiziellen MCP-Registry. Das Projekt ist inoffiziell und nicht mit Paperless-ngx verbunden.