← Back to search

@baruchiro/paperless-mcp

GitHub Actions Scanned 14d ago

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.

? Not scanned yet

Versions

2.0.1latest
Jul 23, 2026
2.0.0
Jul 12, 2026
1.0.0
May 27, 2026
0.5.1
May 24, 2026
0.5.0
May 18, 2026
+ show 16 moreshow less
0.4.5
May 4, 2026
0.4.4
Apr 20, 2026
0.4.3
Apr 20, 2026
0.4.2
Apr 15, 2026
0.4.1
Feb 24, 2026
0.4.0
Feb 13, 2026
0.3.0
Jan 20, 2026
0.2.2
Nov 25, 2025
0.2.1
Nov 11, 2025
0.2.0
Aug 13, 2025
0.1.0
Aug 10, 2025
0.0.3
Jul 30, 2025
0.0.2
May 20, 2025
0.0.1
May 20, 2025
0.0.0
May 18, 2025
0.0.0-test1
May 18, 2025

Tools 44

list_mail_accounts
annotations: none low

List Paperless mail accounts for selecting the account ID needed by mail rules. Does not expose account passwords.

page number page_size number
get_mail_account
annotations: none low

Get one Paperless mail account by ID. Password/token fields are redacted if the server returns them.

id number
process_mail_account
annotations: none low

Manually run Paperless mail processing for one account. This can consume matching mails according to enabled Paperless mail rules.

id number
list_mail_rules
annotations: none low

List Paperless mail rules with optional pagination.

page number page_size number
get_mail_rule
annotations: none low

Get one Paperless mail rule by ID.

id number
create_mail_rule
annotations: none low

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.

name string folder string account number
update_mail_rule
annotations: none low

Patch an existing Paperless mail rule. Only supplied fields are changed.

id number
delete_mail_rule
annotations: none low

Delete one Paperless mail rule. This changes future mail ingestion behavior but does not delete documents.

id number
list_document_notes
annotations: none low

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. \

id number
create_document_note
annotations: none low

Add a note to a document. Use this to record an audit trail or progress note directly on the document. Returns the document

id number note string
delete_document_note
annotations: none low

⚠️ DESTRUCTIVE: Permanently delete a single note from a document by its note ID. This operation is irreversible. Returns the document

id number note_id number
list_tags
annotations: none low

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.

page number ordering string page_size number name__iexact string name__icontains string name__iendswith string name__istartswith string
create_tag
annotations: none low

Create a new tag with optional color, matching pattern, and matching algorithm for automatic document tagging.

name string match string
update_tag
annotations: none low

Update an existing tag

id number name string match string
delete_tag
annotations: none low

⚠️ DESTRUCTIVE: Permanently delete a tag from the entire system. This will remove the tag from ALL documents that use it. Use with extreme caution.

id number
bulk_edit_tags
annotations: none low

Bulk edit tags. ⚠️ WARNING:

merge boolean owner number
list_correspondents
annotations: none low

List all correspondents with optional filtering and pagination. Correspondents represent entities that send or receive documents.

page number ordering string page_size number name__iexact string name__icontains string name__iendswith string name__istartswith string
get_correspondent
annotations: none low

Get a specific correspondent by ID with full details including matching rules.

id number
create_correspondent
annotations: none low

Create a new correspondent with optional matching pattern and algorithm for automatic document assignment.

name string match string
update_correspondent
annotations: none low

Update an existing correspondent

id number name string match string
delete_correspondent
annotations: none low

⚠️ DESTRUCTIVE: Permanently delete a correspondent from the entire system. This will affect ALL documents that use this correspondent.

id number
bulk_edit_correspondents
annotations: none low

Bulk edit correspondents. ⚠️ WARNING:

merge boolean owner number
list_document_types
annotations: none low

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.

page number ordering string page_size number name__iexact string name__icontains string name__iendswith string name__istartswith string
get_document_type
annotations: none low

Get a specific document type by ID with full details including matching rules.

id number
create_document_type
annotations: none low

Create a new document type with optional matching pattern and algorithm for automatic document classification.

name string match string
update_document_type
annotations: none low

Update an existing document type

id number name string match string
delete_document_type
annotations: none low

⚠️ DESTRUCTIVE: Permanently delete a document type from the entire system. This will affect ALL documents that use this type.

id number
bulk_edit_document_types
annotations: none low

Bulk edit document types. ⚠️ WARNING:

merge boolean owner number
list_custom_fields
annotations: none low

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.

page number ordering string page_size number name__iexact string name__icontains string name__iendswith string name__istartswith string
get_custom_field
annotations: none low

Get a specific custom field by ID with full details including data type and extra configuration.

id number
create_custom_field
annotations: none low

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$).

name string
update_custom_field
annotations: none low

Update an existing custom field

id number name string
delete_custom_field
annotations: none low

⚠️ DESTRUCTIVE: Permanently delete a custom field from the entire system. This will remove the field from ALL documents that use it.

id number confirm boolean
bulk_edit_custom_fields
annotations: none low

Bulk edit custom fields. ⚠️ WARNING:

confirm boolean
bulk_edit_documents
annotations: none low

Perform bulk operations on multiple documents. Note:

tag number field number merge boolean owner number pages string degrees number storage_path number correspondent number document_type number delete_originals boolean metadata_document_id number
post_document
annotations: none low

Upload a new document to Paperless-NGX with optional metadata like title, correspondent, document type, tags, and custom fields. Provide either

list_documents
annotations: none low

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

id number
query_documents
annotations: none low

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 [

id number
get_document
annotations: none low

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

id number
get_document_content
annotations: none low

Get the text content of a specific document by ID. Use this when you need to read or analyze the actual document text.

id number
search_documents
annotations: none low

Deprecated compatibility wrapper for full-text document search. Use

id number original boolean
download_document
annotations: none low

Download a document file by ID. Returns a paperless:// resource URI; read the resource to fetch the file content.

id number original boolean
get_document_thumbnail
annotations: none low

Get a document thumbnail (image preview) by ID. Returns a paperless:// resource URI; read the resource to fetch the image content.

id number
update_document
annotations: none low

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

id number field number

Permissions 3

network medium
Server uses network capabilities via: fetch()
shell high
Server uses shell capabilities via: child_process, spawn()
env_vars low
Server uses env_vars capabilities via: process.env

Scan Findings 143

low
Tool 'list_mail_accounts' has no annotations annotation_checker · 100%
low
Tool 'get_mail_account' has no annotations annotation_checker · 100%
low
Tool 'process_mail_account' has no annotations annotation_checker · 100%
low
Tool 'list_mail_rules' has no annotations annotation_checker · 100%
low
Tool 'get_mail_rule' has no annotations annotation_checker · 100%
low
Tool 'create_mail_rule' has no annotations annotation_checker · 100%
low
Tool 'update_mail_rule' has no annotations annotation_checker · 100%
low
Tool 'delete_mail_rule' has no annotations annotation_checker · 100%
low
Tool 'list_document_notes' has no annotations annotation_checker · 100%
low
Tool 'create_document_note' has no annotations annotation_checker · 100%
low
Tool 'delete_document_note' has no annotations annotation_checker · 100%
low
Tool 'list_tags' has no annotations annotation_checker · 100%
low
Tool 'create_tag' has no annotations annotation_checker · 100%
low
Tool 'update_tag' has no annotations annotation_checker · 100%
low
Tool 'delete_tag' has no annotations annotation_checker · 100%
low
Tool 'bulk_edit_tags' has no annotations annotation_checker · 100%
low
Tool 'list_correspondents' has no annotations annotation_checker · 100%
low
Tool 'get_correspondent' has no annotations annotation_checker · 100%
low
Tool 'create_correspondent' has no annotations annotation_checker · 100%
low
Tool 'update_correspondent' has no annotations annotation_checker · 100%
low
Tool 'delete_correspondent' has no annotations annotation_checker · 100%
low
Tool 'bulk_edit_correspondents' has no annotations annotation_checker · 100%
low
Tool 'list_document_types' has no annotations annotation_checker · 100%
low
Tool 'get_document_type' has no annotations annotation_checker · 100%
low
Tool 'create_document_type' has no annotations annotation_checker · 100%
low
Tool 'update_document_type' has no annotations annotation_checker · 100%
low
Tool 'delete_document_type' has no annotations annotation_checker · 100%
low
Tool 'bulk_edit_document_types' has no annotations annotation_checker · 100%
low
Tool 'list_custom_fields' has no annotations annotation_checker · 100%
low
Tool 'get_custom_field' has no annotations annotation_checker · 100%
low
Tool 'create_custom_field' has no annotations annotation_checker · 100%
low
Tool 'update_custom_field' has no annotations annotation_checker · 100%
low
Tool 'delete_custom_field' has no annotations annotation_checker · 100%
low
Tool 'bulk_edit_custom_fields' has no annotations annotation_checker · 100%
low
Tool 'bulk_edit_documents' has no annotations annotation_checker · 100%
low
Tool 'post_document' has no annotations annotation_checker · 100%
low
Tool 'list_documents' has no annotations annotation_checker · 100%
low
Tool 'query_documents' has no annotations annotation_checker · 100%
low
Tool 'get_document' has no annotations annotation_checker · 100%
low
Tool 'get_document_content' has no annotations annotation_checker · 100%
low
Tool 'search_documents' has no annotations annotation_checker · 100%
low
Tool 'download_document' has no annotations annotation_checker · 100%
low
Tool 'get_document_thumbnail' has no annotations annotation_checker · 100%
low
Tool 'update_document' has no annotations annotation_checker · 100%
medium
OAuth implementation without PKCE auth_checker · 75%
info
Sandbox failed to start for behavioral verification behavioral_verifier · 100%
medium
Vulnerable dependency: @modelcontextprotocol/sdk@1.11.1 (GHSA-345p-7cg4-v4c7) dependency_analyzer · 95%
medium
Vulnerable dependency: @modelcontextprotocol/sdk@1.11.1 (GHSA-8r9q-7v3j-jr4g) dependency_analyzer · 95%
medium
Vulnerable dependency: @modelcontextprotocol/sdk@1.11.1 (GHSA-w48q-cv73-mx4w) dependency_analyzer · 95%
medium
Vulnerable dependency: axios@1.9.0 (GHSA-35jp-ww65-95wh) dependency_analyzer · 95%
medium
Vulnerable dependency: axios@1.9.0 (GHSA-3g43-6gmg-66jw) dependency_analyzer · 95%
medium
Vulnerable dependency: axios@1.9.0 (GHSA-3p68-rc4w-qgx5) dependency_analyzer · 95%
medium
Vulnerable dependency: axios@1.9.0 (GHSA-3w6x-2g7m-8v23) dependency_analyzer · 95%
medium
Vulnerable dependency: axios@1.9.0 (GHSA-42h9-826w-cgv3) dependency_analyzer · 95%
medium
Vulnerable dependency: axios@1.9.0 (GHSA-43fc-jf86-j433) dependency_analyzer · 95%
medium
Vulnerable dependency: axios@1.9.0 (GHSA-445q-vr5w-6q77) dependency_analyzer · 95%
medium
Vulnerable dependency: axios@1.9.0 (GHSA-4hjh-wcwx-xvwj) dependency_analyzer · 95%
medium
Vulnerable dependency: axios@1.9.0 (GHSA-5c9x-8gcm-mpgx) dependency_analyzer · 95%
medium
Vulnerable dependency: axios@1.9.0 (GHSA-62hf-57xw-28j9) dependency_analyzer · 95%
medium
Vulnerable dependency: axios@1.9.0 (GHSA-6chq-wfr3-2hj9) dependency_analyzer · 95%
medium
Vulnerable dependency: axios@1.9.0 (GHSA-777c-7fjr-54vf) dependency_analyzer · 95%
medium
Vulnerable dependency: axios@1.9.0 (GHSA-7q8q-rj6j-mhjq) dependency_analyzer · 95%
medium
Vulnerable dependency: axios@1.9.0 (GHSA-898c-q2cr-xwhg) dependency_analyzer · 95%
medium
Vulnerable dependency: axios@1.9.0 (GHSA-fvcv-3m26-pcqx) dependency_analyzer · 95%
medium
Vulnerable dependency: axios@1.9.0 (GHSA-hfxv-24rg-xrqf) dependency_analyzer · 95%
medium
Vulnerable dependency: axios@1.9.0 (GHSA-j5f8-grm9-p9fc) dependency_analyzer · 95%
medium
Vulnerable dependency: axios@1.9.0 (GHSA-jqh4-m9w3-8hp9) dependency_analyzer · 95%
medium
Vulnerable dependency: axios@1.9.0 (GHSA-m7pr-hjqh-92cm) dependency_analyzer · 95%
medium
Vulnerable dependency: axios@1.9.0 (GHSA-mmx7-hfxf-jppx) dependency_analyzer · 95%
medium
Vulnerable dependency: axios@1.9.0 (GHSA-p92q-9vqr-4j8v) dependency_analyzer · 95%
medium
Vulnerable dependency: axios@1.9.0 (GHSA-pf86-5x62-jrwf) dependency_analyzer · 95%
medium
Vulnerable dependency: axios@1.9.0 (GHSA-pmv8-rq9r-6j72) dependency_analyzer · 95%
medium
Vulnerable dependency: axios@1.9.0 (GHSA-pmwg-cvhr-8vh7) dependency_analyzer · 95%
medium
Vulnerable dependency: axios@1.9.0 (GHSA-q8qp-cvcw-x6jj) dependency_analyzer · 95%
medium
Vulnerable dependency: axios@1.9.0 (GHSA-vf2m-468p-8v99) dependency_analyzer · 95%
medium
Vulnerable dependency: axios@1.9.0 (GHSA-w9j2-pvgh-6h63) dependency_analyzer · 95%
medium
Vulnerable dependency: axios@1.9.0 (GHSA-xhjh-pmcv-23jw) dependency_analyzer · 95%
medium
Vulnerable dependency: axios@1.9.0 (GHSA-xx6v-rp6x-q39c) dependency_analyzer · 95%
medium
Vulnerable dependency: form-data@4.0.2 (GHSA-fjxv-7rqg-78g4) dependency_analyzer · 95%
medium
Vulnerable dependency: form-data@4.0.2 (GHSA-hmw2-7cc7-3qxx) dependency_analyzer · 95%
medium
Buffer.from base64 in baruchiro-paperless-mcp-53c4b0b/src/tools/documents.ts:362 entropy_analyzer · 75%
info
package.json metadata manifest_parser · 100%
info
Tool: list_mail_accounts manifest_parser · 70%
info
Tool: get_mail_account manifest_parser · 70%
info
Tool: process_mail_account manifest_parser · 70%
info
Tool: list_mail_rules manifest_parser · 70%
info
Tool: get_mail_rule manifest_parser · 70%
info
Tool: create_mail_rule manifest_parser · 70%
info
Tool: update_mail_rule manifest_parser · 70%
info
Tool: delete_mail_rule manifest_parser · 70%
info
Tool: list_document_notes manifest_parser · 70%
info
Tool: create_document_note manifest_parser · 70%
info
Tool: delete_document_note manifest_parser · 70%
info
Tool: list_tags manifest_parser · 70%
info
Tool: create_tag manifest_parser · 70%
info
Tool: update_tag manifest_parser · 70%
info
Tool: delete_tag manifest_parser · 70%
info
Tool: bulk_edit_tags manifest_parser · 70%
info
Tool: list_correspondents manifest_parser · 70%
info
Tool: get_correspondent manifest_parser · 70%
info
Tool: create_correspondent manifest_parser · 70%
info
Tool: update_correspondent manifest_parser · 70%
info
Tool: delete_correspondent manifest_parser · 70%
info
Tool: bulk_edit_correspondents manifest_parser · 70%
info
Tool: list_document_types manifest_parser · 70%
info
Tool: get_document_type manifest_parser · 70%
info
Tool: create_document_type manifest_parser · 70%
info
Tool: update_document_type manifest_parser · 70%
info
Tool: delete_document_type manifest_parser · 70%
info
Tool: bulk_edit_document_types manifest_parser · 70%
info
Tool: list_custom_fields manifest_parser · 70%
info
Tool: get_custom_field manifest_parser · 70%
info
Tool: create_custom_field manifest_parser · 70%
info
Tool: update_custom_field manifest_parser · 70%
info
Tool: delete_custom_field manifest_parser · 70%
info
Tool: bulk_edit_custom_fields manifest_parser · 70%
info
Tool: bulk_edit_documents manifest_parser · 70%
info
Tool: post_document manifest_parser · 70%
info
Tool: list_documents manifest_parser · 70%
info
Tool: query_documents manifest_parser · 70%
info
Tool: get_document manifest_parser · 70%
info
Tool: get_document_content manifest_parser · 70%
info
Tool: search_documents manifest_parser · 70%
info
Tool: download_document manifest_parser · 70%
info
Tool: get_document_thumbnail manifest_parser · 70%
info
Tool: update_document manifest_parser · 70%
info
Transport: stdio manifest_parser · 90%
info
Required env vars (8) manifest_parser · 80%
info
Sandbox failed to start for output poisoning scan output_poisoning · 100%
medium
Permission: network access detected permission_analyzer · 70%
high
Permission: shell access detected permission_analyzer · 95%
low
Permission: env_vars access detected permission_analyzer · 90%
critical
Invisible Unicode characters in 'delete_document_note' poisoning · 92%
critical
Invisible Unicode characters in 'delete_tag' poisoning · 92%
critical
Invisible Unicode characters in 'bulk_edit_tags' poisoning · 92%
critical
Invisible Unicode characters in 'delete_correspondent' poisoning · 92%
critical
Invisible Unicode characters in 'bulk_edit_correspondents' poisoning · 92%
critical
Invisible Unicode characters in 'delete_document_type' poisoning · 92%
critical
Invisible Unicode characters in 'bulk_edit_document_types' poisoning · 92%
critical
Invisible Unicode characters in 'delete_custom_field' poisoning · 92%
critical
Invisible Unicode characters in 'bulk_edit_custom_fields' poisoning · 92%
info
SBOM generated: 257 components sbom_generator · 100%
medium
No build provenance detected (SLSA L0) slsa_assessor · 90%