Gift Mate
by LEEHEEWON123
README.md
# ๐ ๊ธฐํํธ๋ฉ์ดํธ (Gift Mate) โ ์ ๋ฌผ ๊ณ ๋ฏผ ์ข
๊ฒฐ MCP
MZ ๊ฐ์ฑ ์ ๋ฌผ ํ๋ ์ดํฐ MCP ์๋ฒ. [AGENTIC PLAYER 10](https://b.kakao.com/views/PlayMCP/AGENTIC_PLAYER_10) / [PlayMCP](https://playmcp.kakao.com) ์ถํ์ฉ.
## ํ ์ค ์๊ฐ
> "๋ฒ ํ ์์ผ, 3๋ง์๋, ๊ฐ์ฑ์ ์ธ ๊ฑฐ" โ ์ ๋ฌผ TOP3 + ์นดํก ๋ฉ์์ง ์ด์๊น์ง.
## MCP Tools (4๊ฐ)
| Tool | ์ค๋ช
|
|------|------|
| `recommend_gift` | ๋ค์ด๋ฒ ์ผํ ์ค๊ฒ์ โ ๊ด๊ณยท์ํฉยท์์ฐยทvibe ๊ธฐ๋ฐ ์ ๋ฌผ ์ถ์ฒ |
| `draft_gift_message` | ์นดํก/DM์ฉ ๋ฉ์์ง ์ด์ (5๊ฐ์ง tone) |
| `compare_gifts` | ์ ๋ฌผ A vs B ๊ฐ๊ฒฉยท์ผํ๋ชฐ ๋น๊ต (์ค๊ฒ์) |
| `gift_by_vibe` | vibe๋ง์ผ๋ก ๋ค์ด๋ฒ ์ผํ ์ค๊ฒ์ |
## PlayMCP ๋ฑ๋ก ์ ๋ณด (์ด์)
- **์๋ฒ ์ด๋ฆ**: ๊ธฐํํธ๋ฉ์ดํธ โ ์ ๋ฌผ ๊ณ ๋ฏผ ์ข
๊ฒฐ
- **Endpoint**: `https://<your-domain>/mcp`
- **์คํํฐ ๋ฉ์์ง**:
```
๋ญ ์ฌ์ค์ง ๊ณ ๋ฏผ์ด์ผ? ๐
๋๊ตฌํํ
, ์ด๋ค ์ํฉ(์์ผ/์ทจ์
/100์ผ/๊ทธ๋ฅ), ์์ฐ(์ปคํผ๊ฐ~flex), vibe(ํํ/๊ฐ์ฑ/๋ฐ๋ง์ถค) ์๋ ค์ค!
```
## ๋ก์ปฌ ์คํ
```bash
cd kakao_mcp_server
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
# ๋ค์ด๋ฒ API ํค ์ค์ (ํ์)
cp .env.example .env
# .env์ NAVER_CLIENT_ID, NAVER_CLIENT_SECRET ์
๋ ฅ
export NAVER_CLIENT_ID=...
export NAVER_CLIENT_SECRET=...
PYTHONPATH=src uvicorn gift_mate.server:app --host 0.0.0.0 --port 8080
```
### ๋ค์ด๋ฒ API ํค ๋ฐ๊ธ
1. [Naver Developers](https://developers.naver.com/apps/#/register) โ ์ ํ๋ฆฌ์ผ์ด์
๋ฑ๋ก
2. **์ฌ์ฉ API**์์ **๊ฒ์** ์ฒดํฌ
3. Client ID / Client Secret ๋ณต์ฌ
4. Railway ๋ฐฐํฌ ์ **Variables**์ `NAVER_CLIENT_ID`, `NAVER_CLIENT_SECRET` ๋ฑ๋ก
- Health: http://localhost:8080/health
- MCP endpoint: http://localhost:8080/mcp
## Docker
```bash
docker build -t gift-mate-mcp .
docker run -p 8080:8080 gift-mate-mcp
```
## ์นด์นด์ค ํด๋ผ์ฐ๋ ๋ฐฐํฌ
1. Dockerfile๋ก ์ด๋ฏธ์ง ๋น๋ ํ ์นด์นด์ค ํด๋ผ์ฐ๋ MCP Endpoint์ ๋ฐฐํฌ
2. PlayMCP ์ฝ์ โ ์ MCP ์๋ฒ ๋ฑ๋ก โ Endpoint URL ์
๋ ฅ
3. ์์ ๋ฑ๋ก์ผ๋ก ํ
์คํธ โ **๋ฑ๋ก ๋ฐ ์ฌ์ฌ ์์ฒญ**
4. ์ฌ์ฌ ํต๊ณผ ํ **์ ์ฒด ๊ณต๊ฐ** โ [Player ์์ ์ฐธ์ฌ](https://b.kakao.com/views/PlayMCP/AGENTIC_PLAYER_10)
## ์์ฐ ํค์๋
| ํค์๋ | ๋ฒ์ |
|--------|------|
| ์ปคํผ๊ฐ | ~1๋ง |
| ๋ฐฐ๋ฏผํ๋ผ | 1~2.5๋ง |
| ๋ค์ผ/ํค์ด | 2.5~5๋ง |
| ์ ๋ฐํ์ผค๋ | 5~10๋ง |
| flex | 10๋ง+ |
## vibe ํค์๋
`ํํ` ยท `์ค์ฉ` ยท `๊ฐ์ฑ` ยท `ํฌ๋ฌํ
` ยท `๋ฐ๋ง์ถค` ยท `MZ๊ณต๊ฐ`
## ๋ฐ๋ชจ ์๋๋ฆฌ์ค
```
์ ์ : "์ฒซ ์ถ๊ทผํ ํ๋ฐฐํํ
3๋ง์๋ ์ค์ฉ์ ์ธ ์ ๋ฌผ ์ถ์ฒํด์ค"
โ recommend_gift(relationship=ํ๋ฐฐ, occasion=์ทจ์
, budget=๋ฐฐ๋ฏผํ๋ผ, vibe=์ค์ฉ)
์ ์ : "๋ฏธ๋ ํฅ์ ๋์ค๋ก ์นดํก ๋ฉ์์ง mz_slang ํค์ผ๋ก ์จ์ค"
โ draft_gift_message(recipient_name=๋ฏผ์, gift_name=๋ฏธ๋ ํฅ์, tone=mz_slang)
```
## ํ๋ก์ ํธ ๊ตฌ์กฐ
```
src/gift_mate/
โโโ server.py # FastMCP + FastAPI
โโโ recommender.py # ๊ฒ์์ด ์กฐํฉ + ์์ฐ ํํฐ๋ง
โโโ naver_search.py # ๋ค์ด๋ฒ ์ผํ API ํด๋ผ์ด์ธํธ
โโโ messages.py # MZ ํค ๋ฉ์์ง ํ
ํ๋ฆฟ
โโโ models.py
```
## ๋ณธ์ ํ์ฅ ์์ด๋์ด (Kakao Tools Widget)
- ์ ๋ฌผ ์นด๋ UI>
3์ฅ ์ฌ๋ผ์ด๋ UI
- ์นด์นด์ค ์ ๋ฌผํ๊ธฐ ๊ฒ์ ๋งํฌ ์ฐ๋
- "์ค๋์ vibe" ๋๋ค ์ ๋ฌผ ๋ฃฐ๋
This server cannot be deployed
Maintenance
ActivityStale
ResponsivenessNo issues