Skip to main content
Glama
jm333-B

file-insight-mcp

by jm333-B

Dateianalyse-MCP (file-insight-mcp)

Dies ist ein persönlicher lokaler MCP-Server, der unstrukturierte Dokumente in einem angegebenen Ordner liest, deren Struktur analysiert und eine Zusammenfassung pro Dokument sowie einen Gesamtzusammenfassungsbericht für den Ordner erstellt.

Alle Dokumente im Ordner data/sample_docs/ dieses Pakets sind synthetische Daten, die nur für Demonstrationszwecke erstellt wurden.

Referenzgrundlage

Related MCP server: file-analyzer

Was dieser Server tut

  1. Er scannt die Struktur des festgelegten Zielordners (data/sample_docs/).

  2. Er liest nur Dokumente mit zulässigen Erweiterungen (.txt .md .csv .log).

  3. Er extrahiert aus den Dokumenten regelbasiert das Inhaltsverzeichnis (Überschriftenstruktur), Datumsangaben, Zahlen und Kandidaten für Schlüsselbegriffe.

  4. Er erstellt einen zusammengefassten Prompt, der alle Dokumente kombiniert. Die Zusammenfassung selbst erstellt der Host-LLM (Claude/Codex); dieser MCP ruft keine LLM-API auf.

  5. Er validiert die Struktur des erstellten Zusammenfassungsberichts und prüft, ob die erwähnten Dateinamen tatsächlich existieren.

  6. Er speichert den Bericht erst, nachdem der Benutzer ihn ausdrücklich genehmigt hat.

Schnellstart

Erforderliche Umgebung: Python 3.11 oder höher, uv

uv sync --extra dev

Nach der Installation prüfen, ob alle vier Befehle im Abschnitt Validierung unten bestanden werden.

Um die Tools mit dem MCP Inspector visuell zu prüfen:

uv run mcp dev src/file_insight_mcp/server.py

Projektstruktur

Domänenlogik und Tool-Konventionen sind getrennt, sodass Änderungen an den Validierungsregeln die Tool-Ebene nicht berühren.

Pfad

Rolle

src/file_insight_mcp/security.py

Pfadsicherheitsprüfung, Erweiterungs-Allowlist, Größen- und Elementanzahl-Obergrenzen

src/file_insight_mcp/core.py

Ordnerscan, Dokumentlesen, Berichtsstrukturvalidierung, genehmigungsbasiertes Speichern

src/file_insight_mcp/outline.py

Extraktion von Inhaltsverzeichnis, Datum, Zahlen, Schlüsselbegriffen (regelbasiert, deterministisch)

src/file_insight_mcp/grounding.py

Abgleich der in der Zusammenfassung erwähnten Dateinamen (Beratungsprüfung)

src/file_insight_mcp/harness.py

Gemeinsame Elemente der Tool-Konventionen — NextAction, ToolFailure, Kürzung und Zeilennummern

src/file_insight_mcp/server.py

Registrierung von MCP-Tools, Ressourcen und Prompts (Harness-Ebene)

src/file_insight_mcp/evalkit.py

Reine Logik für Pfadausdrücke, Bewertung und Variablensubstitution in Eval-Fällen

evals/cases.jsonl

Deterministische Regressionsfälle (Daten, kein Code)

scripts/run_evals.py

Runner, der Fälle über das tatsächliche MCP-Protokoll ausführt

scripts/smoke_stdio.py

Smoke-Test für STDIO-Start, Schema und Harness-Konventionen

scripts/validate_package.py

Statische Prüfung vor der Veröffentlichung (Anmeldedaten, riskante Aufrufe, Tool-Kommentare)

tests/

Unit-Tests für Domänenfunktionen (Ausführung ohne Serverstart)

Empfohlener Ablauf

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

Schritt

Tool

Lesen/Schreiben

Rolle

SCAN

scan_folder_structure

Lesen

Zielordnerstruktur, Anzahl nach Erweiterung, Zulässigkeit

LIST

list_target_documents

Lesen

Liste der tatsächlich lesbaren Dokumente

READ

read_document_chunk

Lesen

Abruf des Originaltexts. Unterstützt Zeilenbereichsangabe und L14-Zitatanchor

EXTRACT

extract_document_outline

Lesen

Extraktion der Inhaltsverzeichnisstruktur (Überschriften/Nummerierung)

EXTRACT

extract_key_terms

Lesen

Extraktion von Kandidaten für Schlüsselbegriffe basierend auf Datum, Zahlen und Häufigkeit

DRAFT

build_summary_prompt

Lesen

Erstellung eines Prompts, der alle Dokumente und das Standardberichtsformat kombiniert

CHECK

validate_report_draft

Lesen

Strukturvalidierung. Bietet rule_id, severity, line, fix (Speicher-Gate)

CHECK

check_summary_grounding

Lesen

Abgleich, ob in der Zusammenfassung erwähnte Dateinamen tatsächlich existieren (beratend, blockiert das Speichern nicht)

PREVIEW

diff_report_against_saved

Lesen

Prüfung der Unterschiede zur vorhandenen gespeicherten Version

PREVIEW

preview_save_report

Lesen

Zeigt Validierung und Diff gebündelt an und stellt ein Genehmigungstoken aus

SAVED

save_approved_report

Schreiben

Speichert nur bei Übereinstimmung des Genehmigungstokens (einziges Schreib-Tool)

OBSERVE

list_saved_reports

Lesen

Liste der gespeicherten Berichte

OBSERVE

read_report_audit_log

Lesen

Abruf des Speicher-Auditprotokolls

Ressourcen und Prompts

Typ

URI oder Name

Rolle

Resource

document://{relative_path}

Originaltext des Dokuments

Resource

report://{report_id}

Gespeicherter Zusammenfassungsbericht

Prompt

analyze_folder

Analyse-Workflow vom Scan bis zur Speichergenehmigung

Harness-Design

Dieser Server behandelt nicht nur die Funktionalität, sondern auch die Art und Weise, wie das Modell die Tools verwendet, als Designgegenstand.

  • Jede Antwort enthält stage und next_actions, sodass das Modell allein anhand der Antwort das nächste Tool auswählt. blocking: true ist ein Hinweis, dass dieser Schritt nicht übersprungen werden soll. Was das Speichern tatsächlich blockiert, sind die Strukturvalidierung und das Genehmigungstoken; der Hinweis übernimmt diese Rolle nicht.

  • Fehler werden als ToolFailure mit Ursachencode, Wiederherstellungsmethode und auswählbaren Werten zurückgegeben. Ziel ist es, dass das Modell sich selbstständig erholen kann, ohne erneut nachfragen zu müssen.

  • Die Argumentschemata bleiben flach ({"relative_path": "..."}). Wenn Pydantic-Modelle als Argumenttypen verwendet würden, würden sie als {"params": {...}} verschachtelt und die Aufrufstruktur würde sich ändern.

  • Rückgabewerte sind Pydantic-Modelle, sodass outputSchema automatisch erzeugt wird.

  • Alle Tools haben readOnlyHint / destructiveHint, damit der Host für Schreib-Tools eine andere Genehmigungs-UI anzeigen kann.

  • Nur eindeutige Prüfungen (Struktur) blockieren das Speichern; heuristische Prüfungen (Dateinamenabgleich) werden nur als Warnung gemeldet.

Kontextbudget

Nach dem Prinzip „Das Kontextfenster ist kein Ablageort, sondern ein Arbeitsgedächtnisbudget" haben alle Tools eine explizite Obergrenze für die Antwortgröße.

  • scan_folder_structure: Wenn MAX_SCAN_ENTRIES (500) überschritten wird, wird mit truncated: true informiert und gekürzt.

  • read_document: Dateien über MAX_FILE_BYTES (200KB) werden nicht vollständig gelesen; stattdessen wird per Fehler darauf hingewiesen, nur einen Teil mit read_document_chunk zu lesen.

  • extract_key_terms: Begrenzt die Anzahl der Einträge pro Kategorie mit max_terms.

  • preview_save_report: include_preview=False ist der Standardwert, sodass ein bereits vorhandener Entwurf nicht erneut in die Antwort aufgenommen wird. Nur wenn er aufgenommen werden soll, wird die Länge mit max_preview_chars begrenzt.

  • harness.truncate() / harness.number_lines(): Kürzungsstatus und Zitatanchor (Zeilennummer) werden immer explizit angegeben, damit das Modell nicht raten muss, ob es sich um den vollständigen oder einen Teilinhalt handelt.

Sicherheitsgrenzen

  • Der Server behandelt nur security.TARGET_DIR (data/sample_docs/). Auch mit .., absoluten Pfaden, Laufwerksbuchstaben oder symbolischen Links kann nicht darauf zugegriffen werden (security.safe_relative_path).

  • Dateien außerhalb der Erweiterungs-Allowlist (.txt .md .csv .log) werden nicht gelesen. Ausführbare/Skript-Erweiterungen sind immer vom Ziel ausgeschlossen.

  • Wenn die Dateigröße MAX_FILE_BYTES (200KB) überschreitet, wird nicht vollständig gelesen, sondern per Fehler darauf hingewiesen.

  • Versteckte Dateien und Ordner, deren Name mit . beginnt, werden vom Scan ausgeschlossen.

  • Das einzige Schreib-Tool ist save_approved_report; es funktioniert nur, wenn das von preview_save_report ausgestellte Hash-Token (report_id, Inhalt) übereinstimmt.

  • Dieser Server liest nur Dokumente. Wenn Code- oder Shell-Ausführungsaufrufe wie eval/exec/subprocess in den Quellcode gelangen, schlägt scripts/validate_package.py fehl.

Validierung

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

Die vier Befehle haben unterschiedliche Prüfbereiche, daher müssen alle bestanden werden.

Befehl

Prüfumfang

Serverstart

pytest -q

Domänenfunktionen von core, outline, grounding, security, evalkit

Nein

smoke_stdio.py

Tool-Registrierung, Schema-Flachheit, Kommentare, Fehlermeldungskonventionen

Ja

run_evals.py

Deterministische Regressionsfälle aus evals/cases.jsonl

Ja

validate_package.py

Statische Prüfung auf Anmeldedatenlecks, riskante Aufrufe, Tool-Kommentare

Nein

run_evals.py enthält den gesamten Speicherablauf, einschließlich der Fälle, in denen das Speichern bei korrektem und bei falschem Genehmigungstoken jeweils erfolgreich bzw. abgelehnt wird. Bei jedem Fehlerfix wird ein Fall, der den Fehler reproduziert, als eine Zeile zu evals/cases.jsonl hinzugefügt. Die Fallgrammatik ist in evals/README.md beschrieben.

Wenn ein anderer Ordner analysiert werden soll

Aus Sicherheitsgründen ist der Zielordner in diesem Projekt auf TARGET_DIR (das data/sample_docs/ im Paket) in src/file_insight_mcp/security.py festgelegt. Um einen tatsächlichen Arbeitsordner zu analysieren:

  1. TARGET_DIR auf den gewünschten absoluten Pfad ändern oder so anpassen, dass er per Umgebungsvariable injiziert wird.

  2. Die tatsächlich im Ordner vorhandenen Erweiterungen in ALLOWED_EXTENSIONS aufnehmen.

  3. Zuerst prüfen, ob es keine sensiblen Unterordner gibt (Anmeldeinformationen, personenbezogene Daten usw.).

Claude Desktop-Verbindung

ABSOLUTE_PROJECT_PATH in config/claude_desktop_config.example.json durch den absoluten Pfad dieses Ordners ersetzen und dann in den Claude Desktop-Einstellungen übernehmen. Die App muss vollständig beendet und dann neu gestartet werden.

Designprinzipien

  • Der MCP ruft keine separate LLM-API auf. Claude oder Codex erstellt die Zusammenfassungssätze; dieser MCP ist für Originaltext, Struktur, Validierung und Speicherung zuständig.

  • Es werden keine Dateinamen, Zahlen oder Daten erfunden, die nicht im Dokument bestätigt wurden; der Begründungsprüfer gleicht mechanisch ab.

  • Für die endgültige Speicherung müssen sowohl das im Vorschaubildschirm ausgestellte Genehmigungstoken als auch die ausdrückliche Genehmigung des Benutzers vorliegen.

  • Domänenlogik (core, outline, grounding) und Tool-Konventionen (server, harness, security) sind getrennt.

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