# ๐ ๋ฐฐํฌ ๊ฐ์ด๋๋ผ์ธ (Deployment Guide)
๋ณธ ๋ฌธ์๋ **T1D Manager MCP ์๋ฒ**๋ฅผ ํด๋ผ์ฐ๋ ํ๊ฒฝ(Fly.io)์ ๋ฐฐํฌํ์ฌ **๊ณต์ฉ(Public) MCP ์๋ฒ**๋ก ์ด์ํ๊ธฐ ์ํ ์ ์ฐจ๋ฅผ ์ค๋ช
ํฉ๋๋ค.
---
## ๐ค ์ Fly.io์ธ๊ฐ? (vs Vercel)
| ํญ๋ชฉ | Fly.io โ
| Vercel โ |
|------|----------|----------|
| **์ฅ์๊ฐ ์ฐ๊ฒฐ** | WebSocket, SSE ๋ฌด์ ํ ์ง์ | Serverless ํน์ฑ์ 30์ด ํ์์์ |
| **MCP ํธํ์ฑ** | Streamable HTTP ์๋ฒฝ ์ง์ | ์ฐ๊ฒฐ ๋๊น ๋ฌธ์ ๋ฐ์ |
| **์์ ์คํ** | ๋จธ์ ์ด ํญ์ ์ผ์ ธ ์์ | Cold Start ์ง์ฐ ๋ฐ์ |
| **Docker ์ง์** | ๋ค์ดํฐ๋ธ Docker ๋ฐฐํฌ | ์ ํ์ |
| **๋น์ฉ** | ~$2/์ (๋ฌด๋ฃ ๋ฒ์ ๋ด) | ๋ฌด๋ฃ์ง๋ง MCP ๋ถ์ ํฉ |
> **๊ฒฐ๋ก **: MCP ์๋ฒ๋ **์ง์์ ์ธ ์ฐ๊ฒฐ**์ด ํ์ํ๋ฏ๋ก Serverless(Vercel, Netlify)๋ณด๋ค **์ปจํ
์ด๋ ๊ธฐ๋ฐ ํ๋ซํผ(Fly.io, Railway, Render)**์ด ์ ํฉํฉ๋๋ค.
---
## 1. ๋ฐฐํฌ ์ ์ฒดํฌ๋ฆฌ์คํธ
1. **Fly.io ๊ณ์ ๋ฐ CLI**: `flyctl`์ด ์ค์น๋์ด ์์ด์ผ ํฉ๋๋ค.
2. **API ํค ์ค๋น**:
* `MCP_AUTH_TOKEN`: ์๋ฒ ๋ณดํธ์ฉ ๋น๋ฐ ํ ํฐ (์์ ์์ฑ)
* `NAVER_CLIENT_ID` / `SECRET`: ๋ค์ด๋ฒ ๊ฒ์ API
* `KAKAO_API_KEY`: ์นด์นด์ค ๊ฒ์ API
---
## 2. Fly.io ๋ฐฐํฌ
์ด ํ๋ก์ ํธ๋ `fly.toml`๊ณผ `Dockerfile`์ด ์ด๋ฏธ ์ต์ ํ๋์ด ์์ต๋๋ค.
### 1๋จ๊ณ: Fly CLI ์ค์น ๋ฐ ๋ก๊ทธ์ธ
```bash
# ์ค์น
curl -L https://fly.io/install.sh | sh
# ๋ก๊ทธ์ธ
~/.fly/bin/flyctl auth login
```
### 2๋จ๊ณ: ์ฑ ๋ฐ์นญ (์ต์ด 1ํ)
```bash
fly launch --name t1d-mcp --region nrt --yes
```
* **Region**: ํ๊ตญ๊ณผ ๊ฐ๊น์ด `nrt` (Tokyo) ๊ถ์ฅ
### 3๋จ๊ณ: ํ๊ฒฝ ๋ณ์(Secrets) ์ค์
```bash
fly secrets set \
MCP_AUTH_TOKEN="your-secure-token-1234" \
NAVER_CLIENT_ID="your-id" \
NAVER_CLIENT_SECRET="your-secret" \
KAKAO_API_KEY="your-kakao-key"
```
### 4๋จ๊ณ: ๋ฐฐํฌ ์คํ
```bash
fly deploy
```
### 5๋จ๊ณ: ๋ฌด๋ฃ ๋ฒ์ ์ ์ง (์ค์!)
Fly.io ๋ฌด๋ฃ ํ๋: **์ $5 ๋ฏธ๋ง์ ์ฒญ๊ตฌ ๋ฉด์ **
```bash
# ๋จธ์ 1๊ฐ๋ก ๊ณ ์ (๋น์ฉ ์ต์ํ)
fly scale count 1
```
| ๋ฆฌ์์ค | ์ค์ | ์์ ๋น์ฉ |
|--------|------|----------|
| VM | shared-cpu-1x, 256MB | ~$1.94/์ |
| Storage | ์์ | $0 |
| **ํฉ๊ณ** | | **~$2/์ (๋ฉด์ !)** |
---
## 3. ๋ฐฐํฌ ๊ฒฐ๊ณผ
| ํญ๋ชฉ | ๊ฐ |
|------|-----|
| **MCP Endpoint** | `https://t1d-mcp.fly.dev/mcp` |
| **Health Check** | `https://t1d-mcp.fly.dev/health` |
| **๋์๋ณด๋** | [fly.io/apps/t1d-mcp](https://fly.io/apps/t1d-mcp) |
---
## 4. PlayMCP / Claude Desktop ๋ฑ๋ก
### Claude Desktop ์ค์ (`claude_desktop_config.json`)
```json
{
"mcpServers": {
"t1d-manager": {
"url": "https://t1d-mcp.fly.dev/mcp",
"transport": "http"
}
}
}
```
---
## 5. ๋ก์ปฌ ํ
์คํธ
### ์๋ฒ ์คํ
```bash
uv run uvicorn src.server:app --host 0.0.0.0 --port 8080
```
### MCP Inspector ํ
์คํธ
```bash
npx @modelcontextprotocol/inspector --transport http --server-url http://127.0.0.1:8080/mcp
```
### VS Code Task
`Cmd + Shift + P` โ `Run Task` โ **๐ Run Local** ๋๋ **โ๏ธ Deploy to Fly.io**