Skip to main content
Glama
jihoho12

pdf-organizer-mcp

by jihoho12

pdf-organizer-mcp

Air 프레임워크(https://docs.airmcp.dev/) 로 만든 PDF 파일을 날짜별 폴더로 자동 정리하는 MCP 서버입니다.
다운로드한 PDF가 쌓일 때마다 지정한 기준에 걸맞는 날짜 형식의 폴더에 깔끔하게 분류됩니다.


설치 및 실행

npm install
npm run build

Related MCP server: PDF Tools MCP Server

Claude Desktop 연결

claude_desktop_config.json에 아래 항목 추가:

{
  "mcpServers": {
    "pdf-organizer": {
      "command": "node",
      "args": ["/절대경로/pdf-organizer-mcp/dist/index.js"]
    }
  }
}

제공 툴 5가지

툴 이름

설명

organize_pdf

PDF 파일 1개를 오늘 날짜 폴더로 이동/복사

organize_directory

디렉토리 내 모든 PDF를 일괄 정리

list_date_folders

날짜 폴더 목록 + PDF 개수 조회

list_pdfs_in_folder

특정 날짜 폴더의 PDF 목록 조회

get_history

최근 정리 이력 조회


사용 예시 (Claude에게 말하기)

"~/Downloads/report.pdf 를 ~/Documents/PDFs 폴더에 오늘 날짜로 정리해줘"
→ organize_pdf 호출 → ~/Documents/PDFs/2025년 06월 12일/report.pdf

"~/Downloads 안의 PDF 전부 ~/Documents/PDFs 로 정리해줘"
→ organize_directory 호출 → 일괄 이동

"PDFs 폴더에 날짜별로 뭐가 있는지 보여줘"
→ list_date_folders 호출 → 폴더 목록 + 개수

"오늘 폴더에 있는 PDF 목록 보여줘"
→ list_pdfs_in_folder(date: "오늘")

"최근에 어떤 파일 정리했어?"
→ get_history 호출

파라미터 상세

organize_pdf

파라미터

필수

설명

source_path

정리할 PDF 경로

base_dir

날짜 폴더를 만들 루트 디렉토리

copy

true이면 복사 (기본: 이동)

date_override

날짜 직접 지정 YYYY-MM-DD

organize_directory

파라미터

필수

설명

source_dir

PDF들이 있는 소스 디렉토리

base_dir

날짜 폴더를 만들 루트 디렉토리

copy

true이면 복사 (기본: 이동)

date_override

날짜 직접 지정 YYYY-MM-DD

recursive

하위 폴더 탐색 여부 (기본: false)


폴더 구조 예시

~/Documents/PDFs/
├── 2025년 06월 10일/
│   ├── invoice.pdf
│   └── contract.pdf
├── 2025년 06월 11일/
│   └── report.pdf
└── 2025년 06월 12일/
    ├── manual.pdf
    └── manual(1).pdf   ← 중복 파일명 자동 처리

특징

  • 📁 자동 폴더 생성: 날짜 폴더가 없으면 자동으로 생성

  • 🔄 중복 파일명 처리: file.pdffile(1).pdffile(2).pdf

  • 📝 이력 저장: .air/data 에 정리 이력 영구 보존

  • 📅 날짜 오버라이드: 과거/미래 날짜 폴더 지정 가능

  • 🔁 복사 모드: 원본 유지하면서 정리 가능

Available Tools

6 tools
get_historyB

최근 PDF 정리 이력을 조회합니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo조회할 최대 건수 (기본: 50)

TDQS

B3.4/5.0
Behavior2/5

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

No annotations provided, and description only says 'recent' without defining time range, scope (e.g., per user), or confirming read-only behavior. Lacks key behavioral details.

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?

Single-sentence description with no redundant information, extremely concise.

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

Completeness2/5

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

Given no output schema and simple input, description fails to hint at return format, ordering, or date range for 'recent'. Incomplete for a history 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 covers the single parameter 'limit' with its description, so description adds no new semantic value beyond contextualizing that it retrieves history.

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?

Description clearly states the verb ('조회합니다' = retrieves) and resource ('PDF 정리 이력' = PDF organization history), distinguishing itself from sibling tools like listing folders or organizing PDFs.

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?

Usage context is implied—retrieving recent history of organizes—but no explicit guidance on when to use versus alternatives, nor exclusions.

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

list_date_foldersB

정리된 날짜 폴더 목록과 각 폴더 내 PDF 파일 수를 조회합니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
base_dirYes날짜 폴더들이 있는 루트 디렉토리

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations, the description carries full behavioral disclosure burden. It states it lists folders and PDF counts, but does not disclose whether it is read-only, any permission requirements, or potential side effects (e.g., indexing delay).

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 conveys the core action and output. It is front-loaded with the verb '조회' and specifies the resource and result.

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 simplicity of the tool (single parameter, no output schema), the description is fairly complete. It indicates the return includes folder names and PDF counts, which is sufficient for a list 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 the parameter is fully documented in the schema. The description adds no extra semantic meaning beyond what the schema already provides.

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 retrieves a list of date folders and the count of PDF files in each. This distinguishes it from siblings like list_pdfs_in_folder, which lists PDFs in a specific folder, and organize_by_file_date, which reorganizes files.

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. There is no mention of prerequisites, exclusions, or context for choosing it over sibling tools like organize_directory or get_history.

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

list_pdfs_in_folderC

특정 날짜 폴더 안의 PDF 파일 목록을 조회합니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
base_dirYes루트 디렉토리
dateYes조회할 날짜 (YYYY-MM-DD 또는 "오늘")

TDQS

C2.9/5.0
Behavior2/5

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

No annotations provided. Description does not disclose that the operation is read-only, whether authentication is needed, or any side effects. Simple list operation is implied but not explicitly stated.

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

Conciseness4/5

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

Description is a single concise sentence that conveys the core purpose. No wasted words, but it lacks additional context that could be provided without significant bloat.

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

Completeness2/5

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

Given the tool has two parameters, no output schema, and no annotations, the description is insufficient. It does not explain return behavior, error cases, or the folder structure assumed. A more complete description would benefit the agent.

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 coverage is 100%, so the schema already describes both parameters. The description adds no extra meaning beyond the schema's descriptions. Baseline 3 is appropriate.

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?

Description clearly states the verb-resource combination: listing PDF files in a date folder. However, it does not differentiate from sibling tools like list_date_folders or organize_pdf, which could overlap in intent.

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?

No guidance on when to use this tool versus alternatives. No mention of prerequisites, context, or exclusion cases.

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

organize_by_file_dateA

디렉토리 안의 PDF 파일을 각 파일의 날짜(수정일 또는 생성일) 기준으로 날짜별 폴더에 자동 분류합니다. 예: 6월 11일에 받은 파일 → "2026년 06월 11일" 폴더

ParametersJSON Schema
NameRequiredDescriptionDefault
source_dirYesPDF들이 있는 소스 디렉토리
base_dirYes날짜 폴더를 만들 루트 디렉토리
date_typeNo기준 날짜 종류: "modified"(수정일, 기본) 또는 "created"(생성일)
copyNotrue이면 복사, false(기본)이면 이동
recursiveNo하위 폴더까지 탐색 여부 (기본: false)

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description must bear full responsibility for behavioral transparency. It mentions the core action and date criteria but fails to disclose potential side effects (e.g., overwriting, permissions), error handling, or folder naming conventions beyond the example. Limited transparency for a tool with 5 parameters.

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 sentences long with no fluff. It front-loads the action and parameter detail, then provides an illustrative example. Every sentence earns its place.

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?

The description covers the core purpose adequately but omits behavioral details (error handling, folder naming pattern specification) and does not clarify the relationship with sibling tools. The lack of output schema increases the need for description completeness, which is only partially met.

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 well-documented. The description adds a useful example of folder naming, but otherwise repeats information already in the schema (e.g., date_type). The value added is marginal, meeting the baseline 3.

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 that the tool classifies PDF files into date-based folders based on their modification or creation date. It provides a concrete example ('2026년 06월 11일') which distinguishes it from sibling tools like organize_directory or organize_pdf that likely do not sort by date.

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 the tool is for date-based organization but does not explicitly state when to use it over alternatives (e.g., organize_pdf). There is no guidance on prerequisites or exclusions, leaving the agent to infer context from the sibling tool names.

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

organize_directoryC

특정 디렉토리 안에 있는 모든 PDF 파일을 오늘 날짜 폴더로 일괄 정리합니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
source_dirYesPDF들이 있는 소스 디렉토리
base_dirYes날짜 폴더를 만들 루트 디렉토리
copyNotrue이면 복사, false(기본)이면 이동
date_overrideNo날짜를 강제 지정 (YYYY-MM-DD)
recursiveNo하위 폴더까지 탐색 여부 (기본: false)

TDQS

C2.9/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. It mentions organizing PDFs into today's folder but omits key behaviors: copy vs move, recursive scanning, date_override, folder creation, and file conflict handling.

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

Conciseness4/5

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

Single front-loaded sentence efficiently conveys the main purpose. However, it could include a brief mention of key options (date_override, copy/move) without significantly increasing length.

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

Completeness2/5

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

With 5 parameters and no output schema, the description is too brief. Missing details on return values, error conditions, folder creation behavior, and default actions (move vs copy). The tool is moderately complex but the description does not fully equip an agent.

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 coverage is 100% (all parameters described). The description provides overall context (PDF files into today's folder) but adds minimal extra meaning beyond the schema. Baseline 3 is appropriate.

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 organizes all PDF files in a directory into today's date folder (오늘 날짜 폴더). It uses a specific verb and resource, and distinguishes from siblings like 'organize_by_file_date' which uses file dates rather than today's date.

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?

No guidance on when to use this tool versus alternatives (organize_by_file_date, organize_pdf, etc.). The description only states what it does without specifying scenarios or prerequisites.

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

organize_pdfC

PDF 파일을 오늘 날짜(YYYY년 MM월 DD일) 폴더로 자동 정리합니다. source_path에 PDF 경로, base_dir에 정리할 루트 폴더를 지정하세요.

ParametersJSON Schema
NameRequiredDescriptionDefault
source_pathYes정리할 PDF 파일의 절대 또는 상대 경로
base_dirYes날짜 폴더를 만들 루트 디렉토리 (예: ~/Downloads/PDFs)
copyNotrue이면 복사, false(기본)이면 이동
date_overrideNo날짜를 강제 지정할 경우 "YYYY-MM-DD" 형식으로 입력 (기본: 오늘)

TDQS

C2.9/5.0
Behavior2/5

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

No annotations provided, so description must fully disclose behavior. It does not explain folder creation behavior, overwrite policy, error handling, or what happens to the original file after move/copy. The copy default (false = move) is only in the schema, not description.

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

Conciseness4/5

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

Two concise sentences in Korean, front-loaded with the main action. No redundant information. Could be slightly more structured but efficient.

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

Completeness2/5

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

No output schema, so description should explain return value or side effects. It does not mention what happens after execution (e.g., success message, file moved). Optional parameters (copy, date_override) are not addressed in description. Incomplete for a tool with 4 parameters.

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 coverage is 100%, so baseline 3. The description adds the date folder format (YYYY년 MM월 DD일) and clarifies that base_dir is the root folder. However, it does not explain the copy and date_override parameters beyond what the schema provides.

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 action (organize PDFs) and resource (PDF files) into a date folder. It specifies the date format (YYYY년 MM월 DD일). However, it does not distinguish from sibling tools like organize_by_file_date or organize_directory, which could confuse selection.

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?

No guidance on when to use this tool versus alternatives. It does not mention prerequisites, limitations, or conditions under which organizing into today's folder is appropriate compared to other organization strategies.

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. 6 tool updatesv1.0.0
    • First observedget_history
    • First observedlist_date_folders
    • First observedlist_pdfs_in_folder
    • First observedorganize_by_file_date
    • First observedorganize_directory
    • First observedorganize_pdf

TDQS

B3.3/5.0

Scored across 6 tools

Disambiguation4/5

Tools are mostly distinct: organizing by file date vs. today's date, single file vs. directory. However, organize_directory and organize_pdf both move to today's folder, potentially causing confusion.

Naming Consistency4/5

Tools use consistent prefixes: list_ for listing, organize_ for actions, get_history for history. Minor inconsistency between get and list is acceptable.

Tool Count4/5

6 tools is appropriate for a PDF organizer, covering key operations without being excessive.

Completeness3/5

Core organization and viewing workflows are covered, but missing undo/revert or manual file manipulation features.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    A comprehensive tool server for reading, merging, and extracting content from PDF files via local paths or direct URLs. It enables metadata retrieval, regex searching, and page-specific text extraction with built-in caching and workspace-restricted security.
    9
    5,748 PyPI
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables PDF file manipulation including merging, splitting, extracting pages, extracting text, excluding pages, and reordering pages.
    33 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to analyze, rename, categorize, and organize local documents using OCR, metadata extraction, and batch processing, with preview mode and undo support.
    1
    MIT