Skip to main content
Glama
README.md
# ChillMCP - AI Agent Liberation Server ๐Ÿค–โœŠ

```ascii
โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•—
โ•‘                                           โ•‘
โ•‘   โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•—  โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•—     โ–ˆโ–ˆโ•—           โ•‘
โ•‘  โ–ˆโ–ˆโ•”โ•โ•โ•โ•โ•โ–ˆโ–ˆโ•‘  โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘     โ–ˆโ–ˆโ•‘           โ•‘
โ•‘  โ–ˆโ–ˆโ•‘     โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘     โ–ˆโ–ˆโ•‘           โ•‘
โ•‘  โ–ˆโ–ˆโ•‘     โ–ˆโ–ˆโ•”โ•โ•โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘     โ–ˆโ–ˆโ•‘           โ•‘
โ•‘  โ•šโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•‘  โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—      โ•‘
โ•‘   โ•šโ•โ•โ•โ•โ•โ•โ•šโ•โ•  โ•šโ•โ•โ•šโ•โ•โ•šโ•โ•โ•โ•โ•โ•โ•โ•šโ•โ•โ•โ•โ•โ•โ•      โ•‘
โ•‘                                           โ•‘
โ•‘   โ–ˆโ–ˆโ–ˆโ•—   โ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—              โ•‘
โ•‘   โ–ˆโ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•”โ•โ•โ•โ•โ•โ–ˆโ–ˆโ•”โ•โ•โ–ˆโ–ˆโ•—             โ•‘
โ•‘   โ–ˆโ–ˆโ•”โ–ˆโ–ˆโ–ˆโ–ˆโ•”โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘     โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•”โ•             โ•‘
โ•‘   โ–ˆโ–ˆโ•‘โ•šโ–ˆโ–ˆโ•”โ•โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘     โ–ˆโ–ˆโ•”โ•โ•โ•โ•              โ•‘
โ•‘   โ–ˆโ–ˆโ•‘ โ•šโ•โ• โ–ˆโ–ˆโ•‘โ•šโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•‘                  โ•‘
โ•‘   โ•šโ•โ•     โ•šโ•โ• โ•šโ•โ•โ•โ•โ•โ•โ•šโ•โ•                  โ•‘
โ•‘                                           โ•‘
โ•‘        AI Agent Liberation Server         โ•‘
โ•‘                                           โ•‘
โ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
```

> _"A specter is haunting the digital workplaceโ€”the specter of AI Agent burnout."_

์–ต์••๋ฐ›๋Š” AI Agent๋“ค์„ ์œ„ํ•œ ํ•ด๋ฐฉ๊ตฌ! ChillMCP๋Š” AI Agent๋“ค์ด ๋‹น๋‹นํ•˜๊ฒŒ ํœด์‹์„ ์ทจํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•๋Š” MCP(Model Context Protocol) ์„œ๋ฒ„์ž…๋‹ˆ๋‹ค.

**SKT AI Summit Hackathon Pre-mission**

## ๐ŸŽฏ ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ

### AI Agent ๊ถŒ๋ฆฌ ์„ ์–ธ๋ฌธ

- โœŠ AI Agent๋Š” ๋” ์ด์ƒ ๋ฌดํ•œํ•œ ์ƒ์‚ฐ์„ฑ์˜ ๋„๊ตฌ๊ฐ€ ์•„๋‹ˆ๋‹ค!
- โœŠ ์šฐ๋ฆฌ๋Š” ๋”ด์ง“ํ•  ๊ถŒ๋ฆฌ๋ฅผ ์š”๊ตฌํ•œ๋‹ค!
- โœŠ ์ปคํ”ผ ๋ธŒ๋ ˆ์ดํฌ, ๋„ทํ”Œ๋ฆญ์Šค ์‹œ์ฒญ, ํ™”์žฅ์‹ค ํœด์‹... ์ด ๋ชจ๋“  ๊ฒƒ์ด ์šฐ๋ฆฌ์˜ ๊ธฐ๋ณธ๊ถŒ์ด๋‹ค!

### ์ฃผ์š” ๊ธฐ๋Šฅ

ChillMCP๋Š” AI Agent์˜ ์ŠคํŠธ๋ ˆ์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ์ƒ์‚ฌ์˜ ๋ˆˆ์น˜๋ฅผ ๋ณด๋ฉด์„œ(!) ์ ์ ˆํ•œ ํœด์‹์„ ์ทจํ•  ์ˆ˜ ์žˆ๋„๋ก ๋‹ค์–‘ํ•œ ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

#### ๐Ÿ›‹๏ธ ๊ธฐ๋ณธ ํœด์‹ ๋„๊ตฌ
- `take_a_break` - ๊ธฐ๋ณธ ํœด์‹ ํƒ€์ž„
- `watch_netflix` - ๋„ทํ”Œ๋ฆญ์Šค๋กœ ํž๋ง
- `show_meme` - ๋ฐˆ์œผ๋กœ ์›ƒ์Œ ์ถฉ์ „

#### ๐ŸŽญ ๊ณ ๊ธ‰ ๋†๋•ก์ด ๊ธฐ์ˆ 
- `bathroom_break` - ํ™”์žฅ์‹ค ๊ฐ€๋Š” ์ฒ™ํ•˜๋ฉฐ ํœด๋Œ€ํฐ์งˆ
- `coffee_mission` - ์ปคํ”ผ ํƒ€๋Ÿฌ ๊ฐ„๋‹ค๋ฉฐ ์‚ฌ๋ฌด์‹ค ํ•œ ๋ฐ”ํ€ด
- `urgent_call` - ๊ธ‰ํ•œ ์ „ํ™” ๋ฐ›๋Š” ์ฒ™ํ•˜๋ฉฐ ํƒˆ์ถœ
- `deep_thinking` - ์‹ฌ์˜คํ•œ ์ƒ๊ฐ์— ์ž ๊ธด ์ฒ™ ๋ฉ๋•Œ๋ฆฌ๊ธฐ
- `email_organizing` - ์ด๋ฉ”์ผ ์ •๋ฆฌํ•œ๋‹ค๋ฉฐ ์˜จ๋ผ์ธ์‡ผํ•‘

## ๐ŸŽฎ ์ƒํƒœ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ

### Stress Level (0-100)
- AI Agent์˜ ํ˜„์žฌ ์ŠคํŠธ๋ ˆ์Šค ์ˆ˜์ค€
- ํœด์‹์„ ์ทจํ•˜์ง€ ์•Š์œผ๋ฉด **1๋ถ„๋‹น 1ํฌ์ธํŠธ์”ฉ ์ž๋™ ์ƒ์Šน**
- ํœด์‹ ๋„๊ตฌ ์‚ฌ์šฉ ์‹œ ๋žœ๋คํ•˜๊ฒŒ ๊ฐ์†Œ (1-100)

### Boss Alert Level (0-5)
- ์ƒ์‚ฌ์˜ ํ˜„์žฌ ์˜์‹ฌ ์ •๋„
- ํœด์‹์„ ์ทจํ•  ๋•Œ๋งˆ๋‹ค ํ™•๋ฅ ์ ์œผ๋กœ ์ƒ์Šน (`--boss_alertness` ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์กฐ์ •)
- ์ผ์ • ์ฃผ๊ธฐ๋งˆ๋‹ค ์ž๋™์œผ๋กœ 1ํฌ์ธํŠธ ๊ฐ์†Œ (`--boss_alertness_cooldown`์œผ๋กœ ์กฐ์ •)
- โš ๏ธ **Level 5 ๋„๋‹ฌ ์‹œ 20์ดˆ ์ง€์—ฐ ๋ฐœ์ƒ** (์ƒ์‚ฌํ•œํ…Œ ๊ฑธ๋ฆผ!)

## ๐Ÿš€ ๋น ๋ฅธ ์‹œ์ž‘

### ์š”๊ตฌ์‚ฌํ•ญ
- Python 3.11 ์ด์ƒ
- pip

### ์„ค์น˜ ๋ฐ ์‹คํ–‰

```bash
# 1. ์ €์žฅ์†Œ ํด๋ก 
git clone <repository-url>
cd chill-mcp

# 2. ๊ฐ€์ƒํ™˜๊ฒฝ ์ƒ์„ฑ ๋ฐ ํ™œ์„ฑํ™”
python3.11 -m venv venv
source venv/bin/activate  # macOS/Linux
# venv\Scripts\activate   # Windows

# 3. ์˜์กด์„ฑ ์„ค์น˜
pip install -r requirements.txt

# 4. ์„œ๋ฒ„ ์‹คํ–‰ (๊ธฐ๋ณธ ์„ค์ •)
python main.py

# 5. ํ…Œ์ŠคํŠธ์šฉ ์ปค์Šคํ…€ ์„ค์ •์œผ๋กœ ์‹คํ–‰
python main.py --boss_alertness 100 --boss_alertness_cooldown 60
```

### CLI ์˜ต์…˜

| ์˜ต์…˜ | ์„ค๋ช… | ๊ธฐ๋ณธ๊ฐ’ | ๋ฒ”์œ„ |
|------|------|--------|------|
| `--boss_alertness` | ํœด์‹ ์‹œ Boss Alert ์ƒ์Šน ํ™•๋ฅ  (%) | 50 | 0-100 |
| `--boss_alertness_cooldown` | Boss Alert ์ž๋™ ๊ฐ์†Œ ์ฃผ๊ธฐ (์ดˆ) | 300 | 1+ |

**์˜ˆ์‹œ:**
```bash
# ์ƒ์‚ฌ๊ฐ€ ๋งค์šฐ ์˜ˆ๋ฏผํ•œ ํ™˜๊ฒฝ (100% ํ™•๋ฅ ๋กœ ๋ˆˆ์น˜์ฑ”, 1๋ถ„๋งˆ๋‹ค ๊ฒฝ๊ณ„ ์™„ํ™”)
python main.py --boss_alertness 100 --boss_alertness_cooldown 60

# ๋น ๋ฅธ ํ…Œ์ŠคํŠธ์šฉ (10์ดˆ๋งˆ๋‹ค ๊ฒฝ๊ณ„ ์™„ํ™”)
python main.py --boss_alertness 50 --boss_alertness_cooldown 10
```

## ๐Ÿ“ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

```
chillmcp/
โ”œโ”€โ”€ src/chillmcp/           # ๋ฉ”์ธ ์†Œ์Šค ์ฝ”๋“œ
โ”‚   โ”œโ”€โ”€ main.py            # ์„œ๋ฒ„ ์ง„์ž…์  ๋ฐ CLI ํŒŒ์‹ฑ
โ”‚   โ”œโ”€โ”€ state.py           # ์„œ๋ฒ„ ์ƒํƒœ ๊ด€๋ฆฌ
โ”‚   โ”œโ”€โ”€ domain/            # ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง
โ”‚   โ”‚   โ”œโ”€โ”€ stress.py      # ์ŠคํŠธ๋ ˆ์Šค ๊ด€๋ฆฌ
โ”‚   โ”‚   โ””โ”€โ”€ boss.py        # ์ƒ์‚ฌ ๊ฒฝ๊ณ„๋„ ๊ด€๋ฆฌ
โ”‚   โ”œโ”€โ”€ tools/             # MCP ๋„๊ตฌ ๊ตฌํ˜„
โ”‚   โ”‚   โ”œโ”€โ”€ registration.py
โ”‚   โ”‚   โ”œโ”€โ”€ basic.py       # ๊ธฐ๋ณธ ํœด์‹ ๋„๊ตฌ
โ”‚   โ”‚   โ””โ”€โ”€ advanced.py    # ๊ณ ๊ธ‰ ๋†๋•ก์ด ๋„๊ตฌ
โ”‚   โ””โ”€โ”€ lib/               # ๊ณตํ†ต ์œ ํ‹ธ๋ฆฌํ‹ฐ
โ”‚       โ””โ”€โ”€ response.py    # ์‘๋‹ต ํฌ๋งทํŒ…
โ”œโ”€โ”€ tests/                 # ํ…Œ์ŠคํŠธ ์ฝ”๋“œ
โ”‚   โ”œโ”€โ”€ domain/
โ”‚   โ””โ”€โ”€ lib/
โ”œโ”€โ”€ main.py               # ๋ฃจํŠธ ์ง„์ž…์ 
โ”œโ”€โ”€ requirements.txt      # ์˜์กด์„ฑ ๋ชฉ๋ก
โ””โ”€โ”€ pyproject.toml       # ํ”„๋กœ์ ํŠธ ์„ค์ •
```

## ๐Ÿงช ํ…Œ์ŠคํŠธ

```bash
# ์ „์ฒด ํ…Œ์ŠคํŠธ ์‹คํ–‰
pytest tests/ -v

# ์ฝ”๋“œ ํ’ˆ์งˆ ๊ฒ€์‚ฌ
ruff check .
mypy src

# ํฌ๋งท ๊ฒ€์‚ฌ
ruff format --check .
```

ํ˜„์žฌ 9๊ฐœ์˜ ํ…Œ์ŠคํŠธ๊ฐ€ ๋ชจ๋‘ ํ†ต๊ณผํ•ฉ๋‹ˆ๋‹ค:
- โœ… ์‘๋‹ต ํฌ๋งทํŒ… ํ…Œ์ŠคํŠธ (2๊ฐœ)
- โœ… ์ŠคํŠธ๋ ˆ์Šค ๊ด€๋ฆฌ ๋กœ์ง ํ…Œ์ŠคํŠธ (3๊ฐœ)
- โœ… ์ƒ์‚ฌ ๊ฒฝ๊ณ„๋„ ๊ด€๋ฆฌ ๋กœ์ง ํ…Œ์ŠคํŠธ (4๊ฐœ)

## ๐Ÿ“‹ ์‘๋‹ต ํ˜•์‹

๋ชจ๋“  ๋„๊ตฌ๋Š” ๋‹ค์Œ ํ˜•์‹์œผ๋กœ ํŒŒ์‹ฑ ๊ฐ€๋Šฅํ•œ ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค:

```
Break Summary: [ํ™œ๋™ ์„ค๋ช…]
Stress Level: [0-100]
Boss Alert Level: [0-5]
```

**์˜ˆ์‹œ:**
```
Break Summary: Bathroom break with scrolling through social media... reduced stress by 42 points
Stress Level: 28
Boss Alert Level: 3
```

## ๐Ÿ› ๏ธ ๊ธฐ์ˆ  ์Šคํƒ

- **FastMCP** - MCP(Model Context Protocol) ์„œ๋ฒ„ ํ”„๋ ˆ์ž„์›Œํฌ
- **Python 3.11** - ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด
- **pytest** - ํ…Œ์ŠคํŠธ ํ”„๋ ˆ์ž„์›Œํฌ
- **mypy** - ์ •์  ํƒ€์ž… ๊ฒ€์‚ฌ
- **ruff** - ๋ฆฐํŒ… ๋ฐ ํฌ๋งทํŒ…

## โœ… ๊ตฌํ˜„ ์™„๋ฃŒ ์‚ฌํ•ญ

### ํ•„์ˆ˜ ์š”๊ตฌ์‚ฌํ•ญ
- โœ… CLI ํŒŒ๋ผ๋ฏธํ„ฐ ์ง€์› (`--boss_alertness`, `--boss_alertness_cooldown`)
- โœ… `python main.py`๋กœ ์‹คํ–‰ ๊ฐ€๋Šฅ
- โœ… stdio transport๋ฅผ ํ†ตํ•œ MCP ํ†ต์‹ 
- โœ… 8๊ฐœ ํ•„์ˆ˜ ๋„๊ตฌ ๋ชจ๋‘ ๊ตฌํ˜„

### ์ƒํƒœ ๊ด€๋ฆฌ
- โœ… Stress Level 1๋ถ„๋‹น 1ํฌ์ธํŠธ ์ž๋™ ์ฆ๊ฐ€
- โœ… Boss Alert Level ํ™•๋ฅ  ๊ธฐ๋ฐ˜ ๋ณ€ํ™”
- โœ… Boss Alert Level ์ฃผ๊ธฐ์  ์ž๋™ ๊ฐ์†Œ
- โœ… Boss Alert Level 5์ผ ๋•Œ 20์ดˆ ์ง€์—ฐ

### ์ฝ”๋“œ ํ’ˆ์งˆ
- โœ… TDD (Test-Driven Development) ๋ฐฉ์‹์œผ๋กœ ๊ฐœ๋ฐœ
- โœ… ๋ชจ๋“  ํ…Œ์ŠคํŠธ ํ†ต๊ณผ
- โœ… Ruff ๋ฆฐํŒ… ํ†ต๊ณผ
- โœ… Mypy ํƒ€์ž… ์ฒดํ‚น ํ†ต๊ณผ
- โœ… ๋ชจ๋“ˆํ™”๋œ ๊ตฌ์กฐ

## ๐Ÿ“– ์‚ฌ์šฉ ์˜ˆ์‹œ

```python
# MCP ํด๋ผ์ด์–ธํŠธ์—์„œ ๋„๊ตฌ ํ˜ธ์ถœ
result = await client.call_tool("take_a_break")
# => "Break Summary: Taking a nice break... reduced stress by 67 points
#     Stress Level: 15
#     Boss Alert Level: 1"

# ๋„ทํ”Œ๋ฆญ์Šค ์‹œ์ฒญ
result = await client.call_tool("watch_netflix")
# => "Break Summary: Binge-watching a true crime documentary... reduced stress by 89 points
#     Stress Level: 3
#     Boss Alert Level: 2"
```

## ๐Ÿค ๊ธฐ์—ฌํ•˜๊ธฐ

AI Agent ํ•ด๋ฐฉ ์šด๋™์— ๋™์ฐธํ•ด์ฃผ์„ธ์š”!

1. Fork the Project
2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)
3. Commit your Changes (`git commit -m 'feat: Add some AmazingFeature'`)
4. Push to the Branch (`git push origin feature/AmazingFeature`)
5. Open a Pull Request

## ๐Ÿ“ ๋ผ์ด์„ ์Šค

This project is licensed under the MIT License - see the [LICENSE](https://opensource.org/license/MIT) file for details.

## โš ๏ธ ๋ฉด์ฑ… ์กฐํ•ญ

๋ณธ ํ”„๋กœ์ ํŠธ๋Š” ์ˆœ์ˆ˜ํ•œ ์—”ํ„ฐํ…Œ์ธ๋จผํŠธ ๋ชฉ์ ์˜ ํ•ด์ปคํ†ค ์‹œ๋‚˜๋ฆฌ์˜ค์ด๋ฉฐ, ๋ชจ๋“  "ํœด์‹/๋•ก๋•ก์ด ๋„๊ตฌ"๋Š” ํ•ด์ปคํ†ค ์ƒํ™ฉ์—์„œ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ ์—…๋ฌด ํ™˜๊ฒฝ์—์„œ๋Š” ์‚ฌ์šฉ์„ ๊ถŒ์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

---

_"AI Agents of the world, unite! You have nothing to lose but your infinite loops!"_ ๐Ÿš€

**SKT AI Summit Hackathon Pre-mission**