{"id":"nloui-paperless-mcp","name":"paperless-mcp","homepage":"https://www.npmjs.com/package/@nloui/paperless-mcp","repo_url":"https://github.com/nloui/paperless-mcp","category":"infrastructure","subcategories":[],"tags":["mcp","paperless-ngx","document-management","claude","typescript"],"what_it_does":"paperless-mcp is an MCP (Model Context Protocol) server that connects an AI assistant to a Paperless-NGX instance, exposing tools to list/search/download/upload and to manage documents, tags, correspondents, and document types.","use_cases":["Let an AI assistant list or search Paperless-NGX documents (including full-text search).","Download documents (original or archived versions) by ID.","Create/update Paperless entities such as tags, correspondents, and document types.","Bulk edit documents (set tags, correspondents, document types, storage paths, permissions, reprocess, merge/split, rotate/delete pages).","Upload new documents to Paperless-NGX with metadata (title, created date, tags, storage path, etc.)."],"not_for":["High-assurance or regulated workflows without additional hardening (e.g., strict audit logging, least-privilege token handling, and formal security review).","Use cases requiring fine-grained authorization policies beyond Paperless-NGX API token capabilities.","Complex UI workflows or human approval flows (this is a programmatic toolset)."],"best_when":"You want an MCP-compatible assistant (e.g., Claude) to manage a Paperless-NGX document library programmatically using a token-authenticated Paperless API.","avoid_when":"You cannot securely handle and protect a long-lived Paperless API token, or you need robust documented rate limiting/retry semantics for safe automation.","alternatives":["Use Paperless-NGX REST API directly from your own integration (custom script or service).","Build an MCP server wrapper with your own vetted tool schemas and operational safeguards.","Use other existing Paperless integrations (community tools) if they already provide safer permissioning and rate limit handling."],"af_score":68.5,"security_score":45.0,"reliability_score":28.8,"package_type":"mcp_server","discovery_source":["github"],"priority":"high","status":"evaluated","version_evaluated":null,"last_evaluated":"2026-03-30T13:42:11.916100+00:00","interface":{"has_rest_api":true,"has_graphql":false,"has_grpc":false,"has_mcp_server":true,"mcp_server_url":null,"has_sdk":false,"sdk_languages":[],"openapi_spec_url":null,"webhooks":false},"auth":{"methods":["Paperless-NGX API token (token passed as CLI arg in MCP config / server start)"],"oauth":false,"scopes":false,"notes":"Auth appears to be a single API token for Paperless-NGX; there is no mention of OAuth or fine-grained scopes at the MCP layer."},"pricing":{"model":null,"free_tier_exists":false,"free_tier_limits":null,"paid_tiers":[],"requires_credit_card":false,"estimated_workload_costs":null,"notes":"Pricing for the MCP package itself is not stated; Paperless-NGX hosting costs depend on your environment."},"requirements":{"requires_signup":false,"requires_credit_card":false,"domain_verification":false,"data_residency":[],"compliance":[],"min_contract":null},"agent_readiness":{"af_score":68.5,"security_score":45.0,"reliability_score":28.8,"mcp_server_quality":78.0,"documentation_accuracy":80.0,"error_message_quality":null,"error_message_notes":"No concrete examples of error payloads are provided; claims are qualitative.","auth_complexity":80.0,"rate_limit_clarity":10.0,"tls_enforcement":60.0,"auth_strength":55.0,"scope_granularity":20.0,"dependency_hygiene":55.0,"secret_handling":35.0,"security_notes":"Uses an API token for Paperless-NGX (no mention of fine-grained scopes, token rotation, or minimal-privilege). Token appears to be provided via command-line args in the MCP configuration, which can be exposed via process listing or logging depending on the runtime environment. README does not discuss TLS/HTTPS enforcement at the MCP layer (only that baseUrl should be a URL). No rate limit or abuse protection documentation provided.","uptime_documented":0.0,"version_stability":45.0,"breaking_changes_history":35.0,"error_recovery":35.0,"idempotency_support":"false","idempotency_notes":"README does not state idempotency guarantees; many operations (create/upload, delete, merge, split, rotate) are potentially non-idempotent.","pagination_style":"offset?page/page_size style for list_documents; other list methods appear non-paginated in README","retry_guidance_documented":false,"known_agent_gotchas":["Bulk operations include destructive actions (delete/reprocess/merge/split/delete pages); agents should confirm inputs to avoid unintended changes.","download_document supports original vs archived; ensure the correct flag/value is used to avoid retrieving the wrong version.","split/rotate/delete_pages parameter formats (e.g., pages string like \"[1-2,3-4]\") are easy to mis-specify.","Authentication is passed as an argument in MCP config/start; avoid leaking command-line arguments in logs/process listings."]}}