Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
MCP_HTTP_HOSTNoInterface to bind. Set a bearer token before widening this.127.0.0.1
MCP_HTTP_PATHNoPath the MCP endpoint is mounted at./mcp
MCP_HTTP_PORTNoPort to listen on.8765
MCP_TRANSPORTNo`stdio` or `http`.stdio
PAPERLESS_URLYesBase URL of the install. A trailing /api is stripped, so either form works.
MCP_AUTH_TOKENNoWhen set, requests must send Authorization: Bearer <token>. /healthz stays open.
PAPERLESS_TOKENNoAPI token. Takes precedence over username/password.
MCP_ALLOWED_HOSTSNoComma-separated Host allowlist (DNS-rebinding protection). * disables the check.localhost
PAPERLESS_PASSWORDNoBasic-auth alternative to a token.
PAPERLESS_USERNAMENoBasic-auth alternative to a token.
MCP_ALLOWED_ORIGINSNoComma-separated Origin allowlist. * disables the check.localhost
PAPERLESS_READ_ONLYNoWhen set, every tool that would modify the archive refuses to run — no request is even sent.false
PAPERLESS_TIMEOUT_MSNoPer-request timeout.30000
PAPERLESS_API_VERSIONNoPin the API version (Accept: …; version=N). Leave unset unless you have a reason.
PAPERLESS_UPLOAD_DIRSNoComma-separated list of directories paperless_upload_document may read from.$PAPERLESS_DOWNLOAD_DIR
PAPERLESS_DOWNLOAD_DIRNoThe only directory paperless_download_document may write into. Created 0700.$TMPDIR/paperless-mcp
NODE_TLS_REJECT_UNAUTHORIZEDNoSet to 0 to disable certificate checking for the whole process (e.g., for self-signed certificates).1

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}
resources
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
paperless_search_documentsA

Find documents in paperless-ngx. Combine full-text search with structured filters. query uses the full-text index and supports the advanced syntax: invoice AND (acme OR globex), type:invoice tag:unpaid, correspondent:university, created:[2005 to 2009], added:yesterday, produ*name, custom_fields.name:"Contract Number", custom_fields.value:policy, notes.note:reminder. Date keywords: today, yesterday, "previous week", "this month", "previous month", "this year", "previous year", "previous quarter". Matching is word-order-independent and accent-insensitive. Use title_contains/content_contains instead for plain substring matching, or more_like_id to find documents similar to a known one. Tag/correspondent/type filters take ids — get them from paperless_list_objects. Returns names resolved, not raw ids.

paperless_get_documentA

Fetch one document by id: metadata with names resolved, plus its extracted text, notes and custom field values. Use this after paperless_search_documents to read a document’s contents.

paperless_download_documentA

Save a document’s file to local disk and return the path. Use kind: "original" for the file as uploaded, "archive" for the OCR’d PDF paperless generated, "thumbnail" for a small preview image. Read the extracted text with paperless_get_document instead when you only need the words. Writes are confined to PAPERLESS_DOWNLOAD_DIR.

paperless_upload_documentA

Upload a local file into paperless-ngx for consumption (OCR, tagging, filing). The file must live in one of the directories this server is allowed to read (PAPERLESS_UPLOAD_DIRS). Returns the consumption task id; consumption is asynchronous, so set wait_seconds to poll until it finishes and get back the created document id. Any field left unset is filled in by paperless’ own matching rules.

paperless_update_documentA

Change one document’s metadata. Only the fields you pass are touched. tag_ids replaces the whole tag set, while add_tag_ids/remove_tag_ids adjust it relative to what is already there. Pass clear_correspondent/clear_document_type/clear_storage_path to unset a field.

paperless_bulk_edit_documentsA

Apply one operation to many documents at once. Supply only the parameters the chosen method needs. Runs asynchronously on the server. delete moves documents to the trash and requires confirm: true.

paperless_get_document_suggestionsA

Ask paperless what it would file a document as, based on its trained matching. Returns suggested correspondents, tags, document types, storage paths and dates. Useful before paperless_update_document.

paperless_document_notesA

List, add or delete the free-text notes attached to a document.

paperless_list_objectsA

List the objects documents are filed under, with their ids and document counts. Call this first when you need an id for a tag, correspondent, document type, storage path or custom field — the document tools take ids, not names. Also reaches saved views, users, groups, mail accounts, mail rules, workflows and share links.

paperless_create_objectA

Create a tag, correspondent, document type, storage path or custom field. Matching algorithm: 0 none, 1 any word, 2 all words, 3 exact, 4 regex, 5 fuzzy, 6 auto (trained classifier). Storage paths need a path template such as {{ created_year }}/{{ correspondent }}/{{ title }}. Custom fields need a data_type (string, url, date, boolean, integer, float, monetary, documentlink, select).

paperless_update_objectA

Rename or reconfigure an existing tag, correspondent, document type, storage path or custom field. Only the fields you pass are changed.

paperless_delete_objectsA

Permanently delete tags, correspondents, document types or storage paths. Documents themselves are not deleted, but they lose the association. Requires confirm: true.

paperless_get_statisticsA

Totals for the whole library: document count, documents in the inbox, characters indexed, counts of tags/correspondents/document types, and a breakdown by file type. A good first call to see how big the library is before searching it.

paperless_get_system_statusA

Health of the paperless-ngx install: version, database and index status, Redis/Celery connectivity, plus the API version this server is talking to. Use this to check connectivity and diagnose failures.

paperless_list_tasksA

Inspect paperless’ background tasks — document consumption, index rebuilds, and so on. Use this to follow up on an upload: pass the task_id returned by paperless_upload_document to see whether consumption succeeded and which document it produced.

paperless_api_requestA

Escape hatch for any paperless-ngx REST endpoint the other tools do not cover — workflows, share links, mail rules, trash, document merge/rotate/edit_pdf, permissions, and so on. path is relative to /api/, e.g. documents/12/history, trash, share_links. Trailing slashes are added automatically. Browse the full schema for your server at <paperless-url>/api/schema/view/. Prefer the purpose-built tools when one fits; they return smaller, name-resolved output.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription
taxonomyEvery tag, correspondent, document type, storage path and custom field with its id.
statisticsDocument counts, inbox size and file-type breakdown for the library.

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

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