Skip to main content
Glama
jm333-B

file-insight-mcp

by jm333-B

文件分析 MCP (file-insight-mcp)

读取指定文件夹内的非结构化文档,分析其结构,并撰写按文档分类的摘要和整个文件夹的 摘要报告的个人用本地 MCP 服务器。

本包中 data/sample_docs/ 内的文档均为演示用合成数据。

基础参考

Related MCP server: file-analyzer

该服务器的工作内容

  1. 扫描固定目标文件夹(data/sample_docs/)的结构。

  2. 仅读取允许的扩展名(.txt .md .csv .log)的文档。

  3. 基于规则从文档中提取目录(标题结构)、日期、数值、核心术语候选。

  4. 生成结合全部文档的摘要提示词。摘要本身由宿主 LLM(Claude/Codex)撰写, 该 MCP 不调用 LLM API。

  5. 验证已撰写摘要报告的结构,并核对提到的文件名是否实际存在。

  6. 仅在用户明确批准后才将报告保存为文件。

快速开始

必需环境:Python 3.11 及以上、uv

uv sync --extra dev

安装后确认以下验证一节的四个命令全部通过。

如需通过 MCP Inspector 目视确认工具:

uv run mcp dev src/file_insight_mcp/server.py

项目结构

将领域逻辑与工具规约分离,以便在更改验证规则时无需触碰工具层。

路径

作用

src/file_insight_mcp/security.py

路径安全检查、扩展名 allowlist、大小、条目数上限

src/file_insight_mcp/core.py

文件夹扫描、文档读取、报告结构验证、基于审批的保存

src/file_insight_mcp/outline.py

目录、日期、数值、核心术语提取(基于规则,确定性)

src/file_insight_mcp/grounding.py

核对摘要中提到的文件名(咨询性检查)

src/file_insight_mcp/harness.py

工具规约公共要素 — NextActionToolFailure、截断、行号

src/file_insight_mcp/server.py

MCP 工具、资源、提示词注册(harness 层)

src/file_insight_mcp/evalkit.py

eval 用例的路径表达式、判定、变量替换纯逻辑

evals/cases.jsonl

确定性回归用例(是数据而非代码)

scripts/run_evals.py

以实际 MCP 协议执行用例的 runner

scripts/smoke_stdio.py

STDIO 启动、schema、harness 规约冒烟测试

scripts/validate_package.py

部署前静态检查(凭据、危险调用、工具注释)

tests/

领域函数单元测试(不启动服务器即可运行)

推荐流程

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

阶段

Tool

读/写

作用

SCAN

scan_folder_structure

目标文件夹结构、按扩展名统计数量、是否允许

LIST

list_target_documents

实际可读取的文档列表

READ

read_document_chunk

原文查询。支持指定行范围和 L14 引用锚点

EXTRACT

extract_document_outline

提取目录(标题/编号)结构

EXTRACT

extract_key_terms

基于日期、数值、频率提取核心术语候选

DRAFT

build_summary_prompt

生成结合全部文档 + 标准报告格式的提示词

CHECK

validate_report_draft

结构验证。提供 rule_idseveritylinefix(保存门禁)

CHECK

check_summary_grounding

核对摘要中提到的文件名是否实际存在(咨询性,不阻止保存)

PREVIEW

diff_report_against_saved

查看与既有保存版本的差异

PREVIEW

preview_save_report

将验证和 diff 合并展示并签发审批令牌

SAVED

save_approved_report

仅当审批令牌匹配时保存(唯一写入工具)

OBSERVE

list_saved_reports

已保存报告列表

OBSERVE

read_report_audit_log

查询保存审计日志

资源与提示词

种类

URI 或名称

作用

Resource

document://{relative_path}

文档原文

Resource

report://{report_id}

已保存的摘要报告

Prompt

analyze_folder

从扫描到保存审批的分析工作流

Harness 设计

该服务器不仅将功能作为设计对象,也将模型使用工具的方式作为设计对象。

  • 所有响应都包含 stagenext_actions,模型仅凭响应即可选择下一个工具。 blocking: true 是“不要跳过此阶段”的引导提示。实际阻止保存的是结构验证和 审批令牌,提示并不替代该作用。

  • 错误通过 ToolFailure 一并返回原因代码、恢复方法和可选值。 目的是让模型无需再次询问即可自行恢复。

  • 参数 schema 保持扁平({"relative_path": "..."})。若将 Pydantic 模型用作 参数类型,会以 {"params": {...}} 嵌套,从而改变调用形式。

  • 返回值是 Pydantic 模型,因此 outputSchema 会自动生成。

  • 所有工具都带有 readOnlyHint / destructiveHint,使宿主可以对写入工具 显示不同的审批 UI。

  • 只有明确的检查(结构)才阻止保存,启发式检查(文件名核对)仅以警告形式告知。

上下文预算

按照“上下文窗口不是用来丢弃的,而是工作记忆预算”的原则,所有工具都对响应大小 设有明确上限。

  • scan_folder_structure:超过 MAX_SCAN_ENTRIES(500)时以 truncated: true 告知并截断。

  • read_document:超过 MAX_FILE_BYTES(200KB)的文件不整体读取,而是通过 错误提示仅用 read_document_chunk 读取部分内容。

  • extract_key_terms:通过 max_terms 限制各分类的条目数。

  • preview_save_reportinclude_preview=False 为默认值,因此不会将已持有的 草稿再次放入响应。仅在需要时通过 max_preview_chars 限制长度。

  • harness.truncate() / harness.number_lines():始终明确截断状态和引用锚点 (行号),使模型不会猜测“这是全部还是部分”。

安全边界

  • 服务器仅处理 security.TARGET_DIRdata/sample_docs/)一个目录。通过 ..、 绝对路径、盘符、符号链接也无法访问其外部(security.safe_relative_path)。

  • 不读取扩展名 allowlist(.txt .md .csv .log)之外的文件。可执行/脚本 扩展名始终从目标中排除。

  • 文件大小超过 MAX_FILE_BYTES(200KB)时不整体读取,而是通过错误提示。

  • 名称以 . 开头的隐藏文件、文件夹从扫描中排除。

  • 写入工具仅有 save_approved_report 一个,且仅在 preview_save_report 签发的 (report_id、正文)哈希令牌匹配时运行。

  • 该服务器仅读取文档。若源码中出现 eval/exec/subprocess 等代码、shell 执行调用,scripts/validate_package.py 将失败。

验证

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

四个命令的作用各不相同,因此必须全部通过。

命令

检查范围

服务器启动

pytest -q

coreoutlinegroundingsecurityevalkit 领域函数

不启动

smoke_stdio.py

工具注册、schema 扁平性、注释、错误消息规约

启动

run_evals.py

evals/cases.jsonl 的确定性回归用例

启动

validate_package.py

凭据泄露、危险调用、工具注释静态检查

不启动

run_evals.py 包含完整保存流程,包括审批令牌正确和错误时保存分别成功、被拒绝的 情况。每次修复 bug 时,在 evals/cases.jsonl 中追加一行可复现该 bug 的用例。 用例语法请参考 evals/README.md

如果想分析其他文件夹

出于安全考虑,本项目将目标文件夹固定为 src/file_insight_mcp/security.py 中的 TARGET_DIR(包内的 data/sample_docs/)。若要分析实际工作文件夹:

  1. TARGET_DIR 改为所需绝对路径,或修改为通过环境变量注入。

  2. 将该文件夹中实际存在的扩展名反映到 ALLOWED_EXTENSIONS

  3. 先确认没有敏感子文件夹(认证信息、个人信息等)。

Claude Desktop 连接

config/claude_desktop_config.example.json 中的 ABSOLUTE_PROJECT_PATH 替换为 本文件夹的绝对路径后,反映到 Claude Desktop 设置中。必须完全退出应用后重新运行。

设计原则

  • MCP 不调用单独的 LLM API。Claude 或 Codex 生成摘要语句, 该 MCP 负责原文、结构、验证和保存。

  • 不编造文档中未确认的文件名、数值、日期,依据检查器会机械式核对。

  • 最终保存必须同时具备预览中签发的审批令牌和用户的明确批准

  • 将领域逻辑(coreoutlinegrounding)与工具规约(serverharnesssecurity)分离。

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