file-analysis-mcp
file-analysis-mcp
读取指定文件夹内的非结构化文档(PDF、PPTX、DOCX、SVG、PNG 等图片), 将原文文本/图片原样传递给调用方主机(Claude Code、Codex CLI 等), 使其能够进行内容摘要和文件夹结构分析的个人用 MCP 服务器。
该服务器不直接执行摘要——它只负责提取文本并原样返回图片, 实际摘要由调用此工具的 LLM(Claude Code/Codex)完成。无需单独的 API 密钥。
提供的工具
list_folder_structure(path, max_depth=5)递归遍历指定文件夹,以 JSON 返回树形结构、按扩展名统计的文件数量及总容量。read_document(path, max_chars=20000, max_pages=30)根据扩展名提取内容并以文本/图片形式返回。.pdf→ 按页提取文本.pptx→ 按幻灯片提取文本 + 备注.docx→ 段落/标题/表格文本.svg→ 原文 XML + 栅格化后的 PNG 图片(如可行).png/.jpg/.jpeg/.bmp/.gif/.webp→ 原样返回图片(调整大小后)
Related MCP server: File Context MCP Server
安装
uv 负责管理 Python 解释器和所有依赖。
cd file-analysis-mcp
uv sync本地测试(MCP Inspector)
npx @modelcontextprotocol/inspector uv run --directory . python server.py可以在浏览器中打开的 Inspector UI 里直接调用 list_folder_structure、read_document
进行测试。test_samples/ 文件夹中已准备好 PDF/PPTX/DOCX/SVG/PNG 示例
文件,可直接测试。
注册到 Claude Code
claude mcp add file-analysis -s user -- uv run --directory "C:\Users\20210\Desktop\testmcp\file-analysis-mcp" python server.py已通过上述命令注册到用户范围(user scope),可在所有项目中使用。
新的 MCP 服务器会在会话启动时加载,因此需要重启 Claude Code(或
开启新会话)后工具才会出现。 查看注册状态:claude mcp list
注册到 Codex CLI
codex mcp add file-analysis -- uv run --directory "C:\Users\20210\Desktop\testmcp\file-analysis-mcp" python server.py已注册为全局(global)。查看:codex mcp list
使用示例(注册后在新会话中)
"分析 C:\Users\me\Documents\보고서 文件夹的结构,并总结里面的文档"
这样请求后,Claude Code/Codex 会先用 list_folder_structure 了解结构,
再对需要的文件调用 read_document 读取内容并自行总结。
参考 / 限制事项
路径采用每次调用时作为参数传入的方式,因此没有设置访问文件夹限制(allowlist)。 前提是在可信的本地环境中作为个人用途使用。
文本通过
max_chars、PDF 通过max_pages限制长度,以防止上下文溢出。 如需更长的内容,可在调用时增大这些值。SVG 栅格化(
svglib)可能无法完美支持某些复杂的 SVG 功能(滤镜、部分渐变等)。 即使失败,也始终会返回原文 XML 文本。
Available Tools
2 toolslist_folder_structureA
지정한 폴더를 재귀적으로 탐색해 트리 구조, 확장자별 파일 개수, 총 용량을 JSON 문자열로 반환한다.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| max_depth | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description carries the burden of explaining behavior. It discloses the recursive traversal, the aggregation of file counts and sizes, and the JSON-string return format. It does not cover edge cases like missing paths or permission errors, but the non-mutating intent is clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, dense sentence with no filler. It front-loads the operation, specifies the resource, lists the outputs, and states the return format.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema likely covers return values, and the description covers the core recursive behavior. However, max_depth semantics and path expectations are undocumented, and there is no usage guidance relative to read_document, so the description is only minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It loosely maps to the path parameter via 'specified folder' and mentions recursion, but it does not explain max_depth, its limit semantics, or the path format. The agent is left to infer important parameter behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific action (recursively explores the specified folder) and names concrete outputs: tree structure, per-extension file counts, and total capacity, all returned as a JSON string. This clearly distinguishes it from the sibling read_document, which presumably reads a single document.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance is given, and the sibling read_document is not referenced. The intended use is implied by the description, but the agent gets no direct help choosing between this tool and the alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_documentA
지정한 문서 파일(PDF, PPTX, DOCX, SVG, 이미지)의 내용을 읽어 텍스트/이미지로 반환한다. 반환된 텍스트/이미지를 바탕으로 호출자가 직접 요약을 수행해야 한다.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| max_chars | No | ||
| max_pages | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description takes on the disclosure burden. It usefully discloses that the tool returns text/image and that the caller must perform summarization. However, it does not mention truncation behavior related to max_chars/max_pages, error handling, or how images are represented in the return value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences with no filler. The primary purpose is front-loaded, and the second sentence adds a meaningful caveat about caller responsibility. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The core read-and-return semantics and supported formats are covered, and the 'caller must summarize' note is helpful. However, with no annotations, no output schema, and undocumented max_chars/max_pages, an agent still lacks guidance on partial reads, truncation, or complete return-value structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, so the description must compensate. It only implies that 'path' points to a supported document file; max_chars and max_pages are not explained at all, leaving the agent to guess their semantics beyond names and defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('reads') and clearly identifies the resource: document files (PDF, PPTX, DOCX, SVG, images). It also states the output type (text/image), and the sibling tool list_folder_structure is clearly different, so an agent can distinguish them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies it is for retrieving document content rather than summarizing, and the sibling is for listing folder structureikuha. However, it never explicitly states when to use this tool vs. list_folder_structure, nor does it mention exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
v0.1.0- First observed
list_folder_structure - First observed
read_document
TDQS
Scored across 2 tools
The two tools have clearly distinct responsibilities: one summarizes folder structure and statistics, while the other extracts content from document files. There is no overlap or ambiguity between them.
Both tool names follow a consistent verb_noun pattern: list_folder_structure and read_document. The naming is predictable and easy to understand.
With only two tools, the server feels minimal and borderline thin for a file-analysis purpose. Each tool is useful, but the overall surface is small and may leave users wanting more capability.
The pair covers folder structure analysis and document content extraction, but common file types like plain text and CSV are not supported, and there are no file search or metadata retrieval operations. These are notable gaps for a file-analysis server.
Maintenance
Related MCP Connectors
Safe folder access for ChatGPT and Claude: read, write and search files, risky tools opt-in.
Use your Mac, Windows or Linux computer from ChatGPT, Claude or Codex: files, commands, documents.
Securely search and manage workspace context files for AI agents and teams.
Read and search folders on your own computer with explicit consent. Files are never uploaded.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables Large Language Models to safely browse and interact with local file systems through secure directory listing, file reading, and content search capabilities. Built with comprehensive security controls and high-performance handling of large directories and files.1MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to read, search, and analyze local file systems with tools for reading file contents, listing directories, searching by patterns, and analyzing folder structures for context-aware queries.MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to generate annotated file trees, retrieve file statistics, list git-changed files, and read file contents from local directories or GitHub repositories.MIT
- 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.91-