Skip to main content
Glama
samsung10-gif

local-docs-mcp

local-docs-mcp

A personal MCP server that reads documents on your local PC to help with summarization and organization. It extracts text from PDF, Word, Excel, PowerPoint, Hangul (HWP), Markdown, CSV, and more, and handles saving summaries and organizing files with an approval process.

  • It does not use the network. No API key is required.

  • This server does not summarize. It extracts the original text accurately, and Claude writes the summary. (The machine_keypoints the server provides are frequency-based mechanical extraction, not a summary.)

  • It cannot read outside the allowed folders. Moving or saving files always requires approval.

Supported formats

Type

Extensions

Method

Documents

.docx .docm

Direct ZIP+XML parsing (headings, paragraphs, tables)

Hangul

.hwpx / .hwp

.hwpx is natively supported; .hwp is best-effort extraction if olefile is installed

PDF

.pdf

pypdf (per-page p.N labels)

Presentations

.pptx .pptm

Slide number order + speaker notes

Spreadsheets

.xlsx .xlsm

Per-sheet, shared string resolution

Data

.csv .tsv .json

Includes column names and row counts

Web & Mail

.html .htm .xml .eml

Tag stripping; mail includes headers + body

Text & Code

.md .txt .log .yaml .py .js etc.

UTF-8/CP949/EUC-KR auto-detection

.doc .xls .ppt (legacy binary formats) are not read; the server tells you to "save them in an x-suffixed format."

Related MCP server: Knowledge Assistant MCP

Installation

Python 3.11 or later is required.

python -m venv .venv && .venv/Scripts/pip install -e ".[formats,dev]"

On macOS and Linux, use .venv/bin/pip. [formats] installs pypdf for PDF and olefile for .hwp (binary) together; without them, the remaining formats still work.

Registering with Claude Code

<PROJECT_DIR> is the absolute path where you cloned this repository, and <HOME> is the user home folder.

claude mcp add local-docs --scope user --env DOCS_MCP_ROOTS="<HOME>/Desktop;<HOME>/Documents" --env DOCS_MCP_OUTPUT="<HOME>/Desktop/docs-mcp-out" -- <PROJECT_DIR>/.venv/Scripts/python.exe -m docs_mcp.server

To use it only within this repository, copy .mcp.json.example to .mcp.json and replace <PROJECT_DIR> and <HOME> with the actual paths. .mcp.json paths differ per machine, so it is not tracked in the repository.

Environment variables

Variable

Meaning

Default

DOCS_MCP_ROOTS

Folders allowed for reading (separated by ;)

Desktop, Documents, Downloads

DOCS_MCP_OUTPUT

Folder for saving summaries and organization logs

<HOME>/Desktop/docs-mcp-out

DOCS_MCP_MAX_FILE_MB

Maximum file size

20

DOCS_MCP_ALLOW_MOVE

If 1, allows moving originals during organization

Unset (copy only)

11 tools

Read-only (R) and write (W) tools are registered separately so the host can show different approval UIs.

Tool

What it does

R

list_roots

Check readable folders, supported formats, and limits

R

scan_documents

Scan a folder for a document list (type, size, modified date)

R

outline_document

Structure, headings, keywords, representative sentences. For judging before reading the full text

R

read_document

Extract body text. Provides section labels and a continuation cursor

R

search_documents

Search across multiple document bodies + evidence snippets

R

build_summary_bundle

Extract evenly from multiple documents within a character budget

R

preview_save_summary

Preview content and path to save + issue approval token

W

save_summary

Save the approved summary to the output folder

R

preview_organize

Create only an organization plan (no file changes) + approval token

W

apply_organize

Execute the approved plan (copy by default)

W

undo_last_organize

Revert based only on the journal record

list_roots
  → scan_documents          어떤 문서가 있는지
  → outline_document        긴 문서는 뼈대부터
  → read_document           원문을 근거로 확보 (필요하면 이어 읽기)
  → (Claude가 요약 작성)
  → preview_save_summary    저장 내용 확인
  → [사용자 승인]
  → save_summary

Organization is done separately.

preview_organize   계획만 생성 — 파일은 하나도 건드리지 않음
  → [사용자가 계획 확인·승인]
  → apply_organize (기본 copy)
  → 문제가 있으면 undo_last_organize

There are four organization criteria.

Criterion

Result folder

by_kind

01_Documents 02_PDF 03_Presentations 04_Spreadsheets

by_month

Modified month like 202608

by_kind_month

02_PDF/202608

by_keyword

Names specified in rules. Example: {"contracts": ["contract","agreement"]}

Safety mechanisms

  1. Path blocking — Every input path is resolve()d and then checked to be inside the allowed roots. .., symbolic links, and drive traversal are all blocked here.

  2. Write blocking — Saving is only possible inside the output folder. Nothing is written to the read roots.

  3. Excluded folders.git, node_modules, .venv, AppData, etc. are neither scanned nor read.

  4. Approval token — A hash of the preview content. If even one character of the content changes, the token breaks and saving/organizing is rejected. However, the token only guarantees technical integrity and does not replace user approval.

  5. Copy by default — Moving originals is only possible with DOCS_MCP_ALLOW_MOVE=1.

  6. No deletion — Undo also does not delete files; it moves them to a _trash folder.

Verification

.venv/Scripts/python.exe -m pytest -q
.venv/Scripts/python.exe scripts/smoke.py
.venv/Scripts/python.exe scripts/simulate.py
  • pytest — format-specific extraction, boundary checks, approval flow (unit tests)

  • smoke.py — verifies initialize → tools/list → tools/call over real stdio

  • simulate.pycreates a virtual document set and reproduces the entire flow over a real MCP connection. It creates 12 virtual documents (meeting minutes, contracts, quotes, presentation materials, PDFs, CP949 memos, etc.), then runs through scanning → summary saving → organization → undo, and verifies that things that should be blocked (reading outside roots, token forgery, moving originals) are actually blocked. It runs in a temporary folder and cleans up after itself. Pass a folder as an argument to keep the results.

Limitations

  • Scanned image PDFs have no text. No OCR is performed; only a warning is left.

  • Excel date cells may appear as internal serial numbers.

  • .hwp (binary) is best-effort extraction. Table and footnote order may differ from the original.

  • Text inside images is not read in any format.

License

MIT — LICENSE

Available Tools

11 tools
apply_organizeA
Destructive

승인된 정리 계획을 실제로 수행합니다. 기본은 복사이며, 이동은 서버 설정과 사용자 승인이 모두 있어야 합니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNocopy 또는 movecopy
kindsNo미리보기와 같은 종류 필터
limitNo미리보기와 같은 최대 파일 수
folderNo미리보기와 같은 대상 폴더
strategyNo미리보기와 같은 정리 기준by_kind
target_dirYes미리보기와 같은 목적지
keyword_rulesNo미리보기와 같은 규칙
approval_tokenYespreview_organize가 발급한 토큰
modified_within_daysNo미리보기와 같은 기간 필터

Output Schema

ParametersJSON Schema
NameRequiredDescription
modeYes
stageYes문서 요약·정리 흐름에서 지금 위치한 단계
statusYes이 호출의 결과 상태
journalYes
failuresYes
target_dirYes
moved_countYes
failed_countYes
next_actionsNo이어서 호출하면 좋은 도구 목록

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and readOnlyHint=false. The description adds value by stating the default action is copy (non-destructive) and that move is conditional on server settings and user approval, which clarifies the boundary. This goes beyond the bare annotation and helps an agent understand the mutating nature and its constraints. No contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences, front-loaded with the core action and then the crucial condition for move. No filler or repetition; every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 9 parameters, nested objects, and an output schema, the description provides a high-level summary of the operation and its one key constraint (move requires approval). Given the schema covers parameters and annotations cover safety (destructive), the description is sufficient to guide an agent on when and how to invoke it. It could mention that approval_token comes from preview_organize, but that is hinted by the extended description of the token in the schema and the tool name.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so parameters are fully documented. The description adds no extra explanation of individual parameters, but it does frame the approval_token as part of an 'approved' plan, which implicitly ties the token to the preview step. This is marginal additional meaning; baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool executes an approved organization plan (승인된 정리 계획을 실제로 수행합니다), distinguishing it from preview (preview_organize) and undo (undo_last_organize) siblings. It also specifies the default mode (copy) and the condition for move, providing a specific verb+resource and operational scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context: it applies an approved plan, and explicitly states that move mode requires both server settings and user approval (이동은 서버 설정과 사용자 승인이 모두 있어야 합니다). This informs when move is permissible, but it does not explicitly say 'use after preview_organize' or exclude scenarios, though that is implied by the tool's name and sibling structure. Lacks explicit when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

build_summary_bundleA
Read-only

여러 문서를 글자 예산 안에서 고르게 발췌해 한 번에 돌려줍니다. 여러 문서를 묶어 요약할 때 씁니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathsYes요약 대상 문서 절대 경로 목록
char_budgetNo전체 발췌 글자 예산

Output Schema

ParametersJSON Schema
NameRequiredDescription
stageYes문서 요약·정리 흐름에서 지금 위치한 단계
statusYes이 호출의 결과 상태
includedYes
documentsYes
requestedYes
unreadableYes
used_charsYes
char_budgetYes
next_actionsNo이어서 호출하면 좋은 도구 목록
writing_guideYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is established. The description adds that it evenly excerpts documents and returns them at once, which is useful behavioral context, but it doesn't mention potential edge cases or how errors are handled. Given the annotations cover the key side-effect concerns, a score of 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences that front-load the main action and constraint, with zero filler. It effectively communicates purpose and usage in minimal space.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has an output schema, so return format is not the description's burden. The description covers the core purpose and when to use it, and the parameters are straightforward. It doesn't get into edge cases, but for a read-only tool with simple inputs, the description is sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% — both parameters (paths and char_budget) already have descriptive text in the schema. The tool description does not add any extra meaning about the parameters beyond what the schema provides. Baseline of 3 is correct when the schema already documents parameters fully.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses specific verbs ('발췌해' / excerpt, '돌려줍니다' / returns) with a clear resource (multiple documents) and a constraint (within a character budget). It also states it's for summarizing multiple documents together, which differentiates it from single-document tools like read_document. However, it doesn't explicitly name sibling alternatives to reinforce that distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says '여러 문서를 묶어 요약할 때 씁니다' (use when summarizing multiple documents together), providing a clear condition for when to invoke this tool. It doesn't mention when not to use it or name alternatives, but the given condition covers the primary use case effectively.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_rootsA
Read-only

이 서버가 읽을 수 있는 폴더, 저장 위치, 지원 형식과 한도를 확인합니다. 다른 도구를 부르기 전에 먼저 호출하세요.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
rootsYes
stageYes문서 요약·정리 흐름에서 지금 위치한 단계
limitsYes
statusYes이 호출의 결과 상태
output_dirYes
next_actionsNo이어서 호출하면 좋은 도구 목록
missing_roots_noteYes
supported_suffixesYes

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds context about what the tool reports (folders, storage, formats, limits) and its role as a prerequisite. This goes beyond the annotations by explaining the kind of information returned, which helps the agent understand the tool's scope. It does not contradict annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise (two sentences), front-loaded with the core purpose, and includes the crucial usage instruction. Every sentence serves a distinct function: stating what the tool does and when to call it. No redundant or filler content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only discovery tool with an output schema available, the description is complete. It tells the agent exactly what the tool reports and that it should be called first. The output schema likely covers the detailed structure, so the description doesn't need to enumerate fields. No missing information for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so per the rubric the baseline is 4. There is no parameter information needed; the description appropriately focuses on the tool's purpose and usage rather than parameter details. No additional semantic explanation is required.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('확인합니다' = check) and a clear resource (folders, storage locations, supported formats, and limits readable by this server). It clearly differentiates itself from the sibling tools (scan, read, search, etc.) by being a discovery/preflight call, and it explicitly frames itself as a prerequisite to those operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use this tool: '다른 도구를 부르기 전에 먼저 호출하세요' (call this first before calling other tools). This gives unambiguous usage guidance and positions it as a mandatory first step, effectively differentiating it from all sibling tools that perform actual operations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

outline_documentA
Read-only

문서를 열어 구조(구역·제목·분량)와 키워드를 돌려줍니다. 전문을 읽기 전에 어디를 읽을지 고를 때 씁니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes문서 절대 경로
keypoint_limitNo대표 문장 개수

Output Schema

ParametersJSON Schema
NameRequiredDescription
kindYes
pathYes
stageYes문서 요약·정리 흐름에서 지금 위치한 단계
statusYes이 호출의 결과 상태
headingsYes
keywordsYes
metadataYes
segmentsYes
warningsYes
char_countYes
next_actionsNo이어서 호출하면 좋은 도구 목록
segment_countYes
machine_keypointsYes빈도 기반으로 고른 대표 문장. AI 요약이 아니라 '어디를 읽을지' 힌트입니다.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds context that this is an overview tool rather than a full read, which is useful. It does not disclose any additional behavioral traits like pagination or performance, but given the annotation coverage, a 4 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that states the action and purpose, followed by a brief usage guideline. Every word earns its place, with no fluff or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with two parameters (one required) and an output schema, the description covers the essential context: what it does, when to use it, and that it provides an overview. The output schema handles return details, so nothing critical is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% (both path and keypoint_limit have descriptions in the schema). The tool description itself does not add any meaning beyond the schema, so the baseline of 3 applies. It does not elaborate on parameter format or behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'opens' and resource 'document', and specifies what it returns: structure (sections, titles, length) and keywords. It also provides a usage context ('choose what to read before reading the whole text') that distinguishes it from siblings like read_document and search_documents.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a clear when-to-use condition: 'before reading the whole text'. However, it does not explicitly name alternatives or state when not to use it. While the sibling list implies alternatives, the description itself lacks explicit exclusions, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_organizeA
Read-only

문서를 어떤 폴더로 나눌지 계획만 만들어 보여줍니다. 파일을 전혀 건드리지 않습니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindsNo문서 종류 필터
limitNo계획에 담을 최대 파일 수
folderNo정리 대상 문서를 찾을 폴더. 비우면 첫 번째 허용 루트
strategyNo정리 기준: by_kind / by_month / by_kind_month / by_keywordby_kind
target_dirYes정리해 넣을 폴더 절대 경로
keyword_rulesNoby_keyword용 규칙. 예: {"계약": ["계약","contract"]}
modified_within_daysNo최근 N일 안에 수정된 파일만

Output Schema

ParametersJSON Schema
NameRequiredDescription
planYes
stageYes문서 요약·정리 흐름에서 지금 위치한 단계
totalYes
statusYes이 호출의 결과 상태
foldersYes
reminderYes
strategyYes
conflictsYes
target_dirYes
mode_defaultYes
move_allowedYes
next_actionsNo이어서 호출하면 좋은 도구 목록
approval_tokenYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint: true and destructiveHint: false, so the tool's safety profile is covered. The description adds the explicit 'does not touch files' statement, reinforcing the read-only behavior, but does not reveal additional behavioral nuances (e.g., whether it creates temporary state, requires specific permissions, or has any other side effects). Given the annotation coverage, this is adequate but not enriched.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is exactly two short sentences with zero redundancy. The primary purpose is front-loaded, and the critical non-destructive nature is stated immediately. Every word contributes to the agent's understanding without wasted text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 7 parameters and nested objects, the description is brief, but all parameter semantics are covered by the schema descriptions, and the output schema exists to define the return value. The description precisely communicates the tool's role and safety, which is sufficient for an agent to understand when and how to invoke it. It slightly lacks an explicit mention of typical usage flow (e.g., 'preview before apply_organize'), but that is more of a usage guideline gap than a contextual one.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides descriptions for all 7 parameters (coverage 100%), so the schema carries the full semantic load. The description does not add any parameter-specific meaning. Per the guideline, a high coverage baseline of 3 is appropriate; no additional insight is offered beyond what the schema already states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('만들어 보여줍니다' - creates and shows) and resource (a plan for dividing documents into folders). It explicitly distinguishes itself from mutation tools by asserting '파일을 전혀 건드리지 않습니다' (does not touch files at all), which clearly differentiates it from the sibling apply_organize. This is a precise, unambiguous purpose statement.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description conveys clear usage context: use this to preview a folder-division plan before actually applying changes. The statement about not touching files implicitly steers the agent toward apply_organize when actual changes are needed. However, it does not explicitly name alternatives or state conditions for when NOT to use it, such as comparing to preview_save_summary. Still, the primary usage intent is evident.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preview_save_summaryA
Read-only

요약문을 저장하기 전에 최종 파일 경로와 내용을 미리 보여주고 승인 토큰을 발급합니다. 파일을 쓰지 않습니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNo한계·미확인 사항 등 비고
titleYes요약 제목. 파일명에도 쓰입니다
sourcesYes요약에 사용한 원문 경로 목록
subfolderNo요약을 넣을 하위 폴더 이름
summary_markdownYes모델이 작성한 요약 본문(마크다운)

Output Schema

ParametersJSON Schema
NameRequiredDescription
stageYes문서 요약·정리 흐름에서 지금 위치한 단계
statusYes이 호출의 결과 상태
reminderYes
target_pathYes
next_actionsNo이어서 호출하면 좋은 도구 목록
content_charsYes
already_existsYes
approval_tokenYes
content_previewYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the agent knows it's safe. The description adds beyond that: it produces a preview and issues an approval token, and explicitly confirms it doesn't write. This is useful behavioral context that complements the annotations without contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero filler. The key point (preview before saving, token issuance, non-destructive) is front-loaded and each sentence earns its place. Extremely efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the return format (likely containing the token and final path) doesn't need to be described here. The description covers the tool's purpose and non-destructive nature, and combined with the schema and annotations, an agent has enough to call it correctly. The only minor gap is that it doesn't explicitly mention needing to pass the token to save_summary, but this is implied by the workflow and siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all five parameters are already documented in the input schema (e.g., title is noted as used in the filename). The description adds no additional parameter-level semantics beyond what the schema provides, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb (미리 보여주고, 발급), resource (최종 파일 경로와 내용), and explicitly disclaims writing (파일을 쓰지 않습니다). This differentiates it from save_summary, which actually persists. The purpose is unambiguous and distinct from siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly opens with '요약문을 저장하기 전에' (before saving), giving a clear temporal context. It implies a two-step flow with save_summary (which consumes the issued token), though it doesn't name the exact alternative. This is clear context without explicit exclusions or alternative names, so it earns a 4.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_documentA
Read-only

문서 본문을 텍스트로 읽습니다. 구역 라벨([p.3], [슬라이드 2] 등)이 함께 붙어 요약에 근거를 달 수 있습니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes문서 절대 경로
max_charsNo이번 호출에서 받을 최대 글자 수
start_charNo이어 읽기 시작 위치. 앞 호출의 next_start_char를 넣으세요
only_labelsNo특정 구역만 읽기. 예: ['p.2','p.3'] 또는 ['시트: 매출']

Output Schema

ParametersJSON Schema
NameRequiredDescription
kindYes
pathYes
textYes
stageYes문서 요약·정리 흐름에서 지금 위치한 단계
statusYes이 호출의 결과 상태
warningsYes
truncatedYes
start_charYes
total_charsYes
next_actionsNo이어서 호출하면 좋은 도구 목록
returned_charsYes
next_start_charYes

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds useful context that the output includes section labels for citation purposes, which goes beyond the annotations. It does not contradict the annotations and provides additional behavioral detail, so it earns a 4.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that front-loads the main action (reading document body) and immediately adds a key feature (section labels for citation). It is concise, with no filler, and every word contributes value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the read-only nature and the presence of an output schema, the description is sufficiently complete for an agent to understand the basic behavior. It does not mention pagination flow, but the start_char parameter description covers that. However, it lacks any mention of when to choose this tool over siblings, which is a gap covered by the usage guideline dimension. Overall, it is nearly complete for a read tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description does not add any parameter-specific meaning beyond what the schema already provides. It makes no mention of how to use start_char, max_chars, or only_labels, leaving that to the schema, which is adequate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool reads document body text and mentions that it attaches section labels for citation. It is specific about the resource (document) and action (read), but it does not explicitly differentiate from siblings like outline_document or search_documents, so it scores 4 rather than 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives. The description only says what it does, not when it should be chosen or when it should not be used. No exclusions or references to sibling tools are provided, so it scores 2.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

save_summaryA

사용자가 승인한 요약을 출력 폴더에 저장합니다. preview_save_summary의 토큰이 필요합니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNo미리보기와 같은 비고
titleYes미리보기와 같은 제목
sourcesYes미리보기와 같은 출처 목록
subfolderNo미리보기와 같은 하위 폴더
approval_tokenYespreview_save_summary가 발급한 토큰
summary_markdownYes미리보기와 같은 요약 본문

Output Schema

ParametersJSON Schema
NameRequiredDescription
pathYes
bytesYes
stageYes문서 요약·정리 흐름에서 지금 위치한 단계
statusYes이 호출의 결과 상태
overwrittenYes
next_actionsNo이어서 호출하면 좋은 도구 목록

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate a write operation (readOnlyHint: false) and non-destructive (destructiveHint: false). The description adds the token requirement and the 'user-approved' qualifier, which adds context beyond the annotations. It doesn't contradict the annotations, and there's no mention of permissions or side effects, but the core safety profile is already covered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no filler. The central action is front-loaded, and the prerequisite is stated immediately. Nothing is redundant, and the entire description can be read in seconds.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that an output schema exists (so return values don't need explanation) and annotations cover the safety profile, the description is nearly complete. The token prerequisite is the key contextual detail, and it's included. One might want to know what happens if the token is invalid, but that's minor for a simple save operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all parameters have descriptions. However, those descriptions are minimal (e.g., 'same as preview' for title, sources, etc.), and the tool description adds no extra meaning about the parameters. Per the baseline for high coverage, a 3 is appropriate—the schema does the heavy lifting, but the descriptions are terse.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('saves') and resource ('user-approved summary') plus destination ('output folder'), making the core purpose clear. It also mentions the required token from preview_save_summary, which indicates its role in the workflow. However, it doesn't explicitly contrast itself with the preview tool, so it's not a perfect 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a clear prerequisite: it requires the token from preview_save_summary, which implies this should be called after preview. But it does not explicitly state when to use this tool versus alternatives like preview_save_summary or apply_organize. No exclusions or alternative routing are provided, so it's adequate but not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scan_documentsA
Read-only

허용 폴더를 훑어 문서 목록을 최근 수정순으로 돌려줍니다. 파일 내용은 읽지 않습니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindsNo문서 종류 필터. text/word/pdf/slide/sheet/data/web/mail/code/hangul
limitNo돌려줄 최대 개수
folderNo훑을 폴더 절대 경로. 비우면 첫 번째 허용 루트
name_patternNo파일명 glob 필터. 예: *보고서*.pdf
modified_within_daysNo최근 N일 안에 수정된 파일만. 0이면 전체

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
filesYes
stageYes문서 요약·정리 흐름에서 지금 위치한 단계
statsYes
folderYes
statusYes이 호출의 결과 상태
next_actionsNo이어서 호출하면 좋은 도구 목록

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, but the description adds specific behavioral context: it scans only allowed folders, returns results in recent modification order, and explicitly states it does not read file contents. This goes beyond the annotations by clarifying the operational scope and side-effect-free nature.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with two clauses, front-loading the action and result. The 'does not read file contents' clarification is efficient and valuable. There is no redundant wording; every part earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of a complete output schema, well-described parameters, and annotations, the description is sufficient for an agent to call the tool correctly. It covers the key constraint (allowed folders), ordering, and the non-reading behavior. Minor gaps like explicit pagination details are already handled by the limit parameter.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers all 5 parameters with descriptions (100% coverage), so the baseline is 3. The description adds no parameter-specific semantics, but it also does not need to since the schema is fully self-documenting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (scan), resource (allowed folders), and the result (document list sorted by recent modification). It explicitly clarifies it does not read file contents, distinguishing it from content-reading tools like read_document and search_documents.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies its use for metadata-only listing by stating it does not read file contents, but it does not explicitly name alternative tools or provide conditions for when to use this tool over siblings like search_documents or read_document. The guidance is implied but not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_documentsB
Read-only

여러 문서의 본문을 실제로 열어 검색어를 찾고, 주변 문장을 근거 스니펫으로 돌려줍니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindsNo문서 종류 필터
queryYes찾을 낱말이나 구절(2자 이상)
folderNo검색 시작 폴더. 비우면 첫 번째 허용 루트
max_filesNo본문을 열어 볼 최대 파일 수

Output Schema

ParametersJSON Schema
NameRequiredDescription
hitsYes
countYes
queryYes
stageYes문서 요약·정리 흐름에서 지금 위치한 단계
statsYes
folderYes
statusYes이 호출의 결과 상태
next_actionsNo이어서 호출하면 좋은 도구 목록

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=false, destructiveHint=false, covering safety. The description adds that it 'actually opens' document bodies and returns snippets, which hints at a potentially slower operation, but it does not disclose performance implications, pagination, or error behavior. Given the annotation coverage, the added context is modest but sufficient for a 3.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that immediately states the core action and output. There is no filler or redundancy, and the most important information (opening documents and returning snippets) is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that an output schema exists (not shown in full) and the input schema fully describes parameters, the description covers the basics. However, it does not mention potential caveats like handling large file sets, behavior when no results are found, or any limitations on folder scope. These gaps are moderate for a search tool, so a 3 is appropriate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% coverage of parameter descriptions, so the schema already documents each parameter (query, kinds, folder, max_files). The description does not add meaning beyond what the schema states, so the baseline score of 3 applies. No additional semantic value is contributed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: it opens the actual body text of documents to search for terms and returns surrounding sentences as evidence snippets. This is specific and distinct from a simple metadata search. However, it does not explicitly differentiate from sibling tools like scan_documents, so it loses a point for lacking sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It does not mention exclusions, prerequisites, or conditions that would lead an agent to choose this over scan_documents or read_document. The usage context is only implied by the nature of the tool (searching content), but there is no explicit routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

undo_last_organizeA
Destructive

가장 최근(또는 지정한) 정리 실행을 되돌립니다. 복사본은 지우지 않고 _trash 폴더로 옮깁니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
journal_pathNo되돌릴 저널 파일 경로. 비우면 가장 최근 기록

Output Schema

ParametersJSON Schema
NameRequiredDescription
modeYes
stageYes문서 요약·정리 흐름에서 지금 위치한 단계
statusYes이 호출의 결과 상태
journalYes
problemsYes
revertedYes
trash_dirYes
next_actionsNo이어서 호출하면 좋은 도구 목록

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructiveHint=true. The description adds valuable context: it does not delete copies but moves them to _trash, implying reversibility. This goes beyond the annotation and informs the agent of the non-permanent nature. No contradiction with annotations, and the added detail is meaningful.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short, front-loaded sentences. The primary purpose is stated first, followed by a critical behavioral caveat. No extraneous information, making it efficient and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with one optional parameter and no required inputs, the description fully explains what it does, how the parameter behaves, and the outcome (trash instead of delete). The output schema is provided separately, so no need to explain return values. The agent has all information needed to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The only parameter, journal_path, is fully documented in the schema with its default behavior (empty = most recent). Since schema coverage is 100%, the description adds no extra semantic information about the parameter. It only indirectly references '지정한' (specified) without elaborating, so it meets the baseline but adds no value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'reverts the most recent (or specified) organize run' with a specific verb and resource. It distinguishes itself from siblings like apply_organize and preview_organize by indicating it performs the inverse operation. The added detail about moving to _trash rather than deleting further clarifies its behavior.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes the use case obvious: to undo an organize operation. It does not explicitly list alternatives or exclusions, but the context is clear from the sibling tool names (organize tools vs. this undo tool). The mention of specifying a journal path gives a usage hint, though it doesn't explain when to use this over other tools.

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.

  1. 11 tool updatesv0.1.0
    • First observedapply_organize
    • First observedbuild_summary_bundle
    • First observedlist_roots
    • First observedoutline_document
    • First observedpreview_organize
    • First observedpreview_save_summary
    • First observedread_document
    • First observedsave_summary
    • First observedscan_documents
    • First observedsearch_documents
    • First observedundo_last_organize

TDQS

A4.1/5.0

Scored across 11 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: listing roots, scanning, outlining, reading, searching, bundling summaries, preview/save summaries, preview/apply organize, and undo. No two tools appear to overlap in functionality.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (e.g., list_roots, scan_documents, preview_organize). Even compound verbs like preview_save_summary maintain the pattern.

Tool Count5/5

11 tools is well-scoped for a local docs management server, covering read, search, summarize, save, and organize workflows without bloat. Each tool earns its place in the workflow.

Completeness5/5

The tool surface covers the full lifecycle for reading and managing documents: listing, scanning, outlining, reading, searching, bundling, saving summaries with preview, organizing with preview and apply, and undo for corrections. No obvious dead ends or missing operations for the stated purpose.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Converts PDFs, Office files, spreadsheets, emails, audio, and more to Markdown locally, enabling AI assistants to read and process them without cloud upload.
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to interact with local documents (PDF, Markdown, TXT) through tools for discovery, reading, extraction, summarization, comparison, keyword extraction, search, and analysis, ensuring privacy and offline capability.
    -
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables local, read-only extraction of text and structure from PDF, DOCX, PPTX, SVG, and PNG files, including OCR for images, directory tree and metadata reporting, with strict path isolation and audit logging.
    -