@baruchiro/paperless-mcp
Model Context Protocol (MCP) server for interacting with Paperless-NGX document management system. Enables AI assistants to manage documents, tags, correspondents, and document types through the Paperless-NGX API.
Versions
2.0.1latest2.0.01.0.00.5.10.5.0+ show 16 moreshow less
0.4.50.4.40.4.30.4.20.4.10.4.00.3.00.2.20.2.10.2.00.1.00.0.30.0.20.0.10.0.00.0.0-test1Tools 44
list_mail_accounts List Paperless mail accounts for selecting the account ID needed by mail rules. Does not expose account passwords.
get_mail_account Get one Paperless mail account by ID. Password/token fields are redacted if the server returns them.
process_mail_account Manually run Paperless mail processing for one account. This can consume matching mails according to enabled Paperless mail rules.
list_mail_rules List Paperless mail rules with optional pagination.
get_mail_rule Get one Paperless mail rule by ID.
create_mail_rule Create a Paperless mail rule. Use list_mail_accounts first to choose account. Prefer attachment-only rules for invoices unless the full mail must be archived.
update_mail_rule Patch an existing Paperless mail rule. Only supplied fields are changed.
delete_mail_rule Delete one Paperless mail rule. This changes future mail ingestion behavior but does not delete documents.
list_document_notes List all notes attached to a document. Notes are free-text comments on a document and are the natural place for an audit trail (e.g. \
create_document_note Add a note to a document. Use this to record an audit trail or progress note directly on the document. Returns the document
delete_document_note ⚠️ DESTRUCTIVE: Permanently delete a single note from a document by its note ID. This operation is irreversible. Returns the document
list_tags List all tags. IMPORTANT: When a user query may refer to a tag or document type, you should fetch all tags and all document types up front (with a large enough page_size), cache them for the session, and search locally for matches by name or slug before making further API calls. This reduces redundant requests and handles ambiguity between tags and document types efficiently.
create_tag Create a new tag with optional color, matching pattern, and matching algorithm for automatic document tagging.
update_tag Update an existing tag
delete_tag ⚠️ DESTRUCTIVE: Permanently delete a tag from the entire system. This will remove the tag from ALL documents that use it. Use with extreme caution.
bulk_edit_tags Bulk edit tags. ⚠️ WARNING:
list_correspondents List all correspondents with optional filtering and pagination. Correspondents represent entities that send or receive documents.
get_correspondent Get a specific correspondent by ID with full details including matching rules.
create_correspondent Create a new correspondent with optional matching pattern and algorithm for automatic document assignment.
update_correspondent Update an existing correspondent
delete_correspondent ⚠️ DESTRUCTIVE: Permanently delete a correspondent from the entire system. This will affect ALL documents that use this correspondent.
bulk_edit_correspondents Bulk edit correspondents. ⚠️ WARNING:
list_document_types List all document types. IMPORTANT: When a user query may refer to a document type or tag, you should fetch all document types and all tags up front (with a large enough page_size), cache them for the session, and search locally for matches by name or slug before making further API calls. This reduces redundant requests and handles ambiguity between tags and document types efficiently.
get_document_type Get a specific document type by ID with full details including matching rules.
create_document_type Create a new document type with optional matching pattern and algorithm for automatic document classification.
update_document_type Update an existing document type
delete_document_type ⚠️ DESTRUCTIVE: Permanently delete a document type from the entire system. This will affect ALL documents that use this type.
bulk_edit_document_types Bulk edit document types. ⚠️ WARNING:
list_custom_fields List all custom fields. IMPORTANT: When a user query may refer to a custom field, you should fetch all custom fields up front (with a large enough page_size), cache them for the session, and search locally for matches by name before making further API calls. This reduces redundant requests and handles ambiguity efficiently.
get_custom_field Get a specific custom field by ID with full details including data type and extra configuration.
create_custom_field Create a new custom field with a specified data type (string, url, date, boolean, integer, float, monetary, documentlink, or select). For monetary fields, values must use currency code prefix format (e.g., USD10.00, GBP123.45) — NOT trailing symbol format (e.g., 10.00$).
update_custom_field Update an existing custom field
delete_custom_field ⚠️ DESTRUCTIVE: Permanently delete a custom field from the entire system. This will remove the field from ALL documents that use it.
bulk_edit_custom_fields Bulk edit custom fields. ⚠️ WARNING:
bulk_edit_documents Perform bulk operations on multiple documents. Note:
post_document Upload a new document to Paperless-NGX with optional metadata like title, correspondent, document type, tags, and custom fields. Provide either
list_documents List and filter documents with pagination and common Paperless filters such as title search, correspondent, document type, tag, storage path, creation date, archive serial number, and simple custom field filters. Use
query_documents Query documents using the full-text query engine plus structured Paperless filters. Use this for complex filtering, custom field conditions, or any documented /api/documents/ query parameters that are not exposed as first-class arguments. Prefer the dedicated top-level arguments where available. custom_field_query supports [field_name_or_id, operator, value] leaves or [
get_document Get a specific document by ID with full details including correspondent, document type, tags, and custom fields. Note: Document content is excluded from results by default. Use
get_document_content Get the text content of a specific document by ID. Use this when you need to read or analyze the actual document text.
search_documents Deprecated compatibility wrapper for full-text document search. Use
download_document Download a document file by ID. Returns a paperless:// resource URI; read the resource to fetch the file content.
get_document_thumbnail Get a document thumbnail (image preview) by ID. Returns a paperless:// resource URI; read the resource to fetch the image content.
update_document Update a specific document with new values (title, correspondent, document type, storage path, tags, custom fields, and more). Top-level fields you omit are left unchanged. IMPORTANT: custom_fields is the exception — see its parameter description; it replaces the document
Permissions 3
network medium shell high env_vars low