local-docs-mcp
local-docs-mcp
Servidor MCP personal que lee documentos del PC local para ayudar con el resumen y la organización. Extrae texto de PDF, Word, Excel, PowerPoint, HWP (한글), Markdown, CSV, etc., y gestiona el guardado de resúmenes y la organización de archivos con un proceso de aprobación.
No usa red. No necesita claves de API.
El resumen no lo hace este servidor. Si extrae el texto original con precisión, el resumen lo escribe Claude. (Los
machine_keypointsque entrega el servidor son una extracción mecánica basada en frecuencia, no un resumen).No puede leer fuera de las carpetas permitidas. Para mover o guardar archivos siempre se requiere aprobación.
Formatos admitidos
Tipo | Extensiones | Método |
Documentos |
| Análisis directo ZIP+XML (título, párrafos, tablas) |
HWP |
|
|
|
| |
Presentaciones |
| Orden por número de diapositiva + notas del presentador |
Hojas de cálculo |
| Por hoja, con interpretación de cadenas compartidas |
Datos |
| Incluye nombres de columna y número de filas |
Web y correo |
| Eliminación de etiquetas; en correos, cabecera + cuerpo |
Texto y código |
| Detección automática UTF-8/CP949/EUC-KR |
.doc .xls .ppt (antiguos formatos binarios) no se leen y se indica que "guarde en un formato con x".
Related MCP server: Knowledge Assistant MCP
Instalación
Se requiere Python 3.11 o superior.
python -m venv .venv && .venv/Scripts/pip install -e ".[formats,dev]"En macOS y Linux se usa .venv/bin/pip. [formats] instala pypdf para PDF y olefile para .hwp (binario); si no están, el resto de formatos sigue funcionando.
Registro en Claude Code
<PROJECT_DIR> es la ruta absoluta donde clonó este repositorio, y <HOME> es la carpeta de usuario.
claude mcp add local-docs --scope user --env DOCS_MCP_ROOTS="<HOME>/Desktop;<HOME>/Documents" --env DOCS_MCP_OUTPUT="<HOME>/Desktop/docs-mcp-out" -- <PROJECT_DIR>/.venv/Scripts/python.exe -m docs_mcp.serverSi solo quiere usarlo dentro de este repositorio, copie .mcp.json.example como .mcp.json y sustituya <PROJECT_DIR> y <HOME> por las rutas reales. .mcp.json no se rastrea en el repositorio porque las rutas varían según la máquina.
Variables de entorno
Variable | Significado | Valor por defecto |
| Carpetas permitidas para lectura (separadas por | Escritorio, Documentos, Descargas |
| Carpeta donde se guardan resúmenes y registros de organización |
|
| Tamaño máximo por archivo |
|
| Si es | Sin definir (solo copia) |
11 herramientas
Se registran distinguiendo solo lectura (R) y escritura (W), de modo que el host muestra una interfaz de aprobación distinta para cada caso.
Herramienta | Qué hace | |
R |
| Comprueba carpetas legibles, formatos admitidos y límites |
R |
| Recorre la carpeta y lista documentos (tipo, tamaño, fecha de modificación) |
R |
| Estructura, títulos, palabras clave y frases representativas. Para decidir antes de leer el texto completo |
R |
| Extrae el cuerpo del texto. Ofrece etiquetas de sección y cursor de lectura continua |
R |
| Busca en el cuerpo de varios documentos + fragmentos con la evidencia |
R |
| Extrae de forma equilibrada varios documentos dentro de un presupuesto de caracteres |
R |
| Vista previa del contenido y la ruta a guardar + emisión de token de aprobación |
W |
| Guarda el resumen aprobado en la carpeta de salida |
R |
| Solo genera el plan de organización (sin modificar archivos) + token de aprobación |
W |
| Ejecuta el plan aprobado (copia por defecto) |
W |
| Revierte basándose únicamente en el registro del diario |
Flujo recomendado
list_roots
→ scan_documents 어떤 문서가 있는지
→ outline_document 긴 문서는 뼈대부터
→ read_document 원문을 근거로 확보 (필요하면 이어 읽기)
→ (Claude가 요약 작성)
→ preview_save_summary 저장 내용 확인
→ [사용자 승인]
→ save_summaryLa organización se realiza por separado.
preview_organize 계획만 생성 — 파일은 하나도 건드리지 않음
→ [사용자가 계획 확인·승인]
→ apply_organize (기본 copy)
→ 문제가 있으면 undo_last_organizeHay cuatro criterios de organización.
Criterio | Carpeta de resultado |
|
|
| Mes de modificación, como |
|
|
| Nombre definido en la regla. Ej.: |
Medidas de seguridad
Bloqueo de rutas — todas las rutas de entrada se comprueban con
resolve()para verificar que están dentro de las raíces permitidas..., enlaces simbólicos y cambios de unidad quedan bloqueados aquí.Bloqueo de escritura — el guardado solo es posible dentro de la carpeta de salida. No se escribe en las raíces de lectura.
Carpetas excluidas —
.git,node_modules,.venv,AppData, etc. no se recorren ni se leen.Token de aprobación — es el hash del contenido de la vista previa. Si el contenido cambia aunque sea un solo carácter, el token se invalida y se rechaza el guardado o la organización. No obstante, el token solo garantiza la integridad técnica y no sustituye la aprobación del usuario.
Por defecto se copia — mover el original solo es posible con
DOCS_MCP_ALLOW_MOVE=1.No se elimina nada — la reversión tampoco borra archivos; los mueve a la carpeta
_trash.
Verificación
.venv/Scripts/python.exe -m pytest -q.venv/Scripts/python.exe scripts/smoke.py.venv/Scripts/python.exe scripts/simulate.pypytest— extracción por formato, pruebas de límites y flujo de aprobación (unitarias)smoke.py— compruebainitialize → tools/list → tools/callcon stdio realsimulate.py— crea un conjunto de documentos ficticios y reproduce el flujo completo con una conexión MCP real. Crea 12 documentos ficticios (actas de reunión, contratos, presupuestos, presentaciones, PDF, notas CP949, etc.) y recorre exploración → guardado de resumen → organización → reversión, verificando que lo que debe bloquearse (lectura fuera de las raíces, token falsificado, movimiento de originales) realmente se bloquea. Se ejecuta en una carpeta temporal y se elimina solo al terminar. Si quiere conservar los resultados, pase una carpeta como argumento.
Limitaciones
Los PDF escaneados como imagen no tienen texto. No se hace OCR; solo se deja una advertencia.
Las celdas de fecha de Excel pueden mostrarse como número de serie interno.
.hwp(binario) es una extracción aproximada. El orden de tablas y notas al pie puede diferir del original.El texto dentro de imágenes no se lee en ningún formato.
Licencia
MIT — LICENSE
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceConverts PDFs, Office files, spreadsheets, emails, audio, and more to Markdown locally, enabling AI assistants to read and process them without cloud upload.MIT
- FlicenseNot gradedqualityCmaintenanceEnables AI assistants to interact with local documents (PDF, Markdown, TXT) through tools for discovery, reading, extraction, summarization, comparison, keyword extraction, search, and analysis, ensuring privacy and offline capability.
- FlicenseNot gradedqualityCmaintenanceEnables local, read-only extraction of text and structure from PDF, DOCX, PPTX, SVG, and PNG files, including OCR for images, directory tree and metadata reporting, with strict path isolation and audit logging.
- FlicenseAqualityCmaintenanceEnables local analysis of unstructured documents (PDF, DOCX, PPTX, SVG, PNG) by extracting text and structure with citation anchors, and verifies summaries against source material before a human approves saving a report.9
Related MCP Connectors
Search and reason over your Obsidian-style Markdown vault, right from ChatGPT.
Read PDFs and images as markdown or text, with exact costs and hard spend caps. $0.75/1k pages.
Vector RAG store for Word/Excel/PDF/PowerPoint. Break-even pricing, $5 per 5,700 pages.
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/samsung10-gif/file_check'
If you have feedback or need assistance with the MCP directory API, please join our Discord server