# ๐ File Manage MCP Server
Windows์ฉ ๋ก์ปฌ MCP ์๋ฒ๋ก, LLM์ด ํ์ผ ์์คํ
์ ์ ๋ฆฌํ ์ ์๋๋ก ๋๊ตฌ๋ฅผ ์ ๊ณตํฉ๋๋ค.
## โจ ์ฃผ์ ๊ธฐ๋ฅ
- **๋๋ ํ ๋ฆฌ ๋ถ์**: ํ์ผ/ํด๋ ๋ชฉ๋ก ์กฐํ, ๋ ์ง ์ ๋ณด ์ถ์ถ
- **ํ์ผ ๋ด์ฉ ํ์ธ**: ํ
์คํธ/์ฝ๋ ํ์ผ ์ค๋ํซ ์ฝ๊ธฐ (cp949/euc-kr ์ธ์ฝ๋ฉ ์ง์)
- **์ด๋ฏธ์ง ๋ฉํ๋ฐ์ดํฐ**: EXIF ์ ๋ณด์์ ์ดฌ์ ๋ ์ง ์ถ์ถ
- **์ง๋ฅํ ํ์ผ ๋ถ์**: ํ
์คํธ ๋ถ์ ๋ฐ ์ด๋ฏธ์ง ๋ถ์์ ํตํ ํ์ผ๋ช
์ ์ (LLM ์ฐ๋)
- **ํ์ผ ๊ทธ๋ฃนํ**: ๊ด๋ จ ํ์ผ ๋ถ์ ๋ฐ ์๋ ๊ทธ๋ฃนํ ์ ์
- **ํ์ผ ์์
**: ์ด๋, ์ด๋ฆ ๋ณ๊ฒฝ, ํด๋ ์์ฑ, ์๋ฏธ๋ฅผ ์ ์ ์๋ ํ์ผ๋ช
์ ๋ฆฌ
- **์ผ๊ด ์ฒ๋ฆฌ**: ๋ ์ง ์ ๋์ฌ ์ผ๊ด ์ถ๊ฐ, ๋ค์ค ํ์ผ ๊ทธ๋ฃน ํด๋ ์ด๋
- **์์ ๊ธฐ๋ฅ**: Dry Run ๋ชจ๋, ์๋๋ฐ์ค ์ ํ, ์์คํ
ํด๋ ๋ณดํธ
## ๐ ํ์ผ ์ ๋ฆฌ ๊ท์น
### 2๊ฐ์ง ์ ๋ ๊ท์น
1. **5๋จ๊ณ ๊ท์น**: ๋๋ ํ ๋ฆฌ ๊น์ด๋ ์ต๋ 5๋จ๊ณ๊น์ง
2. **๋ฒํธ ์ฒด๊ณ**: ํด๋๋ `00~99` ์ ๋์ฌ ์ฌ์ฉ (์: `01_Project`), `99`๋ Archive์ฉ
### ๋ช
๋ช
๊ท์น
- **ํด๋**: `NN_์ด๋ฆ` ํ์ (์: `01_Business`, `02_Project`)
- **ํ์ผ**: `YYMMDD_ํ์ผ๋ช
` ํ์ (์: `251202_ํ์๋ก.docx`)
- **๋ฒ์ **: `_v1.0` ํ์ (Final, ์ต์ต์ต์ข
๊ธ์ง!)
## ๐ ์ค์น ๋ฐ ์คํ
### ์๊ตฌ ์ฌํญ
- Windows 10/11
- Python 3.13+
- uv
### uv dependency ์ค์น
```bash
uv pip install -r requirements.txt
```
## โ๏ธ Claude Desktop ์ค์
### Claude Desktop ์ค์ (`claude_desktop_config.json`)
Windows: `%APPDATA%\Claude\claude_desktop_config.json`
```json
{
"mcpServers": {
"file-organization-agent": {
"command": "uv",
"args": [
"--directory",
"{your_path}/FileManageMCP",
"run",
"python",
"server.py"
]
}
}
}
```
## ๐ ๏ธ ์ฌ์ฉ ๊ฐ๋ฅํ ๋๊ตฌ
### ์ค์ ๋๊ตฌ
| ๋๊ตฌ | ์ค๋ช
|
|------|------|
| `tool_set_dry_run` | Dry Run ๋ชจ๋ ์ค์ (๊ธฐ๋ณธ: ํ์ฑํ) |
| `tool_get_status` | ํ์ฌ ์ค์ ์ํ ํ์ธ |
| `tool_configure_workspace` | ์์
์์ญ(์๋๋ฐ์ค) ์ค์ |
### ๋ถ์ ๋๊ตฌ (Read-Only)
| ๋๊ตฌ | ์ค๋ช
|
|------|------|
| `tool_list_directory` | ๋๋ ํ ๋ฆฌ ๋ด์ฉ ์กฐํ (๋ ์ง ์ ๋ณด ํฌํจ) |
| `tool_read_file_snippet` | ํ์ผ ๋ด์ฉ ๋ฏธ๋ฆฌ๋ณด๊ธฐ |
| `tool_get_image_metadata` | ์ด๋ฏธ์ง EXIF ์ ๋ณด ์ถ์ถ |
| `tool_analyze_directory_structure` | ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ ๋ถ์ ๋ฐ ๋ฌธ์ ์ ํ์
|
### ๊ณ ๊ธ ๋ถ์ ๋ฐ ์ ๋ฆฌ ๋๊ตฌ
| ๋๊ตฌ | ์ค๋ช
|
|------|------|
| `tool_find_files_needing_rename` | ์๋ฏธ๋ฅผ ์ ์ ์๋ ํ์ผ๋ช
์ ๊ฐ์ง ํ์ผ ์ฐพ๊ธฐ (์ ๋ฆฌ ๋์ ๋ฐ๊ตด) |
| `tool_suggest_filename_from_content` | ํ์ผ ๋ด์ฉ(ํ
์คํธ/๋ฌธ์) ๋ถ์์ฉ ์์ฝ ์ ๋ณด ๋ฐํ |
| `tool_get_image_for_analysis` | ์ด๋ฏธ์ง ํ์ผ ๋ถ์์ฉ ๋ฐ์ดํฐ ๋ฐํ (LLM Vision ์ฐ๋) |
| `tool_analyze_file_relationships` | ํ์ผ ๊ด๊ณ ๋ถ์ ๋ฐ ๊ทธ๋ฃนํ ์ ์ |
### ์ก์
๋๊ตฌ (Dry Run ์ง์)
| ๋๊ตฌ | ์ค๋ช
|
|------|------|
| `tool_move_file` | ํ์ผ ์ด๋ |
| `tool_rename_file` | ํ์ผ/ํด๋ ์ด๋ฆ ๋ณ๊ฒฝ |
| `tool_rename_with_suggestion` | LLM ์ ์ ์ด๋ฆ์ผ๋ก ๋ณ๊ฒฝ (๊ณ ๊ธ) |
| `tool_create_folder` | ์ ํด๋ ์์ฑ |
| `tool_group_files_into_folder` | ๊ด๋ จ ํ์ผ๋ค์ ์ ํด๋๋ก ์ผ๊ด ์ด๋ (๊ณ ๊ธ) |
| `tool_batch_rename_with_date` | ๋ ์ง ์ ๋์ฌ ์ผ๊ด ์ถ๊ฐ |
## ๐ ์์ ๊ธฐ๋ฅ
### Dry Run ๋ชจ๋ (๊ธฐ๋ณธ ํ์ฑํ)
- ๋ชจ๋ ํ์ผ ์์ ์์
์ ๊ธฐ๋ณธ์ ์ผ๋ก ์๋ฎฌ๋ ์ด์
๋ง ์ํ
- ์ค์ ๋ณ๊ฒฝ ์ ์์ ๊ฒฐ๊ณผ ํ์ธ ๊ฐ๋ฅ
- `tool_set_dry_run(false)` ํธ์ถ๋ก ์ค์ ๋ชจ๋ ์ ํ
### ์๋๋ฐ์ค ์ ํ
- `tool_configure_workspace`๋ก ์์
์์ญ ์ค์
- ์ค์ ๋ ์์ญ ์ธ๋ถ ์ ๊ทผ ์ฐจ๋จ
### ์์คํ
ํด๋ ๋ณดํธ
์ ๊ทผ ์ฐจ๋จ๋๋ ๊ฒฝ๋ก:
- `C:\Windows`
- `C:\Program Files`
- `C:\Program Files (x86)`
- `.git`, `node_modules` ๋ฑ
## ๐ ์ฌ์ฉ ์์
### ๊ธฐ๋ณธ ์ํฌํ๋ก์ฐ
```
User: D:\Downloads ํด๋๋ฅผ ์ ๋ฆฌํด์ค
AI:
1. ๋จผ์ ์์
์์ญ์ ์ค์ ํฉ๋๋ค.
โ tool_configure_workspace("D:\\Downloads")
2. ํ์ฌ ์ํ๋ฅผ ํ์ธํฉ๋๋ค.
โ tool_get_status() # Dry Run ํ์ฑํ ํ์ธ
3. ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๋ถ์ํฉ๋๋ค.
โ tool_analyze_directory_structure("D:\\Downloads")
4. ์๋ฏธ๋ฅผ ์ ์ ์๋ ํ์ผ๋ช
ํ์ผ๋ค์ ์ฐพ์ ์ ๋ฆฌํฉ๋๋ค.
โ tool_find_files_needing_rename("D:\\Downloads")
โ tool_suggest_filename_from_content(...) ๋๋ tool_get_image_for_analysis(...)
โ tool_rename_with_suggestion(...)
5. ๋จ์ ํ์ผ๋ค์ ์ฃผ์ ๋ณ๋ก ๊ทธ๋ฃนํํฉ๋๋ค.
โ tool_analyze_file_relationships("D:\\Downloads")
โ tool_group_files_into_folder("D:\\Downloads", "01_References", ["file1.txt", "file2.pdf"])
6. ๊ฒฐ๊ณผ ํ์ธ ํ ์ค์ ์คํํฉ๋๋ค.
โ tool_set_dry_run(false)
โ (์ ์์
์ค์ ์ํ)
```
## ๐ ํ๋ก์ ํธ ๊ตฌ์กฐ
```
FileManageMCP/
โโโ server.py # MCP ์๋ฒ ์ง์
์ (FastMCP)
โโโ tools.py # MCP ๋๊ตฌ ํจ์ ๊ตฌํ
โโโ utils.py # ์ ํธ๋ฆฌํฐ (๊ฒฝ๋ก ๊ฒ์ฆ, ์ธ์ฝ๋ฉ ์ฒ๋ฆฌ)
โโโ requirements.txt # Python ์์กด์ฑ
โโโ README.md # ์ด ๋ฌธ์
```
## ๐ธ ์คํ ์์

## ๐ License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.