# π K-Water MCP μλ² ν΅ν© μλ£
## π κ°μ
4κ°μ Netlify Functionsλ₯Ό **νλμ MCP JSON-RPC 2.0 νμ€ μλ²**λ‘ μ±κ³΅μ μΌλ‘ ν΅ν©νμ΅λλ€!
## π§ ν΅ν©λ κΈ°λ₯
### κΈ°μ‘΄ 4κ° ν¨μ β 3κ° MCP λκ΅¬λ‘ ν΅ν©
1. **`search_water_station_by_name`** - μ§μλͺ
μΌλ‘ κ΄μΈ‘μ κ²μ
2. **`get_water_info_by_location`** - μμ°μ΄ μλ¬Έ μ 보 μ‘°ν
3. **`recommend_nearby_stations`** - μ£Όλ³ κ΄μΈ‘μ μΆμ²
## π ChatGPT Tools λ±λ‘ μ 보
```json
{
"url": "https://hrfco-mcp-functions.netlify.app/.netlify/functions/mcp",
"label": "K-Water μλ¬Έμ 보",
"description": "νκ΅ μμμκ³΅μ¬ μ€μκ° μλ¬Έ λ°μ΄ν° μ‘°ν μμ€ν
",
"authentication": "none"
}
```
## π‘ MCP JSON-RPC 2.0 API μ¬μ©λ²
### 1. Initialize (μ΄κΈ°ν)
```json
{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {}
}
```
### 2. Tools List (λꡬ λͺ©λ‘ μ‘°ν)
```json
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/list",
"params": {}
}
```
### 3. Tools Call (λꡬ μ€ν)
#### νκ° μμ μ‘°ν
```json
{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "get_water_info_by_location",
"arguments": {
"query": "νκ° μμ",
"limit": 5
}
}
}
```
#### μμΈ μ§μ κ΄μΈ‘μ κ²μ
```json
{
"jsonrpc": "2.0",
"id": 4,
"method": "tools/call",
"params": {
"name": "search_water_station_by_name",
"arguments": {
"location_name": "μμΈ",
"data_type": "waterlevel",
"limit": 5
}
}
}
```
#### λΆμ° μ£Όλ³ κ΄μΈ‘μ μΆμ²
```json
{
"jsonrpc": "2.0",
"id": 5,
"method": "tools/call",
"params": {
"name": "recommend_nearby_stations",
"arguments": {
"location": "λΆμ°",
"radius": 20,
"priority": "distance"
}
}
}
```
## π§ͺ ν
μ€νΈ λ°©λ²
### λ‘컬 ν
μ€νΈ
```bash
cd /home/ubuntu/hrfco-service
node test-mcp-server.js
```
### cURL ν
μ€νΈ
```bash
# Tools List μ‘°ν
curl -X POST https://hrfco-mcp-functions.netlify.app/.netlify/functions/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/list",
"params": {}
}'
# νκ° μμ μ‘°ν
curl -X POST https://hrfco-mcp-functions.netlify.app/.netlify/functions/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "get_water_info_by_location",
"arguments": {
"query": "νκ° μμ",
"limit": 3
}
}
}'
```
## π― ChatGPTμμ μ¬μ© μμ
ChatGPT Toolsμ λ±λ‘ ν λ€μκ³Ό κ°μ΄ μ¬μ©ν μ μμ΅λλ€:
**μ¬μ©μ**: "νκ° μμ μ΄λ?"
β
**ChatGPT**: MCP μλ²μ `get_water_info_by_location` νΈμΆ
β
**MCP μλ²**: HRFCO API μ‘°ν ν κ²°κ³Ό λ°ν
β
**ChatGPT**: "νμ¬ νκ° μ μ κ΄μΈ‘μ 3κ³³μ μμλ..."
## β¨ μ£Όμ νΉμ§
- β
**MCP JSON-RPC 2.0 μμ μ€μ**
- β
**κΈ°μ‘΄ μ§λ₯ν κ²μ λ‘μ§ 100% μ μ§**
- β
**ChatGPT Tools νΈν**
- β
**3κ° λꡬ ν΅ν© μ 곡**
- β
**CORS μ§μ**
- β
**μλ¬ μ²λ¦¬ νμ€ν**
## π νμΌ κ΅¬μ‘°
```
netlify/functions/
βββ mcp.ts # π ν΅ν© MCP μλ²
βββ utils.ts # κ³΅ν΅ μ νΈλ¦¬ν° (κΈ°μ‘΄)
βββ search-station.ts # κΈ°μ‘΄ ν¨μ (μ μ§)
βββ get-water-info.ts # κΈ°μ‘΄ ν¨μ (μ μ§)
βββ recommend-stations.ts # κΈ°μ‘΄ ν¨μ (μ μ§)
```
## π λ°°ν¬ μν
- **MCP μλ²**: `https://hrfco-mcp-functions.netlify.app/.netlify/functions/mcp`
- **μν**: β
λ°°ν¬ μλ£
- **ChatGPT λ±λ‘**: β
μ€λΉ μλ£
---
**π μ΄μ ChatGPTμμ νκ΅ μμμ λ°μ΄ν°λ₯Ό μμ°μ΄λ‘ μ‘°νν μ μμ΅λλ€!**