The Paperless-NGX MCP Server enables interaction with a Paperless-NGX API server to manage documents and related entities:
Manage Documents: List, create, update, delete, search, and download documents. Perform bulk operations including setting metadata, merging, splitting, rotating, and deleting pages.
Manage Tags: List, create, update, delete, and bulk edit tags, including setting permissions.
Manage Correspondents: List, create, and bulk edit correspondents, including permission settings.
Manage Document Types: List, create, and bulk edit document types with permission controls.
Advanced Features: Upload documents with custom fields and archive serial numbers.
Provides tools for managing documents, tags, correspondents, and document types in a Paperless-NGX instance, including document operations (listing, searching, downloading, uploading), tag operations, correspondent operations, and document type operations
Paperless-NGX MCP Server
An MCP (Model Context Protocol) server for interacting with a Paperless-NGX API server. This server provides tools for managing documents, tags, correspondents, and document types in your Paperless-NGX instance.
Quick Start
Installing via Smithery
To install Paperless NGX MCP Server for Claude Desktop automatically via Smithery:
Manual Installation
Install the MCP server:
Add it to your Claude's MCP configuration:
For VSCode extension, edit ~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json
:
For Claude desktop app, edit ~/Library/Application Support/Claude/claude_desktop_config.json
:
Get your API token:
Log into your Paperless-NGX instance
Click your username in the top right
Select "My Profile"
Click the circular arrow button to generate a new token
Replace the placeholders in your MCP config:
http://your-paperless-instance:8000
with your Paperless-NGX URLyour-api-token
with the token you just generated
That's it! Now you can ask Claude to help you manage your Paperless-NGX documents.
Example Usage
Here are some things you can ask Claude to do:
"Show me all documents tagged as 'Invoice'"
"Search for documents containing 'tax return'"
"Create a new tag called 'Receipts' with color #FF0000"
"Download document #123"
"List all correspondents"
"Create a new document type called 'Bank Statement'"
Available Tools
Document Operations
list_documents
Get a paginated list of all documents.
Parameters:
page (optional): Page number
page_size (optional): Number of documents per page
get_document
Get a specific document by ID.
Parameters:
id: Document ID
search_documents
Full-text search across documents.
Parameters:
query: Search query string
download_document
Download a document file by ID.
Parameters:
id: Document ID
original (optional): If true, downloads original file instead of archived version
bulk_edit_documents
Perform bulk operations on multiple documents.
Parameters:
documents: Array of document IDs
method: One of:
set_correspondent: Set correspondent for documents
set_document_type: Set document type for documents
set_storage_path: Set storage path for documents
add_tag: Add a tag to documents
remove_tag: Remove a tag from documents
modify_tags: Add and/or remove multiple tags
delete: Delete documents
reprocess: Reprocess documents
set_permissions: Set document permissions
merge: Merge multiple documents
split: Split a document into multiple documents
rotate: Rotate document pages
delete_pages: Delete specific pages from a document
Additional parameters based on method:
correspondent: ID for set_correspondent
document_type: ID for set_document_type
storage_path: ID for set_storage_path
tag: ID for add_tag/remove_tag
add_tags: Array of tag IDs for modify_tags
remove_tags: Array of tag IDs for modify_tags
permissions: Object for set_permissions with owner, permissions, merge flag
metadata_document_id: ID for merge to specify metadata source
delete_originals: Boolean for merge/split
pages: String for split "[1,2-3,4,5-7]" or delete_pages "[2,3,4]"
degrees: Number for rotate (90, 180, or 270)
Examples:
post_document
Upload a new document to Paperless-NGX.
Parameters:
file: Base64 encoded file content
filename: Name of the file
title (optional): Title for the document
created (optional): DateTime when the document was created (e.g. "2024-01-19" or "2024-01-19 06:15:00+02:00")
correspondent (optional): ID of a correspondent
document_type (optional): ID of a document type
storage_path (optional): ID of a storage path
tags (optional): Array of tag IDs
archive_serial_number (optional): Archive serial number
custom_fields (optional): Array of custom field IDs
Tag Operations
list_tags
Get all tags.
create_tag
Create a new tag.
Parameters:
name: Tag name
color (optional): Hex color code (e.g. "#ff0000")
match (optional): Text pattern to match
matching_algorithm (optional): One of "any", "all", "exact", "regular expression", "fuzzy"
Correspondent Operations
list_correspondents
Get all correspondents.
create_correspondent
Create a new correspondent.
Parameters:
name: Correspondent name
match (optional): Text pattern to match
matching_algorithm (optional): One of "any", "all", "exact", "regular expression", "fuzzy"
Document Type Operations
list_document_types
Get all document types.
create_document_type
Create a new document type.
Parameters:
name: Document type name
match (optional): Text pattern to match
matching_algorithm (optional): One of "any", "all", "exact", "regular expression", "fuzzy"
Error Handling
The server will show clear error messages if:
The Paperless-NGX URL or API token is incorrect
The Paperless-NGX server is unreachable
The requested operation fails
The provided parameters are invalid
Development
Want to contribute or modify the server? Here's what you need to know:
Clone the repository
Install dependencies:
Make your changes to server.js
Test locally:
The server is built with:
API Documentation
This MCP server implements endpoints from the Paperless-NGX REST API. For more details about the underlying API, see the official documentation.
remote-capable server
The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.
Enables interaction with Paperless-NGX API servers, supporting document management, tagging, and metadata operations through a natural language interface.
Related Resources
Related MCP Servers
- -securityFlicense-qualityEnables interaction with Notion through the Notion API by exposing it as tools for LLMs, allowing operations like reading, creating, updating, and deleting Notion pages seamlessly via natural language.Last updated -822
- AsecurityAlicenseAqualityEnables AI assistants like Claude to interact with Paper's trading platform API using natural language, allowing users to manage accounts, portfolios, trades, and access market data through conversational requests.Last updated -232215MIT License
- -securityAlicense-qualityEnables interaction with BookStack knowledge management systems through the BookStack API. Supports searching, reading, creating, and updating documentation content with secure authentication and dual transport modes for flexible deployment.Last updated -MIT License
- -securityFlicense-qualityEnables interaction with Notion workspaces through the Notion API. Supports creating, retrieving, and updating Notion pages and their properties, allowing users to manage Notion content through natural language.Last updated -4