file-analysis-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@file-analysis-mcpAnalyze the folder structure of ~/Documents and summarize the PDFs"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
file-analysis-mcp
A personal MCP server that reads unstructured documents (PDF, PPTX, DOCX, SVG, PNG, and other images) in a specified folder and passes the raw text/images as-is so that the calling host (Claude Code, Codex CLI, etc.) can summarize the contents and analyze the folder structure.
This server does not perform summarization itself — it only extracts text and returns images as-is; the actual summarization is done by the LLM (Claude Code/Codex) that calls this tool. No separate API key is required.
Provided Tools
list_folder_structure(path, max_depth=5)Recursively explores the specified folder and returns the tree structure, file count by extension, and total size as JSON.read_document(path, max_chars=20000, max_pages=30)Extracts content based on the file extension and returns it as text/images..pdf→ per-page text.pptx→ per-slide text + notes.docx→ paragraph/heading/table text.svg→ raw XML + rasterized PNG image (when possible).png/.jpg/.jpeg/.bmp/.gif/.webp→ image as-is (after resizing)
Related MCP server: File Context MCP Server
Installation
uv manages both the Python interpreter and dependencies.
cd file-analysis-mcp
uv syncLocal Testing (MCP Inspector)
npx @modelcontextprotocol/inspector uv run --directory . python server.pyIn the Inspector UI that opens in your browser, you can directly call list_folder_structure and read_document. Sample PDF/PPTX/DOCX/SVG/PNG files are prepared in the test_samples/ folder, so you can test right away.
Registering with Claude Code
claude mcp add file-analysis -s user -- uv run --directory "C:\Users\20210\Desktop\testmcp\file-analysis-mcp" python server.pyIt is already registered at the user scope with the command above and is available in all projects. New MCP servers are loaded at session start, so you must restart Claude Code (or start a new session) for the tools to appear. Check registration status: claude mcp list
Registering with Codex CLI
codex mcp add file-analysis -- uv run --directory "C:\Users\20210\Desktop\testmcp\file-analysis-mcp" python server.pyIt is already registered globally. Check: codex mcp list
Usage Example (in a new session after registration)
"Analyze the structure of the C:\Users\me\Documents\reports folder and summarize the documents in it"
If you make a request like this, Claude Code/Codex will first understand the structure with list_folder_structure, then call read_document on the needed files to read the contents and summarize them directly.
Notes / Limitations
Since paths are passed as arguments on each call, there is no access folder restriction (allowlist). It is intended for personal use in a trusted local environment.
Text is limited by
_charsand PDFs by_pagesto prevent context overflow. If you need content, you can the values when the call.SVG rasterization (
svglib) not fully support some complex SVG features (filters some gradients, etc.). Even if it fails, the raw XML text is always returned.
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.
Securely search and manage workspace context files for AI agents and teams.
Document conversion and OCR for AI agents: PDF, Office docs, images to text.
Use your own Mac from ChatGPT, Claude or Codex: files, commands, documents, and a browser.
Related MCP Servers
- FlicenseNot 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.1-
- FlicenseNot 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.-
- 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-