mcp-paperless-ngx
Construido contra la API REST versión 10, con tres cosas que hace de forma diferente:
Cobertura justificada. Cada uno de los 92 endpoints documentados está expuesto como herramienta o aparece en
src/tools/coverage.tscon una razón escrita para excluirlo. Una prueba lo verifica, de modo que una versión de Paperless que añada un endpoint haga fallar la CI en lugar de quedar silenciosamente sin soporte.Disciplina de tokens. Un documento de Paperless lleva su texto OCR completo. Los envoltorios ingenuos lo devuelven por defecto y una sola búsqueda puede agotar el contexto del modelo. Aquí, los resultados de las listas se recortan en el servidor mediante
?fields=, el texto vive detrás de su propia herramienta paginada, y ningún endpoint de lista pasa la respuesta cruda de la API — una prueba lo verifica. Véase Coste de contexto.Superficie limitada. 99 herramientas ahogarían la lista de herramientas de un modelo. Los conjuntos de herramientas permiten exponer solo lo que un cliente concreto necesita, y
--read-onlyelimina por completo cualquier vía de escritura.
Paperless-ngx 2.x no es compatible: la versión 10 de la API introdujo endpoints (etiquetas anidadas, versiones de
documentos, share_link_bundles, las operaciones de división de PDF) que este servidor asume que existen.
Inicio rápido
npx -y mcp-paperless-ngx --check # verify connectivity, then exitClaude Code
claude mcp add paperless --scope user \
--env PAPERLESS_URL=https://paperless.example.com \
--env PAPERLESS_TOKEN=your-api-token \
-- npx -y mcp-paperless-ngxClaude Desktop, Cursor, Cline y otros clientes MCP
{
"mcpServers": {
"paperless": {
"command": "npx",
"args": ["-y", "mcp-paperless-ngx"],
"env": {
"PAPERLESS_URL": "https://paperless.example.com",
"PAPERLESS_TOKEN": "your-api-token"
}
}
}
}Obtener un token de API
Interfaz web de Paperless → tu nombre de usuario (arriba a la derecha) → Mi perfil → el botón de flecha circular junto al campo del token de API.
Related MCP server: paperlessngx-mcp
Configuración
Variable | Obligatoria | Valor por defecto | Propósito |
| sí | — | URL base con la que habla el servidor. |
| sí | — | Token de API. |
| no |
| URL utilizada al construir enlaces para el usuario, si la instancia es accesible desde fuera con un nombre diferente. |
| no | ver más abajo | Conjuntos de herramientas separados por comas, o |
| no |
| Expone solo las herramientas que no pueden cambiar nada. |
| no | — | Cabeceras de petición adicionales, como JSON ( |
| no | temp del sistema | Dónde se escriben los archivos descargados. |
| no |
| Límite máximo de tamaños de página en las listas, sea cual sea lo que pida el modelo. |
| no |
| Tiempo de espera de las peticiones. |
| no |
| Versión de la API REST enviada en la cabecera |
Los indicadores de línea de comandos --url, --token, --public-url, --toolsets y --read-only anulan el
entorno. --check verifica la conectividad, --list-tools imprime las herramientas habilitadas.
Conjuntos de herramientas
Conjunto de herramientas | Por defecto | Contenido |
| activado | Buscar, leer, actualizar, eliminar, subir, descargar, notas, operaciones masivas y de PDF |
| activado | Etiquetas, remitentes, tipos de documento, rutas de almacenamiento |
| activado | Definiciones de campos personalizados |
| activado | Vistas guardadas |
| activado | Enlaces de compartición y paquetes de enlaces de compartición |
| activado | Reglas de automatización, disparadores, acciones |
| activado | Búsqueda global, estadísticas, estado, tareas, papelera |
| desactivado | Cuentas IMAP, reglas de correo, correo procesado |
| desactivado | Usuarios, grupos, perfil, configuración, registros (solo lectura) |
mail y admin están desactivados por defecto porque la mayoría de las sesiones nunca los necesitan y cada herramienta extra
cuesta contexto en cada petición. Actívalos explícitamente:
PAPERLESS_TOOLSETS=documents,metadata,system,mail
PAPERLESS_TOOLSETS=allCoste de contexto
Envolver una API para un modelo de lenguaje tiene un coste que la propia API no tiene: todo lo que el modelo ve se paga en cada petición. Dos lugares donde eso afecta, y qué hace este servidor al respecto.
Respuestas. Tres formas son caras en Paperless y fáciles de devolver por accidente:
Fuente | Problema | Manejo |
Listas de documentos | Cada documento lleva su texto OCR completo en |
|
| Devuelve objetos | Los documentos se resumen, los demás tipos se reducen a id + nombre |
Flujos de trabajo, reglas de correo, grupos, tareas | 27–34 campos por objeto, definiciones de disparador/acción anidadas en línea | Resumidos a campos identificativos; las listas anidadas se colapsan en recuentos. |
Definiciones de herramientas. Son el coste más grande y menos evidente: nombres, descripciones y esquemas JSON viajan con cada petición, se llame o no a alguna herramienta.
Conjuntos de herramientas | Herramientas | Coste aproximado por petición |
| 99 | ~20 500 tokens |
por defecto | 85 | ~18 500 tokens |
| 49 | ~12 900 tokens |
No hay forma de que eso sea gratis — es el precio de una herramienta que el modelo puede usar sin adivinar.
Pero merece la pena ser deliberado: si tus sesiones solo buscan y archivan documentos, ejecutar
PAPERLESS_TOOLSETS=documents,metadata ahorra más contexto que cualquier recorte de respuestas.
Seguridad
El servidor expone operaciones destructivas, porque un gestor de documentos sin ellas no es gran cosa. No intenta adivinar cuándo son apropiadas — ese juicio pertenece al cliente y al usuario. Lo que sí hace:
Las herramientas destructivas están anotadas con
destructiveHint: true, para que los clientes MCP puedan exigir confirmación.Las descripciones de las herramientas indican claramente lo que no se puede deshacer (
empty_trash,delete_custom_field,delete_originals) y piden confirmación antes de la llamada.--read-onlyelimina toda herramienta de escritura de la lista, en lugar de rechazarlas en el momento de la llamada.Los endpoints masivos admiten un modo "aplicar a todo lo que coincida con este filtro". Este servidor no lo expone: las herramientas masivas aceptan listas explícitas de IDs, de modo que un filtro erróneo no pueda afectar silenciosamente a todo el archivo.
create_share_linkproduce una URL accesible públicamente. Su descripción lo indica, y el promptaudit_sharingexiste para revisar lo que ya está expuesto.
Los endpoints relacionados con credenciales (generación de tokens, registro de TOTP, desactivación del segundo factor de alguien)
se excluyen deliberadamente. Véase EXCLUDED_ENDPOINTS para la lista completa y el razonamiento.
Prompts
Registrados como comandos de barra en los clientes que admiten prompts MCP:
Prompt | Qué hace |
| Recorre los documentos sin clasificar, propone metadatos prefiriendo las entradas existentes, no aplica nada hasta que el usuario lo aprueba. |
| Localiza un documento a partir de una descripción vaga, buscando de forma barata antes de buscar de forma amplia. |
| Revisa todos los enlaces de compartición públicos y señala los que nunca caducan. |
Pruebas
Tres capas, porque detectan cosas diferentes:
npm test # logic — no network
PAPERLESS_URL=… PAPERLESS_TOKEN=… \
node scripts/smoke-test.mjs # all 55 read-only tools, live
PAPERLESS_URL=… PAPERLESS_TOKEN=… \
node scripts/write-test.mjs # writes, live — see the warningnpm test comprueba el razonamiento propio de este servidor: cobertura de endpoints, valores de enumeración
contra el esquema, que ninguna herramienta de listas filtre objetos crudos de la API, que el modo de solo lectura
elimine realmente las escrituras.
smoke-test.mjs comprueba las suposiciones que hace sobre Paperless. Llama a todas las
herramientas de solo lectura contra una instancia real, resolviendo los IDs a partir de llamadas de listas en lugar de
codificarlos, e imprime los tamaños de las respuestas para que las herramientas caras sigan siendo visibles. No
escribe nada.
write-test.mjs cubre el resto: subida y consumo, actualización de cada tipo de campo,
notas, ediciones masivas de etiquetas, enlaces de compartición, rotación y un ciclo de ida y vuelta con la papelera.
Solo toca los objetos que crea él mismo. Todo lo que crea lleva el prefijo
zz-mcp-testy se elimina de nuevo al final, y nunca modifica un documento que no haya subido. Si una ejecución se interrumpe, los restos con ese prefijo son seguros de eliminar. Prefiere una instancia de prueba si tienes una.
Mantenerse al día con Paperless
PAPERLESS_URL=… PAPERLESS_TOKEN=… node scripts/sync-schema.mjs
npm testsync-schema.mjs regenera schema/endpoints.json a partir del documento OpenAPI de tu propia instancia.
El conjunto de pruebas informa entonces de cualquier endpoint que no esté ni expuesto ni excluido explícitamente. Ese es
todo el bucle de mantenimiento: apúntalo a una versión más reciente de Paperless y la prueba te dirá qué ha cambiado.
Desarrollo
npm install
npm start # run from source
npm run build # compile to build/
npm test # unit tests + coverage checks
npm run inspect # build, then open the MCP inspectorTrabajo previo
Ya existen varios servidores MCP para Paperless, sobre todo cubinet-code/paperless-ngx-mcp, y también nloui/paperless-mcp y barryw/PaperlessMCP. Están dirigidos a la API 2.x. Si usas Paperless-ngx 2.x, usa uno de esos; este asume 3.x.
Licencia
MIT. Ver LICENSE.
This server cannot be installed
Maintenance
Related MCP Servers
- AlicenseCqualityAmaintenanceAn 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.23363137TypeScriptISC
- FlicenseAqualityBmaintenanceA privacy-first MCP server for Paperless-ngx that lets an LLM agent search, organize, tag, and reference documents without exposing full text unless explicitly requested.13
- FlicenseAqualityCmaintenanceMCP server for Paperless-ngx document management. Enables AI models to search, retrieve, update documents and manage metadata.7
- AlicenseNot gradedqualityAmaintenanceA read-only and write MCP server for Paperless-ngx, enabling document listing, metadata retrieval, and creation of tags, correspondents, document types, and sorting workflows via natural language.MIT
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
MCP server for the PDFGate API. Generate PDFs, manage documents and handle e-signatures.
MCP server for secureFlows: token-free URL builders and integration-linting tools for AI agents.
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/tobee89/mcp-paperless-ngx'
If you have feedback or need assistance with the MCP directory API, please join our Discord server