file-analyzer-mcp
file-analyzer-mcp
Персональный stdio MCP-сервер, который извлекает только текст/структуру из PDF·DOCX·PPTX·SVG·PNG в локальной папке. Он не делает резюме и не интерпретирует — читать извлечённые результаты и обобщать их — задача хост-LLM (например, Claude Code), который вызывает этот инструмент.
Что делает / чего не делает
Что делает | Чего не делает |
Извлекает текст/структуру документов в указанной корневой папке | Резюме и интерпретация (это делает хост-LLM) |
Дерево папок · подсчёт файлов/объёма по расширениям | Запись, удаление, перемещение файлов (только чтение) |
Извлечение OCR-текста из PNG | Понимание визуального смысла изображений (рисунков, диаграмм) |
Обработка тайм-аутов для больших/повреждённых файлов | Изменение анализируемой папки во время работы сервера |
Related MCP server: Docalyze
Пример запуска
> 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/asuramama-hue/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
Document-to-Markdown MCP server — convert PDF, Office and HTML into LLM-ready Markdown.
Document conversion MCP server: PDF to Markdown, image OCR, spreadsheet parsing.
Agent-native MCP server over the public saagarpatel.dev corpus. Read-only, stateless.
Hosted MCP server: convert PDFs to clean, LLM-ready Markdown with tables, formulas and OCR.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceMCP server that reads PDFs and exposes them as structured Markdown, metadata, outlines, images, and tables to LLM consumers via tools like pdf_read_markdown and pdf_info.Apache 2.0
- AlicenseBqualityDmaintenanceAn MCP server that lets AI assistants read and visually analyze local documents — PDFs, Excel spreadsheets, CSV files, Word documents, PowerPoint presentations, and images.421 npm49 PyPIMIT
- AlicenseNot gradedqualityDmaintenanceLocal MCP server that indexes folders of documents into a hybrid vector + keyword search index for Claude Desktop, with support for PDFs, Office files, and images via OCR.MIT
- AlicenseNot gradedqualityCmaintenanceMCP server for indexing, semantic search, and generation of multi-format documents. Exposes 13 tools over JSON-RPC 2.0 so an LLM can search your local PDF, Excel, and Word files, and create or edit Excel and Word documents.AGPL 3.0