README.mdβ’5.24 kB
# Meeting Room MCP π’
νμμ€ μμ½ μμ€ν
μ Claude Desktopκ³Ό μ°λνλ MCP (Model Context Protocol) μλ²
## β¨ μ£Όμ κΈ°λ₯
- π **νμμ€ κ²μ**: λ μ§, μκ°, μΈ΅λ³λ‘ μμ½ κ°λ₯ν νμμ€ κ²μ
- π **μμ½ νν© μ‘°ν**: νΉμ νμμ€μ μμ½ νν© νμΈ
- π **μμ½ μμ±**: Claudeλ₯Ό ν΅ν μλ νμμ€ μμ½
- π **SSO μλ λ‘κ·ΈμΈ**: Selenium κΈ°λ° μλ μΈμ¦
## π νλ‘μ νΈ κ΅¬μ‘°
```
meeting-room-mcp/
βββ meeting_room_mcp.py # λ©μΈ MCP μλ²
βββ config.py # μ€μ κ΄λ¦¬
βββ auth/ # μΈμ¦ λͺ¨λ
β βββ login.py # SSO λ‘κ·ΈμΈ
βββ api/ # API λͺ¨λ
β βββ rooms.py # νμμ€ API
β βββ reservations.py # μμ½ API
βββ utils/ # μ νΈλ¦¬ν°
β βββ date_parser.py # λ μ§/μκ° νμ±
β βββ time_checker.py # μκ°λ 체ν¬
βββ setup_project.sh # νλ‘μ νΈ μλ μμ± μ€ν¬λ¦½νΈ
```
## π λΉ λ₯Έ μμ
### 1. νλ‘μ νΈ ν΄λ‘
```bash
git clone https://github.com/your-username/meeting-room-mcp.git
cd meeting-room-mcp
```
### 2. μλ μ€μΉ (Linux/Mac/Git Bash)
```bash
chmod +x setup_project.sh
./setup_project.sh
```
### 3. μλ μ€μΉ (Windows)
```bash
# κ°μνκ²½ μμ±
python -m venv venv
# κ°μνκ²½ νμ±ν
.\venv\Scripts\activate # Windows
# source venv/bin/activate # Linux/Mac
# μμ‘΄μ± μ€μΉ
pip install -r requirements.txt
```
### 4. νκ²½ μ€μ
```bash
# .env.exampleμ 볡μ¬νμ¬ .env μμ±
cp .env.example .env
# .env νμΌ μμ (μ€μ μ 보 μ
λ ₯)
notepad .env # Windows
# nano .env # Linux/Mac
```
### 5. ChromeDriver μ€μΉ
1. Chrome λ²μ νμΈ: `chrome://version`
2. [ChromeDriver λ€μ΄λ‘λ](https://googlechromelabs.github.io/chrome-for-testing/)
3. `chromedriver/` ν΄λμ μ μ₯
4. `.env`μ `CHROMEDRIVER_PATH` κ²½λ‘ μμ
### 6. Claude Desktop μ€μ
`claude_desktop_config.json` νμΌ μμ :
**Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
**Mac**: `~/Library/Application Support/Claude/claude_desktop_config.json`
```json
{
"mcpServers": {
"meeting-room": {
"command": "C:\\path\\to\\venv\\Scripts\\python.exe",
"args": ["-u", "C:\\path\\to\\meeting_room_mcp.py"]
}
}
}
```
### 7. Claude Desktop μ¬μμ
1. Claude Desktop μμ μ’
λ£
2. μ¬μ€ν
3. μ λν μμ
## π¬ μ¬μ© μμ
Claude Desktopμμ λ€μμ²λΌ λ¬Όμ΄λ³΄μΈμ:
```
μ€λ λΆλΉ 7μΈ΅μμ μ€ν 2μ μ΄ν 2μκ° μ¬μ© κ°λ₯ν νμμ€ μ°Ύμμ€
705 νμμ€ λ΄μΌ μμ½ νν© μλ €μ€
λ΄μΌ μ€ν 4μλΆν° 6μκΉμ§ 705 νμμ€ "νλ‘μ νΈ λ¦¬λ·°" μ λͺ©μΌλ‘ μμ½ν΄μ€
```
## π οΈ μ 곡λλ λꡬ
### 1. `search_available_rooms`
**νλΌλ―Έν°:**
- `date`: λ μ§ (μ: "10.24", "2025-10-24")
- `office`: μ¬λ¬΄μ€ (λΆλΉ, λ°©λ°°, κ°μ, ν¨μ²)
- `floor`: μΈ΅ (μ: "7μΈ΅", "12F_A")
- `start_hour`: μμ μκ° (κΈ°λ³Έ: 9)
- `duration`: νμ μκ°(μκ° λ¨μ, κΈ°λ³Έ: 1)
### 2. `get_room_details`
**νλΌλ―Έν°:**
- `room_name`: νμμ€ μ΄λ¦
- `date`: λ μ§
### 3. `create_reservation`
**νλΌλ―Έν°:**
- `room_name`: νμμ€ μ΄λ¦
- `date`: λ μ§
- `start_time`: μμ μκ°
- `end_time`: μ’
λ£ μκ°
- `title`: νμ μ λͺ© (μ ν)
## ποΈ μν€ν
μ²
### μ€ν νλ¦
```
Claude Desktop
β
MCP Server (meeting_room_mcp.py)
β
Auth Module (SSO λ‘κ·ΈμΈ)
β
API Modules (νμμ€/μμ½ API)
β
νμμ€ μμ€ν
(srs.ktds.co.kr)
```
### λ‘κ·ΈμΈ νλ‘μΈμ€
```
ν¬νΈ λ‘κ·ΈμΈ (works.ktds.co.kr)
β
SSO ν ν° μΆμΆ (HTML νμ± λλ λ²νΌ ν΄λ¦)
β
νμμ€ μμ€ν
λ‘κ·ΈμΈ (ssoLoginRoom.do)
β
SESSION μΏ ν€ νλ
β
API νΈμΆ
```
## π λ‘κ·Έ νμΈ
```bash
# νλ‘μ νΈ λ‘κ·Έ
tail -f mcp_debug.log
# Claude Desktop λ‘κ·Έ (Windows)
type %APPDATA%\Claude\logs\mcp.log
# Claude Desktop λ‘κ·Έ (Mac)
tail -f ~/Library/Logs/Claude/mcp.log
```
## π§ λ¬Έμ ν΄κ²°
### λ‘κ·ΈμΈ μ€ν¨
1. `.env` νμΌμ ID/λΉλ°λ²νΈ νμΈ
2. ChromeDriver λ²μ κ³Ό Chrome λ²μ μΌμΉ νμΈ
3. `mcp_debug.log` νμΌ νμΈ
### MCP μλ² μ°κ²° μ λ¨
1. `claude_desktop_config.json` κ²½λ‘ νμΈ
2. Claude Desktop μμ μ¬μμ
3. μ λν μμ
### Import μλ¬
```bash
# PYTHONPATH μ€μ
export PYTHONPATH=/path/to/meeting-room-mcp:$PYTHONPATH
# λλ μμ‘΄μ± μ¬μ€μΉ
pip install -r requirements.txt
```
## π€ κΈ°μ¬νκΈ°
1. Fork the Project
2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)
3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)
4. Push to the Branch (`git push origin feature/AmazingFeature`)
5. Open a Pull Request
## π λΌμ΄μ μ€
μ΄ νλ‘μ νΈλ MIT λΌμ΄μ μ€λ₯Ό λ°λ¦
λλ€.
## π κ°μ¬μ κΈ
- [Model Context Protocol](https://modelcontextprotocol.io/)
- [Anthropic Claude](https://www.anthropic.com/)
- [Selenium](https://www.selenium.dev/)
## π§ λ¬Έμ
νλ‘μ νΈ κ΄λ ¨ λ¬Έμμ¬νμ΄ μμΌμλ©΄ Issueλ₯Ό λ±λ‘ν΄μ£ΌμΈμ.
---