file-analyzer-mcp
file-analyzer-mcp
Servidor MCP stdio personal que extrae solo texto/estructura de PDF·DOCX·PPTX·SVG·PNG en una carpeta local. No resume ni interpreta — leer y resumir los resultados extraídos es tarea del LLM anfitrión (Claude Code, etc.) que invoca esta herramienta.
Qué hace / Qué no hace
Qué hace | Qué no hace |
Extraer texto/estructura de los documentos bajo la carpeta raíz especificada | Resumir/interpretar (lo hace el LLM anfitrión) |
Agregar el árbol de carpetas · número/tamaño de archivos por extensión | Escribir/borrar/mover archivos (solo lectura) |
Extraer texto OCR de PNG | Comprender el significado visual de las imágenes (dibujos·gráficos) |
Manejar con timeout archivos grandes/corruptos | Cambiar la carpeta analizada mientras el servidor está en ejecución |
Related MCP server: Visual Document Forensics MCP Server
Ejemplo de ejecución
> read_document("quarterly-report.pdf")
{
"type": "pdf",
"num_pages": 12,
"text": "Q3 Revenue Summary\n..."
}
> read_document("../../etc/passwd")
{ "error": "'../../etc/passwd' resolves outside the allowed root folder" }Inicio rápido
git clone https://github.com/saewookkangboy/fileanalyzer_mcp_testmonial.git
cd fileanalyzer_mcp_testmonial
python3 -m venv .venv && source .venv/bin/activate
pip install -e .
brew install tesseract # PNG OCR용 (한국어는 brew install tesseract-lang 추가)Registro en Claude Code:
claude mcp add file-analyzer --env FILE_ANALYZER_ROOT=/분석할/폴더 -- \
"$(pwd)/.venv/bin/python" "$(pwd)/server.py"
claude mcp list # ✔ Connected 확인Después del registro, si en una sesión nueva pides «resume los documentos de esta carpeta», Claude invocará directamente las 3 herramientas siguientes.
Herramientas (Tools)
Herramienta | Descripción |
| Árbol de carpetas, número/tamaño de archivos por extensión |
| Extracción de texto/estructura — |
| Tamaño, hora de modificación, número de páginas/diapositivas, resolución de imagen, etc. |
Estructura del proyecto
server.py # FastMCP 앱 진입점, 툴 등록, 루트 폴더 검증
file_analyzer/
security.py # 경로 격리(resolve_safe_path), 크기 제한
timeout.py # 추출 작업 하드 타임아웃
audit.py # 로컬 감사 로그(logs/audit.jsonl)
tree.py, metadata.py # list_directory / get_file_metadata 로직
extractors/ # pdf · docx · pptx · svg · image(OCR) 추출기
tests/ # pytest 회귀 스위트
AGENTS.md # 호출 에이전트(Claude Code)를 위한 운영 지침Seguridad y restricciones
Aspecto | Política |
Aislamiento de rutas | Solo se puede acceder a |
Tamaño de archivo | Si supera 50 MB, devuelve un error sin leerlo |
Timeout | Si la extracción/el parseo de metadatos supera los 30 segundos, se interrumpe y se devuelve un error |
Extensiones admitidas |
|
Interpretación de imágenes | Solo se extrae texto OCR; no se comprende el significado visual de dibujos/gráficos |
Carpeta analizada | Se fija una sola vez al iniciar el servidor; no se puede cambiar durante la ejecución |
Observabilidad — registro de auditoría
Cada invocación de herramienta se registra localmente, una línea por llamada, en logs/audit.jsonl (sin transmisión externa).
{"timestamp": "2026-08-26T06:03:35Z", "tool": "read_document", "params": {"relative_path": "report.pdf"}, "status": "ok", "duration_ms": 251.3}Para vaciar el registro, basta con eliminar logs/audit.jsonl.
Desarrollo
pip install -e ".[dev]"
pytest -qtests/ cubre el bloqueo de la salida de rutas y de la inyección de rutas absolutas, los 5 extractores, el timeout, el registro de auditoría y la integración del servidor. Dado el tamaño de este proyecto, consideramos que basta la ejecución local de pytest, sin un pipeline de CI, para la verificación de regresiones, y así lo hemos mantenido.
Por qué se diseñó así
Sin función de resumen — para que funcione sin una clave de API de LLM aparte, optamos por una estructura mínima en la que el servidor se encarga de la extracción y el anfitrión, del resumen.
PNG: OCR, no envío a vision — en lugar de pasar la imagen en base64 al anfitrión, extraemos solo el texto para reducir el volumen de respuesta y la complejidad de implementación (no capta el significado visual de las imágenes).
Solo pytest local, sin git/CI — consideramos que una infraestructura de CI es excesiva para una herramienta local de una sola persona.
Limitaciones conocidas
El timeout está basado en hilos; el hilo en segundo plano de la propia llamada que excedió el límite puede seguir ejecutándose hasta el final incluso después de devolverse la respuesta.
No se admite
.ppt— conviértalo a.pptxantes de usarlo.
Licencia
Es un proyecto personal sin archivo de licencia aparte.
This server cannot be installed
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 gradedqualityDmaintenanceEnables AI-powered extraction and analysis of PDF documents with 40+ specialized tools for text, tables, images, layout analysis, security assessment, and document intelligence. Supports both text-based and scanned PDFs with OCR capabilities.10MIT
- FlicenseNot gradedqualityBmaintenanceEnables deterministic visual and structural analysis of PDF and DOCX documents, extracting measurable evidence such as blur, OCR confidence, and image anomalies for auditable forensic workflows.1
- AlicenseAqualityCmaintenanceEnables reading and extracting text from local documents (PDF, Word, Excel, PowerPoint, HWP, Markdown, CSV, etc.) without network access, and provides approval-gated summary saving and file organization.11MIT
- 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
Read PDFs and images as markdown or text, with exact costs and hard spend caps. $0.75/1k pages.
PDF accessibility checks (veraPDF PDF/UA-1), auto-fix and Markdown conversion. EU-hosted.
Turn any PDF into structured JSON via AI + OCR: invoices, bank statements, contracts.
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/saewookkangboy/fileanalyzer_mcp_testmonial'
If you have feedback or need assistance with the MCP directory API, please join our Discord server