Skip to main content
Glama
jm333-B

file-insight-mcp

by jm333-B

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

Related MCP server: file-analyzer

Qué hace este servidor

  1. Escanea la estructura de la carpeta objetivo fija (data/sample_docs/).

  2. Lee únicamente los documentos con extensiones permitidas (.txt .md .csv .log).

  3. Extrae de los documentos la tabla de contenido (estructura de títulos), fechas, cifras y candidatos a términos clave mediante reglas.

  4. 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.

  5. Valida la estructura del informe de resumen generado y contrasta que los nombres de archivo mencionados existan realmente.

  6. 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 dev

Tras 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.py

Estructura 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

src/file_insight_mcp/security.py

Comprobación de seguridad de rutas, allowlist de extensiones, límites de tamaño y número de elementos

src/file_insight_mcp/core.py

Escaneo de carpetas, lectura de documentos, validación de estructura de informes, guardado basado en aprobación

src/file_insight_mcp/outline.py

Extracción de tabla de contenido, fechas, cifras y términos clave (basado en reglas, determinista)

src/file_insight_mcp/grounding.py

Contraste de nombres de archivo mencionados en el resumen (verificación de asesoramiento)

src/file_insight_mcp/harness.py

Elementos comunes de las convenciones de herramientas — NextAction, ToolFailure, truncado y números de línea

src/file_insight_mcp/server.py

Registro de herramientas, recursos y prompts MCP (capa de harness)

src/file_insight_mcp/evalkit.py

Lógica pura de expresiones de ruta, criterios y sustitución de variables en casos de eval

evals/cases.jsonl

Casos de regresión deterministas (datos, no código)

scripts/run_evals.py

Ejecutor que ejecuta los casos mediante el protocolo MCP real

scripts/smoke_stdio.py

Prueba de humo de arranque STDIO, esquema y convenciones del harness

scripts/validate_package.py

Comprobación estática previa al despliegue (credenciales, llamadas peligrosas, anotaciones de herramientas)

tests/

Pruebas unitarias de funciones de dominio (se ejecutan sin arrancar el servidor)

Flujo recomendado

SCAN → LIST → READ → EXTRACT → DRAFT → CHECK → PREVIEW → [사용자 승인] → SAVED

Paso

Tool

Lectura/escritura

Función

SCAN

scan_folder_structure

lectura

Estructura de la carpeta objetivo, recuento por extensión y permisos

LIST

list_target_documents

lectura

Lista de documentos realmente legibles

READ

read_document_chunk

lectura

Consulta del texto original. Admite especificación de rango de líneas y anclas de cita L14

EXTRACT

extract_document_outline

lectura

Extracción de la estructura de tabla de contenido (encabezados/numeración)

EXTRACT

extract_key_terms

lectura

Extracción de candidatos a términos clave basada en fechas, cifras y frecuencia

DRAFT

build_summary_prompt

lectura

Generación de un prompt que combina todos los documentos + el formato de informe estándar

CHECK

validate_report_draft

lectura

Validación de estructura. Proporciona rule_id·severity·line·fix (puerta de guardado)

CHECK

check_summary_grounding

lectura

Contrasta que los nombres de archivo mencionados en el resumen existan realmente (asesoramiento, no bloquea el guardado)

PREVIEW

diff_report_against_saved

lectura

Comprobación de diferencias con la versión guardada anteriormente

PREVIEW

preview_save_report

lectura

Muestra validación y diff juntos y emite el token de aprobación

SAVED

save_approved_report

escritura

Guarda solo cuando el token de aprobación coincide (única herramienta de escritura)

OBSERVE

list_saved_reports

lectura

Lista de informes guardados

OBSERVE

read_report_audit_log

lectura

Consulta del registro de auditoría de guardados

Recursos y prompts

Tipo

URI o nombre

Función

Resource

document://{relative_path}

Texto original del documento

Resource

report://{report_id}

Informe de resumen guardado

Prompt

analyze_folder

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 stage y next_actions, de modo que el modelo puede elegir la siguiente herramienta solo con ver la respuesta. blocking: true es 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 ToolFailure junto 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 outputSchema se genera automáticamente.

  • Todas las herramientas llevan readOnlyHint / destructiveHint para 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 supera MAX_SCAN_ENTRIES(500), lo notifica con truncated: true y lo trunca.

  • read_document: los archivos que superan MAX_FILE_BYTES(200KB) no se leen completos; se indica mediante un error que se lea solo una parte con read_document_chunk.

  • extract_key_terms: limita el número de elementos por categoría con max_terms.

  • preview_save_report: include_preview=False es 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 con max_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 por preview_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.py falla.

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.py

Los cuatro comandos tienen funciones diferentes, por lo que deben superarse todos.

Comando

Alcance de la comprobación

Arranque del servidor

pytest -q

Funciones de dominio de core·outline·grounding·security·evalkit

No

smoke_stdio.py

Registro de herramientas, planitud del esquema, anotaciones, convenciones de mensajes de error

run_evals.py

Casos de regresión deterministas de evals/cases.jsonl

validate_package.py

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:

  1. Cambia TARGET_DIR a la ruta absoluta deseada, o modifícalo para inyectarlo mediante una variable de entorno.

  2. Añade a ALLOWED_EXTENSIONS las extensiones que realmente existan en esa carpeta.

  3. 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).

Install Server
F
license - not found
A
quality
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables 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.
    22
    MIT
  • F
    license
    A
    quality
    C
    maintenance
    Enables 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
  • A
    license
    A
    quality
    C
    maintenance
    Enables 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.
    11
    MIT

View all related MCP servers

Related MCP Connectors

View all MCP Connectors

Latest Blog Posts

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