Skip to main content
Glama
README.md
# ๐Ÿ“š AI ๋…์„œ ํ๋ ˆ์ดํ„ฐ & ์ฝ”์น˜ (reading-coach MCP)

์นด์นด์˜ค PlayMCP **AGENTIC PLAYER 10** ์ถœํ’ˆ์šฉ MCP ์„œ๋ฒ„.
์‹œ์นด๊ณ  ํ”Œ๋žœ(๊ทธ๋ ˆ์ดํŠธ๋ถ์Šค) **144์„ **์„ ๊ธฐ๋ฐ˜์œผ๋กœ, ์‚ฌ์šฉ์ž๊ฐ€ ์ฝ์€ ์ฑ…์„ ๊ธฐ์–ตํ•ด **์ปค๋ฆฌํ˜๋Ÿผ์„ ๋‹จ๊ณ„๋ณ„๋กœ ์™„์ฃผ**์‹œํ‚ค๋Š” AI ๋…์„œ ๋™๋ฐ˜์ž.

## ์ฐจ๋ณ„ํ™” (๊ธฐ๋ณธ LLM๊ณผ ์•ˆ ๊ฒน์น˜๋Š” ๋‘ ์ถ•)
1. **ํ๋ ˆ์ด์…˜ ๋ฐ์ดํ„ฐ** โ€” ํ™˜๊ฐ์ด ์•„๋‹Œ ์‹ค์ œ ๋ช…๋ฌธ ์ปค๋ฆฌํ˜๋Ÿผ(์‹œ์นด๊ณ  ํ”Œ๋žœ 144์„ )์—์„œ ์ถ”์ฒœ
2. **์ƒํƒœ(๊ธฐ์–ต)** โ€” ๊ฐœ์ธ ํ† ํฐ์œผ๋กœ ์ฝ์€ ์ฑ…์„ ๊ธฐ์–ต โ†’ "๋งฅ๋ฒ ์Šค ์ฝ์—ˆ์œผ๋‹ˆ ๋‹ค์Œ์€ ํ–„๋ฆฟ"์ฒ˜๋Ÿผ ์ด์–ด์คŒ

> ์ƒํƒœ ์—†๋Š” ๊ธฐ๋ณธ ์ฑ—๋ด‡์€ ๋งค๋ฒˆ ์ถ”์ฒœ์„ ๋ญ‰๋šฑ๊ทธ๋ฆฌ๊ณ  ๋‚ด๊ฐ€ ๋ญ˜ ์ฝ์—ˆ๋Š”์ง€ ์žŠ๋Š”๋‹ค. ์ด ์„œ๋ฒ„๋Š” ๋‘˜ ๋‹ค ํ•ด๊ฒฐํ•œ๋‹ค.

## MCP ๋„๊ตฌ 4์ข…
| ๋„๊ตฌ | ์„ค๋ช… | ํ•ต์‹ฌ ์ธ์ž |
|------|------|-----------|
| `recommend_books` | ์ปค๋ฆฌํ˜๋Ÿผ ์ˆœ์„œ์ƒ ๋‹ค์Œ ์ฝ์„ ์ฑ… ์ถ”์ฒœ | `token?`, `interest?`, `limit?` |
| `log_book` | ์™„๋… ์ฑ… ๊ธฐ๋ก + ์—ฐ์†์ผ(streak) ๊ฐฑ์‹  | `token`, `bookId`/`title`, `rating?` |
| `coaching_note` | ์ฑ… ๋งฅ๋ฝ์— ๋งž์ถ˜ ๋…ํ›„ ์ฝ”์นญ ์งˆ๋ฌธ ๊ณจ๊ฒฉ | `bookId`/`title` |
| `reading_report` | ์ด๋ฒˆ๋‹ฌยท๋ˆ„์ ยท์—ฐ์†์ผยท์—ฐ์ฐจ๋ณ„ ์ง„์ฒ™ยท๋‹ค์Œ์ถ”์ฒœ | `token` |

## ์•„ํ‚คํ…์ฒ˜
- **๊ณต์‹ MCP TypeScript SDK** (`@modelcontextprotocol/sdk`)
- **Streamable HTTP**(stateless) โ€” `POST /mcp`, ํ—ฌ์Šค์ฒดํฌ `GET /health`
- **์‚ฌ์šฉ์ž ์‹๋ณ„ = ๊ฐœ์ธ ํ† ํฐ ์ธ์ž** (์นด์นด์˜ค ๋กœ๊ทธ์ธ ๋ถˆ์š”, PII 0)
- **์ƒํƒœ ์ €์žฅ** = `data/users.json` (๋กœ์ปฌ). ์นด์นด์˜ค ํด๋ผ์šฐ๋“œ ๋ฐฐํฌ ์‹œ `src/store.ts` ์ธํ„ฐํŽ˜์ด์Šค๋งŒ DB๋กœ ๊ต์ฒด

## ์‹คํ–‰
```bash
npm install
npm run dev          # tsx watch (๊ฐœ๋ฐœ)
npm start            # ์„œ๋ฒ„ ๊ตฌ๋™ (๊ธฐ๋ณธ PORT=3000)
node test/smoke.mjs  # 4๊ฐœ ๋„๊ตฌ ์Šค๋ชจํฌ ํ…Œ์ŠคํŠธ (์„œ๋ฒ„ ๋จผ์ € ๋„์šธ ๊ฒƒ)
```

## ๋ฐ์ดํ„ฐ
- `src/data/chicagoPlan.json` โ€” 144๊ถŒ (idยท์—ฐ์ฐจยท์ €์žยท์ƒ๋ชฐยท์ œ๋ชฉยท์›์ œยท๋ฐœ์ทŒ์—ฌ๋ถ€)
- **์ฑ… ๋ณธ๋ฌธ์€ ํฌํ•จํ•˜์ง€ ์•Š์Œ.** ๋ชฉ๋ก(๊ณต๊ฐœ์ •๋ณด) ๊ธฐ๋ฐ˜ ์ถ”์ฒœยท๊ธฐ๋กยท์ฝ”์นญ๋งŒ. ์ถœ์ฒ˜ ํ‘œ๊ธฐ ํ•„์ˆ˜.

## ํ•˜๋“œ ์ œ์•ฝ
- ์š”์…‰ ํ•™์ƒ PII / ์‹ค Firebase **์ ˆ๋Œ€ ์—ฐ๊ฒฐ ๊ธˆ์ง€** (๋…๋ฆฝ ์„œ๋ฒ„ + ์ž์ฒด ๋ฐ์ดํ„ฐ)
- ์ฑ… ๋ณธ๋ฌธ ์ „์žฌ ๊ธˆ์ง€(์ €์ž‘๊ถŒ), ๋ชฉ๋ก ์ถœ์ฒ˜ ํ‘œ๊ธฐ

## TODO (์ œ์ถœ๊นŒ์ง€)
- [ ] ์นด์นด์˜ค ํด๋ผ์šฐ๋“œ endpoint ์ƒ์„ฑยท๋ฐฐํฌ (๊ณต์‹ Notion ๊ฐ€์ด๋“œ)
- [ ] PlayMCP ๊ฐœ๋ฐœ์ž ์ฝ˜์†” ๋“ฑ๋ก โ†’ ์ž„์‹œ๋“ฑ๋ก โ†’ ์‹ฌ์‚ฌ์š”์ฒญ (~7/7 ์Šน์ธ ๋ชฉํ‘œ)
- [ ] ๋นŒ๋“œ ์‚ฐ์ถœ๋ฌผ์— data/ ๋ณต์‚ฌ ๋‹จ๊ณ„ (`npm run build` ํ›„ dist/data)
- [ ] ๋ณธ์„  ์ง„์ถœ ์‹œ Kakao Tools Widget ์ŠคํŽ™ ๋Œ€์‘