file-insight-mcp
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
Serverstruktur (FastMCP, stdio, Kombination mehrerer MCP-Server): https://github.com/kyopark2014/mcp
Harness-Konventionen (schrittweises stage/next_actions, Begründungsanker, Genehmigungsgrenzen): Wiederverwendung des Ansatzes aus dem verwandten Projekt
personal-meeting-mcp-trainingListe der Harness-Engineering-Prinzipien: https://github.com/walkinglabs/awesome-harness-engineering (Kontextbudget, Vorabgenehmigungs-Hooks, deterministische Eval, statische Sicherheitsscanner – selektiv auf die Größe dieses Projekts angewendet)
MCP Python SDK: https://github.com/modelcontextprotocol/python-sdk
Related MCP server: file-analyzer
Was dieser Server tut
Er scannt die Struktur des festgelegten Zielordners (
data/sample_docs/).Er liest nur Dokumente mit zulässigen Erweiterungen (
.txt .md .csv .log).Er extrahiert aus den Dokumenten regelbasiert das Inhaltsverzeichnis (Überschriftenstruktur), Datumsangaben, Zahlen und Kandidaten für Schlüsselbegriffe.
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.
Er validiert die Struktur des erstellten Zusammenfassungsberichts und prüft, ob die erwähnten Dateinamen tatsächlich existieren.
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 devNach 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.pyProjektstruktur
Domänenlogik und Tool-Konventionen sind getrennt, sodass Änderungen an den Validierungsregeln die Tool-Ebene nicht berühren.
Pfad | Rolle |
| Pfadsicherheitsprüfung, Erweiterungs-Allowlist, Größen- und Elementanzahl-Obergrenzen |
| Ordnerscan, Dokumentlesen, Berichtsstrukturvalidierung, genehmigungsbasiertes Speichern |
| Extraktion von Inhaltsverzeichnis, Datum, Zahlen, Schlüsselbegriffen (regelbasiert, deterministisch) |
| Abgleich der in der Zusammenfassung erwähnten Dateinamen (Beratungsprüfung) |
| Gemeinsame Elemente der Tool-Konventionen — |
| Registrierung von MCP-Tools, Ressourcen und Prompts (Harness-Ebene) |
| Reine Logik für Pfadausdrücke, Bewertung und Variablensubstitution in Eval-Fällen |
| Deterministische Regressionsfälle (Daten, kein Code) |
| Runner, der Fälle über das tatsächliche MCP-Protokoll ausführt |
| Smoke-Test für STDIO-Start, Schema und Harness-Konventionen |
| Statische Prüfung vor der Veröffentlichung (Anmeldedaten, riskante Aufrufe, Tool-Kommentare) |
| Unit-Tests für Domänenfunktionen (Ausführung ohne Serverstart) |
Empfohlener Ablauf
SCAN → LIST → READ → EXTRACT → DRAFT → CHECK → PREVIEW → [사용자 승인] → SAVEDSchritt | Tool | Lesen/Schreiben | Rolle |
SCAN |
| Lesen | Zielordnerstruktur, Anzahl nach Erweiterung, Zulässigkeit |
LIST |
| Lesen | Liste der tatsächlich lesbaren Dokumente |
READ |
| Lesen | Abruf des Originaltexts. Unterstützt Zeilenbereichsangabe und |
EXTRACT |
| Lesen | Extraktion der Inhaltsverzeichnisstruktur (Überschriften/Nummerierung) |
EXTRACT |
| Lesen | Extraktion von Kandidaten für Schlüsselbegriffe basierend auf Datum, Zahlen und Häufigkeit |
DRAFT |
| Lesen | Erstellung eines Prompts, der alle Dokumente und das Standardberichtsformat kombiniert |
CHECK |
| Lesen | Strukturvalidierung. Bietet |
CHECK |
| Lesen | Abgleich, ob in der Zusammenfassung erwähnte Dateinamen tatsächlich existieren (beratend, blockiert das Speichern nicht) |
PREVIEW |
| Lesen | Prüfung der Unterschiede zur vorhandenen gespeicherten Version |
PREVIEW |
| Lesen | Zeigt Validierung und Diff gebündelt an und stellt ein Genehmigungstoken aus |
SAVED |
| Schreiben | Speichert nur bei Übereinstimmung des Genehmigungstokens (einziges Schreib-Tool) |
OBSERVE |
| Lesen | Liste der gespeicherten Berichte |
OBSERVE |
| Lesen | Abruf des Speicher-Auditprotokolls |
Ressourcen und Prompts
Typ | URI oder Name | Rolle |
Resource |
| Originaltext des Dokuments |
Resource |
| Gespeicherter Zusammenfassungsbericht |
Prompt |
| 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
stageundnext_actions, sodass das Modell allein anhand der Antwort das nächste Tool auswählt.blocking: trueist 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
ToolFailuremit 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
outputSchemaautomatisch 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: WennMAX_SCAN_ENTRIES(500) überschritten wird, wird mittruncated: trueinformiert und gekürzt.read_document: Dateien überMAX_FILE_BYTES(200KB) werden nicht vollständig gelesen; stattdessen wird per Fehler darauf hingewiesen, nur einen Teil mitread_document_chunkzu lesen.extract_key_terms: Begrenzt die Anzahl der Einträge pro Kategorie mitmax_terms.preview_save_report:include_preview=Falseist der Standardwert, sodass ein bereits vorhandener Entwurf nicht erneut in die Antwort aufgenommen wird. Nur wenn er aufgenommen werden soll, wird die Länge mitmax_preview_charsbegrenzt.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 vonpreview_save_reportausgestellte Hash-Token (report_id, Inhalt) übereinstimmt.Dieser Server liest nur Dokumente. Wenn Code- oder Shell-Ausführungsaufrufe wie
eval/exec/subprocessin den Quellcode gelangen, schlägtscripts/validate_package.pyfehl.
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.pyDie vier Befehle haben unterschiedliche Prüfbereiche, daher müssen alle bestanden werden.
Befehl | Prüfumfang | Serverstart |
| Domänenfunktionen von | Nein |
| Tool-Registrierung, Schema-Flachheit, Kommentare, Fehlermeldungskonventionen | Ja |
| Deterministische Regressionsfälle aus | Ja |
| 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:
TARGET_DIRauf den gewünschten absoluten Pfad ändern oder so anpassen, dass er per Umgebungsvariable injiziert wird.Die tatsächlich im Ordner vorhandenen Erweiterungen in
ALLOWED_EXTENSIONSaufnehmen.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.
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