Paperless MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| FASTMCP_LOG_LEVEL | No | Log level for FastMCP internals and app loggers. | INFO |
| PAPERLESS_MCP_HOST | No | Bind host for HTTP/SSE transport. | 127.0.0.1 |
| PAPERLESS_MCP_PORT | No | Bind port for HTTP/SSE transport. | 8000 |
| PAPERLESS_MCP_OIDC_* | No | OIDC provider settings when OIDC auth is enabled. | |
| PAPERLESS_MCP_BASE_URL | No | Public base URL for artifact download links. | |
| PAPERLESS_MCP_API_TOKEN | Yes | Paperless service-account token. | |
| PAPERLESS_MCP_HTTP_PATH | No | URL path prefix for HTTP transport. | /mcp |
| PAPERLESS_MCP_LOG_LEVEL | No | Log level: DEBUG, INFO, WARNING, ERROR. | INFO |
| PAPERLESS_MCP_READ_ONLY | No | When true, disables every writable tool. | false |
| PAPERLESS_MCP_TRANSPORT | No | Server transport: stdio, http, or sse. | stdio |
| PAPERLESS_MCP_LOG_FORMAT | No | Log format: rich or json. | rich |
| PAPERLESS_MCP_BEARER_TOKEN | No | Static bearer token for simple token auth. | |
| PAPERLESS_MCP_HTTP_RETRIES | No | Retries on 5xx/network errors. | 2 |
| PAPERLESS_MCP_INSTRUCTIONS | No | Operator-supplied description appended to MCP instructions. | built-in |
| FASTMCP_ENABLE_RICH_LOGGING | No | Set to false for plain/structured JSON log output. | true |
| PAPERLESS_MCP_PAPERLESS_URL | Yes | Base URL of the Paperless-NGX REST API (no trailing slash). | |
| PAPERLESS_MCP_EVENT_STORE_URL | No | Event store backend for HTTP session persistence. | memory:// |
| PAPERLESS_MCP_DEFAULT_PAGE_SIZE | No | Default page_size for list tools. Clamped [1, 100]. | 25 |
| PAPERLESS_MCP_HTTP_TIMEOUT_SECONDS | No | Per-request HTTP timeout (seconds). | 30 |
| PAPERLESS_MCP_PAPERLESS_PUBLIC_URL | No | Public-facing Paperless UI URL used to construct user-visible links. Defaults to PAPERLESS_MCP_PAPERLESS_URL when unset. | same as PAPERLESS_MCP_PAPERLESS_URL |
| PAPERLESS_MCP_DOWNLOAD_LINK_TTL_SECONDS | No | TTL of URLs issued by create_download_link. Clamped [30, 3600]. | 300 |
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": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_documentsA | List documents with optional filters. Returns one page. By default, per-document OCR
|
| search_documentsA | Full-text search documents. By default per-hit OCR
|
| get_documentA | Fetch one document by ID. By default, the OCR |
| get_document_contentA | Return the OCR'd text content of a document. |
| get_document_thumbnailA | Return the document's thumbnail as inline image content. |
| get_document_metadataA | Return technical metadata for a document (checksums, filenames, etc.). |
| get_document_notesA | Return notes attached to a document. |
| get_document_historyA | Return the audit history for a document. |
| get_document_suggestionsA | Return Paperless's classifier suggestions for a document. |
| update_documentA | Patch selected fields on a document. The response strips OCR |
| delete_documentC | Delete a document. |
| upload_documentA | Upload a document. Returns the task UUID for polling via |
| bulk_edit_documentsC | Apply a bulk operation to a set of documents. |
| add_document_noteB | Append a note to a document. |
| delete_document_noteC | Remove a note from a document. |
| list_tagsC | List tags. |
| get_tagA | Fetch a tag by ID. |
| create_tagC | Create a new tag. |
| update_tagC | Patch selected fields on a tag. |
| delete_tagC | Delete a tag. |
| bulk_edit_tagsC | Apply a bulk operation to a set of tags. |
| list_correspondentsC | List correspondents. |
| get_correspondentA | Fetch a correspondent by ID. |
| create_correspondentC | Create a new correspondent. |
| update_correspondentC | Patch selected fields on a correspondent. |
| delete_correspondentC | Delete a correspondent. |
| bulk_edit_correspondentsC | Apply a bulk operation to a set of correspondents. |
| list_document_typesC | List document types. |
| get_document_typeA | Fetch a document type by ID. |
| create_document_typeC | Create a new document type. |
| update_document_typeB | Patch selected fields on a document type. |
| delete_document_typeC | Delete a document type. |
| bulk_edit_document_typesC | Apply a bulk operation to a set of document types. |
| list_custom_fieldsC | List custom fields. |
| get_custom_fieldB | Fetch a custom field by ID. |
| create_custom_fieldA | Create a new custom field.
Unknown shapes are rejected by Paperless with a 400. |
| update_custom_fieldA | Patch selected fields on a custom field definition.
See |
| delete_custom_fieldC | Delete a custom field. |
| list_storage_pathsC | List storage paths. |
| get_storage_pathB | Fetch a storage path by ID. |
| list_saved_viewsC | List saved views. |
| get_saved_viewA | Fetch a saved view by ID. |
| list_share_linksA | List share links (optionally filtered by document). |
| get_share_linkA | Fetch a share link by ID. |
| list_tasksA | List Paperless Celery tasks. Defaults to unacknowledged tasks only (set |
| get_taskA | Fetch a task by UUID. Returns |
| wait_for_taskA | Poll until the task reaches a terminal state or times out. |
| get_statisticsA | Fetch collection-level statistics. |
| get_remote_versionA | Fetch Paperless version info. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| config_resource | Return server configuration as JSON. |
| stats_resource | Return Paperless-NGX document statistics as JSON. |
| remote_version_resource | Return the remote Paperless-NGX version as JSON. |
| tags_resource | Return all tags as a JSON array. |
| correspondents_resource | Return all correspondents as a JSON array. |
| document_types_resource | Return all document types as a JSON array. |
| custom_fields_resource | Return all custom fields as a JSON array. |
| storage_paths_resource | Return all storage paths as a JSON array. |
| saved_views_resource | Return all saved views as a JSON array. |
| tasks_resource | Return Paperless-NGX tasks (first page, unacknowledged) as a JSON array. |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/pvliesdonk/paperless-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server