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 |
Extrae texto/estructura de documentos bajo la carpeta raíz especificada | Resumir/interpretar (lo hace el LLM anfitrión) |
Agrega árbol de carpetas y recuento/tamaño de archivos por extensión | Escribir, eliminar o mover archivos (solo lectura) |
Extrae texto OCR de PNG | Comprender el significado visual de imágenes (dibujos, gráficos) |
Manejo de tiempo de espera para archivos grandes o dañados | Cambiar la carpeta de análisis mientras el servidor está en ejecución |
Related MCP server: Docalyze
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/asuramama-hue/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 nueva sesión pides «resume los documentos de esta carpeta», Claude invocará directamente las 3 herramientas siguientes.
Herramientas
Herramienta | Descripción |
| Árbol de carpetas, recuento/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
Elemento | Política |
Aislamiento de rutas | Solo se puede acceder a lo que está bajo |
Tamaño de archivo | Si supera los 50 MB, devuelve error sin leerlo |
Tiempo de espera | Si la extracción/el análisis de metadatos supera los 30 s, se interrumpe y devuelve error |
Extensiones admitidas |
|
Interpretación de imágenes | Solo extrae texto OCR; no comprende el significado visual de dibujos/gráficos |
Carpeta de análisis | 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 escapes de ruta e inyección de rutas absolutas, los 5 extractores, el tiempo de espera, el registro de auditoría y la integración del servidor. Para el tamaño de este proyecto, consideramos que ejecutar pytest localmente sin un pipeline de CI es suficiente para la verificación de regresiones, y así lo mantenemos.
Por qué se diseñó así
Sin función de resumen — para que funcione sin una clave de API de LLM adicional, se eligió una estructura mínima en la que el servidor extrae y el anfitrión resume.
PNG: OCR, no visión — en lugar de pasar la imagen en base64 al anfitrión, solo se extrae texto, reduciendo el volumen de respuesta y la complejidad de implementación (no ve el significado visual de los dibujos).
Solo pytest local, sin git/CI — para una herramienta local de una sola persona, consideramos que la infraestructura de CI es excesiva.
Limitaciones conocidas
El tiempo de espera se basa en hilos, por lo que el hilo en segundo plano de la llamada que excedió el límite puede seguir ejecutándose hasta el final incluso después de devolver el error.
No se admite
.ppt— conviértelo a.pptxantes de usarlo.
Licencia
Es un proyecto personal sin un archivo de licencia independiente.
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 Connectors
Document-to-Markdown MCP server — convert PDF, Office and HTML into LLM-ready Markdown.
Agent-native MCP server over the public saagarpatel.dev corpus. Read-only, stateless.
Hosted MCP server: convert PDFs to clean, LLM-ready Markdown with tables, formulas and OCR.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceMCP server that reads PDFs and exposes them as structured Markdown, metadata, outlines, images, and tables to LLM consumers via tools like pdf_read_markdown and pdf_info.Apache 2.0
- AlicenseBqualityDmaintenanceAn MCP server that lets AI assistants read and visually analyze local documents — PDFs, Excel spreadsheets, CSV files, Word documents, PowerPoint presentations, and images.466MIT
- AlicenseNot gradedqualityDmaintenanceLocal MCP server that indexes folders of documents into a hybrid vector + keyword search index for Claude Desktop, with support for PDFs, Office files, and images via OCR.MIT
- AlicenseNot gradedqualityCmaintenanceMCP server for indexing, semantic search, and generation of multi-format documents. Exposes 13 tools over JSON-RPC 2.0 so an LLM can search your local PDF, Excel, and Word files, and create or edit Excel and Word documents.AGPL 3.0
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/asuramama-hue/fileanalyzer_mcp_testmonial'
If you have feedback or need assistance with the MCP directory API, please join our Discord server