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

インストール後、下記の検証節の4つのコマンドをすべてパスすることを確認する。

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ツール・リソース・プロンプト登録 (ハーネス階層)

src/file_insight_mcp/evalkit.py

evalケースのパス式・判定・変数置換の純粋ロジック

evals/cases.jsonl

決定論的リグレッションケース (コードではなくデータ)

scripts/run_evals.py

ケースを実際のMCPプロトコルで実行するランナー

scripts/smoke_stdio.py

STDIO起動・スキーマ・ハーネス規約スモークテスト

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

スキャンから保存承認までの分析ワークフロー

ハーネス設計

このサーバーは機能だけでなく、モデルがツールを使う方法も設計対象としている。

  • すべての応答に stagenext_actions があり、モデルが応答だけを見て次のツールを 選ぶ。blocking: true は「この段階をスキップしないでください」という案内ヒントである。実際に 保存を妨げるのは構造検証と承認トークンであり、ヒントがその役割を代行することはない。

  • エラーは ToolFailure で原因コード・復旧方法・選択可能な値を一緒に返す。 モデルが再度問い合わせずに自分で回復できるようにすることが目的である。

  • 引数スキーマはフラットに保つ({"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_report: include_preview=False がデフォルト値なので、すでに保持している ドラフトを再度応答に含めない。含める必要がある場合のみ max_preview_chars で長さを 制限する。

  • harness.truncate() / harness.number_lines(): 切り詰めの有無と引用アンカー(行 番号)を常に明示し、モデルが「これが全体なのか一部なのか」を推測しないようにする。

安全境界

  • サーバーは security.TARGET_DIR(data/sample_docs/)の1つだけを扱う。..、絶対パス、 ドライブ文字、シンボリックリンクでもその外側にアクセスできない (security.safe_relative_path)。

  • 拡張子allowlist(.txt .md .csv .log)外のファイルは読み取らない。実行/スクリプト 拡張子は対象から常に除外される。

  • ファイルサイズが MAX_FILE_BYTES(200KB)を超えると全体を読み取らず、エラーで案内する。

  • 名前が . で始まる隠しファイル・フォルダはスキャンから除外する。

  • 書き込みツールは save_approved_report の1つだけで、preview_save_report が発行した (report_id、本文)ハッシュトークンが一致する場合のみ動作する。

  • このサーバーはドキュメントを読み取るだけである。eval/exec/subprocess のようなコード・シェル実行 呼び出しがソースに入ると 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

4つのコマンドの役割がそれぞれ異なるため、すべてパスさせる必要がある。

コマンド

検査範囲

サーバー起動

pytest -q

coreoutlinegroundingsecurityevalkit ドメイン関数

しない

smoke_stdio.py

ツール登録・スキーマの平坦性・コメント・エラーメッセージ規約

する

run_evals.py

evals/cases.jsonl の決定論的リグレッションケース

する

validate_package.py

クレデンシャル漏洩、危険な呼び出し、ツールコメントの静的チェック

しない

run_evals.py には、承認トークンが正しい場合と間違っている場合に保存がそれぞれ成功・拒否されるかまで 含めた全体の保存フローが入っている。バグを修正するたびに、そのバグを再現するケースを evals/cases.jsonl に1行追加する。ケースの文法は evals/README.md を参照。

他のフォルダを分析したい場合

このプロジェクトは安全性のため、対象フォルダを src/file_insight_mcp/security.pyTARGET_DIR(パッケージ内の data/sample_docs/)に固定している。実際の業務フォルダを 分析するには:

  1. TARGET_DIR を任意の絶対パスに変更するか、環境変数で注入するように修正する。

  2. そのフォルダに実際にある拡張子を ALLOWED_EXTENSIONS に反映する。

  3. 機密性の高いサブフォルダ(認証情報、個人情報など)がないか先に確認する。

Claude Desktop接続

config/claude_desktop_config.example.jsonABSOLUTE_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