pdf-organizer-mcp
This server automatically organizes PDF files into date-based folders. Here's what it can do:
Organize a single PDF (
organize_pdf) – Move or copy a PDF into a date-named folder (e.g.,2025-06-12) under a root directory, with an optional date override.Batch organize a directory (
organize_directory) – Move or copy all PDFs in a directory into a today's (or overridden) date folder, with optional recursive subdirectory scanning.Organize by file date (
organize_by_file_date) – Sort PDFs into folders based on each file's own modification or creation date, rather than today's date.List date folders (
list_date_folders) – Display all date-named folders in a root directory along with the PDF count in each.List PDFs in a folder (
list_pdfs_in_folder) – View PDFs inside a specific date folder; supportsYYYY-MM-DDor"오늘"(today).View history (
get_history) – Retrieve a configurable number of recent organization actions.
Key features: automatic folder creation, duplicate filename handling (file.pdf → file(1).pdf), copy mode to preserve originals, and persistent history stored in .air/data.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@pdf-organizer-mcpOrganize ~/Downloads/report.pdf into ~/Documents/PDFs with today's date"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
pdf-organizer-mcp
Air 프레임워크(https://docs.airmcp.dev/) 로 만든
PDF 파일을 날짜별 폴더로 자동 정리하는 MCP 서버입니다.
다운로드한 PDF가 쌓일 때마다 지정한 기준에 걸맞는 날짜 형식의 폴더에 깔끔하게 분류됩니다.
설치 및 실행
npm install
npm run buildRelated 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가지
툴 이름 | 설명 |
| PDF 파일 1개를 오늘 날짜 폴더로 이동/복사 |
| 디렉토리 내 모든 PDF를 일괄 정리 |
| 날짜 폴더 목록 + PDF 개수 조회 |
| 특정 날짜 폴더의 PDF 목록 조회 |
| 최근 정리 이력 조회 |
사용 예시 (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
파라미터 | 필수 | 설명 |
| ✅ | 정리할 PDF 경로 |
| ✅ | 날짜 폴더를 만들 루트 디렉토리 |
| ❌ | true이면 복사 (기본: 이동) |
| ❌ | 날짜 직접 지정 |
organize_directory
파라미터 | 필수 | 설명 |
| ✅ | PDF들이 있는 소스 디렉토리 |
| ✅ | 날짜 폴더를 만들 루트 디렉토리 |
| ❌ | true이면 복사 (기본: 이동) |
| ❌ | 날짜 직접 지정 |
| ❌ | 하위 폴더 탐색 여부 (기본: false) |
폴더 구조 예시
~/Documents/PDFs/
├── 2025년 06월 10일/
│ ├── invoice.pdf
│ └── contract.pdf
├── 2025년 06월 11일/
│ └── report.pdf
└── 2025년 06월 12일/
├── manual.pdf
└── manual(1).pdf ← 중복 파일명 자동 처리특징
📁 자동 폴더 생성: 날짜 폴더가 없으면 자동으로 생성
🔄 중복 파일명 처리:
file.pdf→file(1).pdf→file(2).pdf📝 이력 저장:
.air/data에 정리 이력 영구 보존📅 날짜 오버라이드: 과거/미래 날짜 폴더 지정 가능
🔁 복사 모드: 원본 유지하면서 정리 가능
Available Tools
6 toolsget_historyB
최근 PDF 정리 이력을 조회합니다.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | 조회할 최대 건수 (기본: 50) |
TDQS
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.
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.
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.
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.
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.
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 파일 수를 조회합니다.
| Name | Required | Description | Default |
|---|---|---|---|
| base_dir | Yes | 날짜 폴더들이 있는 루트 디렉토리 |
TDQS
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.
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.
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.
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.
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.
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 파일 목록을 조회합니다.
| Name | Required | Description | Default |
|---|---|---|---|
| base_dir | Yes | 루트 디렉토리 | |
| date | Yes | 조회할 날짜 (YYYY-MM-DD 또는 "오늘") |
TDQS
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.
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.
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.
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.
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.
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일" 폴더
| Name | Required | Description | Default |
|---|---|---|---|
| source_dir | Yes | PDF들이 있는 소스 디렉토리 | |
| base_dir | Yes | 날짜 폴더를 만들 루트 디렉토리 | |
| date_type | No | 기준 날짜 종류: "modified"(수정일, 기본) 또는 "created"(생성일) | |
| copy | No | true이면 복사, false(기본)이면 이동 | |
| recursive | No | 하위 폴더까지 탐색 여부 (기본: false) |
TDQS
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.
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.
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.
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.
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.
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 파일을 오늘 날짜 폴더로 일괄 정리합니다.
| Name | Required | Description | Default |
|---|---|---|---|
| source_dir | Yes | PDF들이 있는 소스 디렉토리 | |
| base_dir | Yes | 날짜 폴더를 만들 루트 디렉토리 | |
| copy | No | true이면 복사, false(기본)이면 이동 | |
| date_override | No | 날짜를 강제 지정 (YYYY-MM-DD) | |
| recursive | No | 하위 폴더까지 탐색 여부 (기본: false) |
TDQS
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.
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.
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.
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.
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.
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에 정리할 루트 폴더를 지정하세요.
| Name | Required | Description | Default |
|---|---|---|---|
| source_path | Yes | 정리할 PDF 파일의 절대 또는 상대 경로 | |
| base_dir | Yes | 날짜 폴더를 만들 루트 디렉토리 (예: ~/Downloads/PDFs) | |
| copy | No | true이면 복사, false(기본)이면 이동 | |
| date_override | No | 날짜를 강제 지정할 경우 "YYYY-MM-DD" 형식으로 입력 (기본: 오늘) |
TDQS
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.
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.
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.
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.
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.
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.
6 tool updates
v1.0.0- First observed
get_history - First observed
list_date_folders - First observed
list_pdfs_in_folder - First observed
organize_by_file_date - First observed
organize_directory - First observed
organize_pdf
TDQS
Scored across 6 tools
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.
Tools use consistent prefixes: list_ for listing, organize_ for actions, get_history for history. Minor inconsistency between get and list is acceptable.
6 tools is appropriate for a PDF organizer, covering key operations without being excessive.
Core organization and viewing workflows are covered, but missing undo/revert or manual file manipulation features.
Maintenance
Related MCP Connectors
Make any PDF form fillable, fill it from data or documents, read it back, and fax the result.
PDF engagement layer for apps and agents: tracking links, read analytics, and a full PDF toolset.
Convert and compress PDFs and images, redact personal data, and run text and data utilities.
Extract text, tables and metadata from every PDF linked in a dataset, CSV or Google Sheet.
1
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAutomatically organizes files in your Downloads folder by categorizing them into appropriate directories based on file types.6-
- AlicenseAqualityDmaintenanceA 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.95,748 PyPIMIT
- AlicenseNot gradedqualityDmaintenanceEnables PDF file manipulation including merging, splitting, extracting pages, extracting text, excluding pages, and reordering pages.33 npm1MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to analyze, rename, categorize, and organize local documents using OCR, metadata extraction, and batch processing, with preview mode and undo support.1MIT