file-insight-mcp
Análisis de archivos MCP (file-insight-mcp)
Es un servidor MCP local de uso personal que lee documentos no estructurados dentro de una carpeta especificada, analiza su estructura y genera un resumen por documento y un informe de resumen general de la carpeta.
Todos los documentos dentro de
data/sample_docs/de este paquete son datos sintéticos creados para fines de demostración.
Referencias base
Estructura del servidor (FastMCP, stdio, combinación de múltiples servidores MCP): https://github.com/kyopark2014/mcp
Convenciones del harness (stage/next_actions por pasos, anclas de fundamentación, límites de aprobación): se reutiliza el enfoque establecido en el proyecto
personal-meeting-mcp-trainingde la misma familiaLista de principios de ingeniería de harness: https://github.com/walkinglabs/awesome-harness-engineering (se aplican de forma selectiva los elementos de presupuesto de contexto, hooks de preaprobación, eval determinista y escáner estático de seguridad, adaptados a la escala de este proyecto)
SDK de Python para MCP: https://github.com/modelcontextprotocol/python-sdk
Related MCP server: file-analyzer
Qué hace este servidor
Escanea la estructura de la carpeta objetivo fija (
data/sample_docs/).Lee únicamente los documentos con extensiones permitidas (
.txt .md .csv .log).Extrae de los documentos la tabla de contenido (estructura de títulos), fechas, cifras y candidatos a términos clave mediante reglas.
Construye un prompt de resumen que combina todos los documentos. El resumen en sí lo redacta el LLM del host (Claude/Codex); este MCP no realiza llamadas a la API del LLM.
Valida la estructura del informe de resumen generado y contrasta que los nombres de archivo mencionados existan realmente.
Solo guarda el informe en un archivo después de que el usuario lo apruebe explícitamente.
Inicio rápido
Entorno requerido: Python 3.11 o superior, uv
uv sync --extra devTras la instalación, comprueba que se superan los cuatro comandos de la sección Verificación siguiente.
Para inspeccionar visualmente las herramientas con MCP Inspector:
uv run mcp dev src/file_insight_mcp/server.pyEstructura del proyecto
Se separa la lógica de dominio de las convenciones de las herramientas para que, al cambiar las reglas de validación, no sea necesario tocar la capa de herramientas.
Ruta | Función |
| Comprobación de seguridad de rutas, allowlist de extensiones, límites de tamaño y número de elementos |
| Escaneo de carpetas, lectura de documentos, validación de estructura de informes, guardado basado en aprobación |
| Extracción de tabla de contenido, fechas, cifras y términos clave (basado en reglas, determinista) |
| Contraste de nombres de archivo mencionados en el resumen (verificación de asesoramiento) |
| Elementos comunes de las convenciones de herramientas — |
| Registro de herramientas, recursos y prompts MCP (capa de harness) |
| Lógica pura de expresiones de ruta, criterios y sustitución de variables en casos de eval |
| Casos de regresión deterministas (datos, no código) |
| Ejecutor que ejecuta los casos mediante el protocolo MCP real |
| Prueba de humo de arranque STDIO, esquema y convenciones del harness |
| Comprobación estática previa al despliegue (credenciales, llamadas peligrosas, anotaciones de herramientas) |
| Pruebas unitarias de funciones de dominio (se ejecutan sin arrancar el servidor) |
Flujo recomendado
SCAN → LIST → READ → EXTRACT → DRAFT → CHECK → PREVIEW → [사용자 승인] → SAVEDPaso | Tool | Lectura/escritura | Función |
SCAN |
| lectura | Estructura de la carpeta objetivo, recuento por extensión y permisos |
LIST |
| lectura | Lista de documentos realmente legibles |
READ |
| lectura | Consulta del texto original. Admite especificación de rango de líneas y anclas de cita |
EXTRACT |
| lectura | Extracción de la estructura de tabla de contenido (encabezados/numeración) |
EXTRACT |
| lectura | Extracción de candidatos a términos clave basada en fechas, cifras y frecuencia |
DRAFT |
| lectura | Generación de un prompt que combina todos los documentos + el formato de informe estándar |
CHECK |
| lectura | Validación de estructura. Proporciona |
CHECK |
| lectura | Contrasta que los nombres de archivo mencionados en el resumen existan realmente (asesoramiento, no bloquea el guardado) |
PREVIEW |
| lectura | Comprobación de diferencias con la versión guardada anteriormente |
PREVIEW |
| lectura | Muestra validación y diff juntos y emite el token de aprobación |
SAVED |
| escritura | Guarda solo cuando el token de aprobación coincide (única herramienta de escritura) |
OBSERVE |
| lectura | Lista de informes guardados |
OBSERVE |
| lectura | Consulta del registro de auditoría de guardados |
Recursos y prompts
Tipo | URI o nombre | Función |
Resource |
| Texto original del documento |
Resource |
| Informe de resumen guardado |
Prompt |
| Flujo de trabajo de análisis desde el escaneo hasta la aprobación del guardado |
Diseño del harness
Este servidor considera como objeto de diseño no solo la funcionalidad, sino también la forma en que el modelo utiliza las herramientas.
Todas las respuestas incluyen
stageynext_actions, de modo que el modelo puede elegir la siguiente herramienta solo con ver la respuesta.blocking: truees una pista informativa de "no omitas este paso". Lo que realmente bloquea el guardado son la validación de estructura y el token de aprobación; la pista no sustituye esa función.Los errores se devuelven mediante
ToolFailurejunto con el código de causa, el método de recuperación y los valores seleccionables. El objetivo es que el modelo pueda recuperarse por sí mismo sin tener que volver a preguntar.Los esquemas de argumentos se mantienen planos (
{"relative_path": "..."}). Si se usan modelos Pydantic como tipo de argumento, se anidan como{"params": {...}}y cambia la forma de la llamada.Los valores de retorno son modelos Pydantic, por lo que
outputSchemase genera automáticamente.Todas las herramientas llevan
readOnlyHint/destructiveHintpara que el host pueda mostrar una interfaz de aprobación diferente para las herramientas de escritura.Solo las comprobaciones seguras (estructura) bloquean el guardado; las comprobaciones heurísticas (contraste de nombres de archivo) solo se notifican como advertencia.
Presupuesto de contexto
Siguiendo el principio de que "la ventana de contexto no es un lugar para desechar, sino un presupuesto de memoria de trabajo", todas las herramientas establecen un límite explícito en el tamaño de la respuesta.
scan_folder_structure: si superaMAX_SCAN_ENTRIES(500), lo notifica contruncated: truey lo trunca.read_document: los archivos que superanMAX_FILE_BYTES(200KB) no se leen completos; se indica mediante un error que se lea solo una parte conread_document_chunk.extract_key_terms: limita el número de elementos por categoría conmax_terms.preview_save_report:include_preview=Falsees el valor predeterminado, por lo que no vuelve a incluir en la respuesta el borrador que ya se tiene. Solo cuando es necesario incluirlo, limita la longitud conmax_preview_chars.harness.truncate()/harness.number_lines(): siempre indica explícitamente si hay truncamiento y las anclas de cita (números de línea), para que el modelo no tenga que adivinar "si esto es todo o solo una parte".
Límites de seguridad
El servidor solo maneja
security.TARGET_DIR(data/sample_docs/). No se puede acceder fuera de él ni con.., rutas absolutas, letras de unidad ni enlaces simbólicos (security.safe_relative_path).No se leen archivos fuera de la allowlist de extensiones (
.txt .md .csv .log). Las extensiones ejecutables/de script siempre se excluyen del objetivo.Si el tamaño del archivo supera
MAX_FILE_BYTES(200KB), no se lee completo y se indica mediante un error.Los archivos y carpetas ocultos cuyo nombre comienza con
.se excluyen del escaneo.La única herramienta de escritura es
save_approved_report, y solo funciona cuando coincide el token hash (report_id, contenido) emitido porpreview_save_report.Este servidor solo lee documentos. Si en el código fuente aparecen llamadas de ejecución de código o shell como
eval/exec/subprocess,scripts/validate_package.pyfalla.
Verificación
uv run pytest -q
uv run python scripts/smoke_stdio.py
uv run python scripts/run_evals.py
uv run python scripts/validate_package.pyLos cuatro comandos tienen funciones diferentes, por lo que deben superarse todos.
Comando | Alcance de la comprobación | Arranque del servidor |
| Funciones de dominio de | No |
| Registro de herramientas, planitud del esquema, anotaciones, convenciones de mensajes de error | Sí |
| Casos de regresión deterministas de | Sí |
| Comprobación estática de fugas de credenciales, llamadas peligrosas y anotaciones de herramientas | No |
run_evals.py incluye todo el flujo de guardado, incluido que el guardado tenga éxito o se rechace según si el token de aprobación es correcto o incorrecto. Cada vez que se corrige un error, se añade una línea en evals/cases.jsonl con un caso que reproduzca ese error. Consulta la sintaxis de los casos en evals/README.md.
Si quieres analizar otra carpeta
Por seguridad, este proyecto fija la carpeta objetivo en TARGET_DIR de src/file_insight_mcp/security.py (data/sample_docs/ dentro del paquete). Para analizar una carpeta de trabajo real:
Cambia
TARGET_DIRa la ruta absoluta deseada, o modifícalo para inyectarlo mediante una variable de entorno.Añade a
ALLOWED_EXTENSIONSlas extensiones que realmente existan en esa carpeta.Comprueba primero que no haya subcarpetas sensibles (credenciales, datos personales, etc.).
Conexión con Claude Desktop
Sustituye ABSOLUTE_PROJECT_PATH de config/claude_desktop_config.example.json por la ruta absoluta de esta carpeta y aplícalo en la configuración de Claude Desktop. Debes cerrar la aplicación por completo y volver a ejecutarla.
Principios de diseño
MCP no realiza llamadas a una API de LLM independiente. Claude o Codex redactan las frases del resumen; este MCP se encarga del texto original, la estructura, la validación y el guardado.
No se inventan nombres de archivo, cifras ni fechas que no estén verificados en los documentos; el verificador de fundamentación los contrasta mecánicamente.
El guardado final requiere tanto el token de aprobación emitido en la vista previa como la aprobación explícita del usuario.
Se separa la lógica de dominio (
core,outline,grounding) de las convenciones de herramientas (server,harness,security).
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 real-time indexing and semantic search of local documents (PDF, Word, text, Markdown, RTF) using vector embeddings and local LLMs. Monitors folders for changes and provides natural language search capabilities through Claude Desktop integration.22MIT
- FlicenseAqualityCmaintenanceEnables read-only analysis of local unstructured documents by scanning a folder, extracting text and structural metadata, and passing content with truncation and error-awareness to an LLM for summarization.9
- 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
Convert PDF bank statements into structured transactions, accounts, and balances.
Turn any PDF into structured JSON via AI + OCR: invoices, bank statements, contracts.
LLM chat, text summarization and AI image generation
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/jm333-B/temp_mcp_server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server