paperless-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PAPERLESS_URL | Yes | The URL of your paperless-ngx instance, e.g. https://paperless.example.com | |
| PAPERLESS_TOKEN | Yes | Your paperless-ngx API token, generated in your profile |
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
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": true
} |
| resources | {
"subscribe": false,
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| search_documentsA | Search and filter documents in the archive. All parameters combine as AND conditions, except that
To find unfiled documents, use is_in_inbox=true, or has_tags, has_correspondent, has_document_type, or has_storage_path set to false.
Each result carries a |
| get_documentA | Get a single document's full metadata, with its notes and custom fields. The preferred way to read a document's text is its MCP resource at paperless://documents/{document_id}. |
| list_tagsA | List tags. Use the returned IDs with search_documents(tag_ids=[...]). |
| list_correspondentsA | List correspondents: the people and organizations that documents are from or to. Use the returned IDs with search_documents(correspondent_id=...). |
| list_document_typesA | List document types, like invoice or receipt. Use the returned IDs with search_documents(document_type_id=...). |
| list_storage_pathsA | List storage paths: the filing locations of documents. Use the returned IDs with search_documents(storage_path_id=...). |
| list_custom_fieldsA | List the custom fields defined in the archive. get_document returns a document's custom field values by field ID. A select field's value is the id of one of the field's select_options. Search custom field values with search_documents, using a query like "custom_fields.value:overdue". |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 7 tools
Each tool targets a distinct operation: one broad search, one document fetch, and five entity-specific listers. The list_* tools could superficially look alike, but each names a clearly different Paperless resource and explicitly cross-references the corresponding search parameter, leaving no realistic misselection risk.
All tools follow a clean verb_noun snake_case pattern (search_documents, get_document, list_tags, list_correspondents, list_document_types, list_storage_paths, list_custom_fields). No mixed casing or stray verbs.
Seven tools is well-scoped: one flexible search, one detail fetcher, and the minimum set of lookup tools needed to resolve IDs for filtering. Nothing appears redundant or padding the surface.
The surface is entirely read-only: search, get, and list exist but there is no upload_document, update_document, delete_document, or create/update for tags, correspondents, document types, storage paths, or custom fields. Core retrieval workflows are covered, but lifecycle operations for a document management archive are notably absent.