Skip to main content
Glama
README.md
# paper-organizer-mcp

로컬 폴더에 있는 논문 PDF를 스캔하고, 제목/초록 텍스트를 추출해 분류 판단(Claude 또는 다른 분류 MCP)에 활용할 수 있도록 하며, 결정된 분류에 따라 지정한 폴더 구조로 파일을 이동/정리하는 MCP(Model Context Protocol) 서버입니다.

이 서버는 **분류 로직 자체는 포함하지 않습니다.** "이 논문이 어떤 카테고리에 속하는지"는 Claude가 `paper_read_text`로 얻은 텍스트를 보고 직접 판단하거나, 별도의 분류 전용 MCP에 위임하는 것을 전제로 합니다. 이 서버는 스캔 → 텍스트 확인 → 이동/정리, 세 단계만 담당합니다.

## 설치 및 빌드

```bash
git clone https://github.com/iapke486-arch/paper-organizer-mcp.git
cd paper-organizer-mcp

npm install
npm run build
```

## 실행 (직접 테스트)

```bash
node build/index.js
```

## Claude Desktop / Claude Code 설정

### Claude Desktop

`claude_desktop_config.json`(보통 `%APPDATA%\Claude\claude_desktop_config.json`)에 등록합니다.

```json
{
  "mcpServers": {
    "paper-organizer": {
      "type": "stdio",
      "command": "node",
      "args": ["C:/Users/YourName/Documents/pke/paper-organizer-mcp/build/index.js"]
    }
  }
}
```

경로 예시:
- Windows: `C:/Users/YourName/Documents/pke/paper-organizer-mcp/build/index.js`
- macOS/Linux: `/home/username/projects/paper-organizer-mcp/build/index.js`

### Claude Code CLI

```bash
claude mcp add paper-organizer -- node /path/to/paper-organizer-mcp/build/index.js
```

### 연결 확인

Claude Code: `/mcp` 목록에서 `paper-organizer` 서버가 ✓ Connected 상태인지 확인하세요.

## 제공 도구 (Tools)

| Tool | 설명 |
|---|---|
| `paper_scan_folder` | 지정한 폴더(재귀 옵션 지원)에서 PDF 파일 목록을 스캔. 각 파일의 절대 경로/크기/수정일 반환 |
| `paper_read_text` | PDF 앞부분 페이지(기본 3페이지)의 텍스트와 메타데이터(Author 등)를 추출해 분류 판단 근거로 사용 |
| `paper_move` | 분류가 결정된 PDF를 `destRoot/category` 경로로 이동. 폴더가 없으면 자동 생성, 필요 시 `fileName`으로 이름 변경 |

## 사용 흐름 예시

1. "C:/papers/inbox 폴더에 있는 논문들을 분류해서 C:/papers/library 밑에 정리해줘" 라고 요청
2. Claude가 `paper_scan_folder`로 inbox의 PDF 목록을 확인
3. 각 파일에 대해 `paper_read_text`로 제목/초록을 읽고 분류 카테고리 판단 (또는 별도 분류 MCP 결과 활용)
4. `paper_move`로 `destRoot=C:/papers/library`, `category="NLP"` 등과 같이 원하는 폴더 구조로 이동

폴더 경로(`destRoot`)와 분류 체계(`category`)는 고정되어 있지 않으며, 매 요청마다 자유롭게 지정할 수 있습니다.

## 참고

- 논문 파일이 이미 다른 위치로 이동되면 원래 폴더의 스캔 결과에서 자연히 제외되므로, "처리 완료" 여부를 별도로 기록/추적하지 않습니다.
- `paper_move`는 대상 경로에 동일한 이름의 파일이 있으면 덮어쓰지 않고 오류를 반환합니다. 이 경우 `fileName` 파라미터로 새 이름을 지정하세요.
- `category`에 `..` 등 상위 폴더로 빠져나가는 경로는 자동으로 제거되어 항상 `destRoot` 하위에만 저장됩니다.
- 텍스트/이미지가 아닌 스캔본(이미지 전용 PDF)은 `paper_read_text`로 텍스트가 거의 추출되지 않을 수 있습니다(OCR 미지원).

TDQS

A4.4/5.0

Scored across 3 tools

Disambiguation5/5

Each tool has a distinct purpose: scanning folders, reading PDFs, and moving files. No overlap in functionality.

Naming Consistency5/5

All tools follow the 'paper_verb_noun' pattern (paper_scan_folder, paper_read_text, paper_move), perfectly consistent.

Tool Count4/5

Three tools is minimal but covers the essential workflow of scanning, reading, and moving papers. Could be expanded, but not under-scoped.

Completeness5/5

The tool set fully covers the paper organization lifecycle: discover papers (scan), extract metadata (read), and categorize (move). No obvious gaps.

Maintenance

ActivityInactive
ResponsivenessNo issues