file-analyzer-mcp
file-analyzer-mcp
Персональный stdio MCP-сервер, который извлекает только текст/структуру из PDF·DOCX·PPTX·SVG·PNG в локальной папке. Он не делает резюме и не интерпретирует — читать и обобщать извлечённые результаты — задача хост-LLM (например, Claude Code), который вызывает этот инструмент.
Что делает / чего не делает
Что делает | Чего не делает |
Извлекает текст/структуру документов в указанной корневой папке | Резюме·интерпретация (это делает хост-LLM) |
Собирает дерево папок · количество/объём файлов по расширениям | Запись·удаление·перемещение файлов (только чтение) |
Извлекает OCR-текст из PNG | Понимает визуальный смысл изображений (рисунки·диаграммы) |
Обрабатывает таймауты для больших/повреждённых файлов | Изменяет анализируемую папку во время работы сервера |
Related MCP server: file-analysis-mcp
Пример запуска
> read_document("quarterly-report.pdf")
{
"type": "pdf",
"num_pages": 12,
"text": "Q3 Revenue Summary\n..."
}
> read_document("../../etc/passwd")
{ "error": "'../../etc/passwd' resolves outside the allowed root folder" }Быстрый старт
git clone https://github.com/saewookkangboy/fileanalyzer_mcp_testmonial.git
cd fileanalyzer_mcp_testmonial
python3 -m venv .venv && source .venv/bin/activate
pip install -e .
brew install tesseract # PNG OCR용 (한국어는 brew install tesseract-lang 추가)Регистрация в Claude Code:
claude mcp add file-analyzer --env FILE_ANALYZER_ROOT=/분석할/폴더 -- \
"$(pwd)/.venv/bin/python" "$(pwd)/server.py"
claude mcp list # ✔ Connected 확인После регистрации в новом сеансе запросите «резюмируй документы в этой папке» — и Claude напрямую вызовет следующие 3 инструмента.
Инструменты (Tools)
Инструмент | Описание |
| Дерево папок, количество/объём файлов по расширениям |
| Извлечение текста/структуры — |
| Размер, время изменения, количество страниц/слайдов, разрешение изображения и т.д. |
Структура проекта
server.py # FastMCP 앱 진입점, 툴 등록, 루트 폴더 검증
file_analyzer/
security.py # 경로 격리(resolve_safe_path), 크기 제한
timeout.py # 추출 작업 하드 타임아웃
audit.py # 로컬 감사 로그(logs/audit.jsonl)
tree.py, metadata.py # list_directory / get_file_metadata 로직
extractors/ # pdf · docx · pptx · svg · image(OCR) 추출기
tests/ # pytest 회귀 스위트
AGENTS.md # 호출 에이전트(Claude Code)를 위한 운영 지침Безопасность и ограничения
Пункт | Политика |
Изоляция путей | Доступ только к содержимому |
Размер файла | При превышении 50MB возвращается ошибка без чтения |
Таймаут | Если извлечение/разбор метаданных превышает 30 секунд, возвращается ошибка с прерыванием |
Поддерживаемые расширения |
|
Интерпретация изображений | Извлекается только OCR-текст, визуальный смысл рисунков/диаграмм не распознаётся |
Анализируемая папка | Фиксируется один раз при запуске сервера, изменение во время работы невозможно |
Наблюдаемость — журнал аудита
Каждый вызов инструмента записывается отдельной строкой только локально в logs/audit.jsonl (без внешней передачи).
{"timestamp": "2026-08-26T06:03:35Z", "tool": "read_document", "params": {"relative_path": "report.pdf"}, "status": "ok", "duration_ms": 251.3}Чтобы очистить журнал, удалите logs/audit.jsonl.
Разработка
pip install -e ".[dev]"
pytest -qtests/ охватывают блокировку выхода за пределы путей и инъекции абсолютных путей, 5 типов экстракторов, таймауты, журнал аудита и интеграцию сервера. Для масштаба этого проекта мы решили, что локального запуска pytest без CI-пайплайна достаточно для регрессионной проверки, и поддерживаем это так.
Почему такая архитектура
Нет функции резюме — чтобы работать без отдельного ключа LLM API, выбрана минимальная структура: извлечение делает сервер, резюме — хост.
PNG — это OCR, а не передача vision — вместо передачи изображения хосту в base64 извлекается только текст, что снижает объём возвращаемых данных и сложность реализации (визуальный смысл рисунков не виден).
Только локальный pytest без git/CI — для масштаба личного локального инструмента CI-инфраструктура избыточна.
Известные ограничения
Таймаут основан на потоках, поэтому фоновый поток превышенного вызова может продолжать выполняться до конца даже после возврата результата.
.pptне поддерживается — конвертируйте в.pptxперед использованием.
Лицензия
Это личный проект без отдельного файла лицензии.
This server cannot be deployed
Maintenance
Related MCP Connectors
Convert PDF, Word, Excel and scanned documents to Markdown, tables and RAG chunks. OCR.
Extract text, pages and metadata from PDFs in bulk, with OCR for scanned files.
Deterministic DOCX/PPTX/XLSX/PDF parser: track changes, comments, headers, footers, merged cells.
High-fidelity PDF to structured Markdown conversion and document field extraction.
Related MCP Servers
- 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-
- FlicenseAqualityCmaintenanceEnables read-only scanning and text extraction from PDF, DOCX, PPTX, SVG, and PNG files in a local folder, providing the raw text to AI models for summarization or analysis without an external LLM API.5-
- FlicenseNot gradedqualityCmaintenanceLocal MCP server that extracts text and structure from PDF, DOCX, PPTX, SVG, and PNG files, along with directory and metadata listing, for read-only document analysis by LLM hosts.-
- FlicenseNot gradedqualityCmaintenanceEnables extracting text, structure, and image data from unstructured documents (PDF, DOCX, PPTX, SVG, PNG, JPG) and scanning folder trees.-