Skip to main content
Glama
SeoNaRu

Korean Law MCP Server

by SeoNaRu
README.md
# ๐Ÿ›๏ธ ํ•œ๊ตญ ๋ฒ•๋ฅ /ํŒ๋ก€ ๊ฒ€์ƒ‰ MCP ์„œ๋ฒ„

**๊ตญ๊ฐ€๋ฒ•๋ น์ •๋ณด์„ผํ„ฐ Open API**๋ฅผ ํ™œ์šฉํ•œ ๊ณ ์„ฑ๋Šฅ MCP (Model Context Protocol) ์„œ๋ฒ„์ž…๋‹ˆ๋‹ค.

AI ์—์ด์ „ํŠธ(Claude Desktop, Cursor ๋“ฑ)๊ฐ€ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ•œ๊ตญ ๋ฒ•๋ น, ํŒ๋ก€, ํ–‰์ •๊ทœ์น™์„ ๊ฒ€์ƒ‰ํ•˜๊ณ  ๋ถ„์„ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

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

### ๐Ÿ” ๋ฒ•๋ น ๊ฒ€์ƒ‰
- **ํ‚ค์›Œ๋“œ ๊ธฐ๋ฐ˜ ๋ฒ•๋ น ๊ฒ€์ƒ‰**: ๋ฏผ๋ฒ•, ์ƒ๋ฒ•, ๊ทผ๋กœ๊ธฐ์ค€๋ฒ• ๋“ฑ ๋‹ค์–‘ํ•œ ๋ฒ•๋ น ๊ฒ€์ƒ‰
- **๋ฒ•๋ น ์ƒ์„ธ ์กฐํšŒ**: ํŠน์ • ๋ฒ•๋ น์˜ ์ „๋ฌธ(์กฐ๋ฌธ) ๋ฐ ์ƒ์„ธ ์ •๋ณด ์กฐํšŒ
- **๋ฒ•๋ น ๊ธฐ๋ณธ ์ •๋ณด**: ์†Œ๊ด€๋ถ€์ฒ˜, ๊ณตํฌ์ผ์ž, ์‹œํ–‰์ผ์ž, ๊ฐœ์ • ์ •๋ณด ํฌํ•จ

### โš–๏ธ ํŒ๋ก€ ๊ฒ€์ƒ‰
- **ํŒ๋ก€ ํ‚ค์›Œ๋“œ ๊ฒ€์ƒ‰**: ์†ํ•ด๋ฐฐ์ƒ, ๊ณ„์•ฝ, ๋ถ€๋‹นํ•ด๊ณ  ๋“ฑ ํŒ๋ก€ ๊ฒ€์ƒ‰
- **ํŒ๋ก€ ์ƒ์„ธ ์กฐํšŒ**: ํŒ๊ฒฐ์š”์ง€, ํŒ์‹œ์‚ฌํ•ญ, ํŒ๋ก€ ์ „๋ฌธ ์กฐํšŒ
- **๋ฒ•์› ํ•„ํ„ฐ๋ง**: ๋Œ€๋ฒ•์›, ํ—Œ๋ฒ•์žฌํŒ์†Œ ๋“ฑ ๋ฒ•์›๋ณ„ ํ•„ํ„ฐ๋ง ์ง€์›
- **์ฐธ์กฐ์กฐ๋ฌธ/ํŒ๋ก€**: ๊ด€๋ จ ๋ฒ•๋ น ๋ฐ ์ฐธ์กฐ ํŒ๋ก€ ์ •๋ณด ์ œ๊ณต

### ๐Ÿ“‹ ํ–‰์ •๊ทœ์น™ ๊ฒ€์ƒ‰
- **ํ–‰์ •๊ทœ์น™ ๊ฒ€์ƒ‰**: ๊ฐ ๋ถ€์ฒ˜์˜ ํ–‰์ •๊ทœ์น™ ๊ฒ€์ƒ‰
- **์†Œ๊ด€๋ถ€์ฒ˜ ์ •๋ณด**: ์ œ์ •์ผ์ž, ์‹œํ–‰์ผ์ž ๋“ฑ ์ƒ์„ธ ์ •๋ณด

### ๐Ÿš€ ์„ฑ๋Šฅ ์ตœ์ ํ™”
- **์ „๋žต์  ์บ์‹ฑ**: ๋ฒ•๋ น/ํŒ๋ก€ ๋ฐ์ดํ„ฐ๋ฅผ 24์‹œ๊ฐ„ ์บ์‹ฑํ•˜์—ฌ API ํ˜ธ์ถœ ์ตœ์†Œํ™”
- **๋น ๋ฅธ ์‘๋‹ต ์†๋„**: ์บ์‹œ ๊ธฐ๋ฐ˜ ์ฆ‰์‹œ ์‘๋‹ต
- **์•ˆ์ •์ ์ธ ์šด์˜**: ์—๋Ÿฌ ํ•ธ๋“ค๋ง ๋ฐ ๋กœ๊น… ์‹œ์Šคํ…œ

## ๐ŸŽฏ ํ™œ์šฉ ์‚ฌ๋ก€

### ๋ฒ•๋ฅ  ์ „๋ฌธ๊ฐ€
- **๊ณ„์•ฝ์„œ ๊ฒ€ํ† **: AI๊ฐ€ ๊ณ„์•ฝ์„œ๋ฅผ ๋ถ„์„ํ•˜๊ณ  ๊ด€๋ จ ๋ฒ•๋ น ๋ฐ ํŒ๋ก€๋ฅผ ์ž๋™ ์ฐธ์กฐ
- **๋ฒ•๋ฅ  ์ž๋ฌธ**: ํŠน์ • ์‚ฌ์•ˆ์— ๋Œ€ํ•œ ๊ด€๋ จ ๋ฒ•๋ น ๋ฐ ํŒ๋ก€๋ฅผ ์ฆ‰์‹œ ์กฐํšŒ
- **ํŒ๋ก€ ์—ฐ๊ตฌ**: ์œ ์‚ฌ ํŒ๋ก€๋ฅผ ๋น ๋ฅด๊ฒŒ ๊ฒ€์ƒ‰ํ•˜๊ณ  ๋น„๊ต ๋ถ„์„

### ๊ธฐ์—… ๋ฒ•๋ฌดํŒ€
- **๊ธฐ์—… ์ปดํ”Œ๋ผ์ด์–ธ์Šค**: ์‚ฌ์—… ๊ด€๋ จ ๋ฒ•๋ น์„ ์‹ค์‹œ๊ฐ„ ์กฐํšŒ
- **๋…ธ๋ฌด ๊ด€๋ฆฌ**: ๊ทผ๋กœ๊ธฐ์ค€๋ฒ• ๋“ฑ ๋…ธ๋™ ๊ด€๋ จ ๋ฒ•๋ น ๋ฐ ํŒ๋ก€ ๊ฒ€์ƒ‰
- **์†Œ์†ก ์ค€๋น„**: ๊ด€๋ จ ํŒ๋ก€ ๋ฐ ๋ฒ•๋ น ์ž๋™ ์ˆ˜์ง‘

### ์Šคํƒ€ํŠธ์—…/๊ฐœ๋ฐœ์ž
- **์„œ๋น„์Šค ๋ฒ•๋ฅ  ๊ฒ€ํ† **: ๊ฐœ์ธ์ •๋ณด๋ณดํ˜ธ๋ฒ•, ์ „์ž์ƒ๊ฑฐ๋ž˜๋ฒ• ๋“ฑ ๊ด€๋ จ ๋ฒ•๋ น ํ™•์ธ
- **์•ฝ๊ด€ ์ž‘์„ฑ**: ๊ด€๋ จ ๋ฒ•๋ น์„ ์ฐธ์กฐํ•˜์—ฌ ์•ฝ๊ด€ ์ž‘์„ฑ
- **๋ฒ•๋ฅ  ๋ฆฌ์Šคํฌ ๋ถ„์„**: AI๊ฐ€ ์„œ๋น„์Šค ๊ธฐํš์„œ๋ฅผ ๋ถ„์„ํ•˜๊ณ  ๊ด€๋ จ ๋ฒ•๋ฅ  ๋ฆฌ์Šคํฌ ํŒŒ์•…

### ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž
- **๋ฒ•๋ฅ  ์ƒ๋‹ด**: AI ์—์ด์ „ํŠธ๋ฅผ ํ†ตํ•œ ๊ธฐ๋ณธ์ ์ธ ๋ฒ•๋ฅ  ์ •๋ณด ์กฐํšŒ
- **๊ถŒ๋ฆฌ ํ™•์ธ**: ์†Œ๋น„์ž ๊ถŒ๋ฆฌ, ์ž„์ฐจ๊ถŒ ๋“ฑ ๊ด€๋ จ ๋ฒ•๋ น ๋ฐ ํŒ๋ก€ ๊ฒ€์ƒ‰
- **๋ฏผ์› ์ค€๋น„**: ํ–‰์ •์‹ฌํŒ, ์†Œ์†ก ์ค€๋น„๋ฅผ ์œ„ํ•œ ๋ฒ•๋ฅ  ์ •๋ณด ์ˆ˜์ง‘

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

- **MCP Framework**: FastMCP
- **Data Validation**: Pydantic
- **HTTP Client**: Requests
- **XML Parsing**: xml.etree.ElementTree
- **Caching**: cachetools (24์‹œ๊ฐ„ TTL)
- **Async Processing**: asyncio
- **Environment**: Python-dotenv

## ๐Ÿ“ฆ ์„ค์น˜ ๋ฐ ์„ค์ •

### 1) ์˜์กด์„ฑ ์„ค์น˜

```bash
pip install -r requirements.txt
```

> ๐Ÿ’ก `uv`๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ: `uv sync`

### 2) API ํ‚ค ๋ฐœ๊ธ‰

๊ตญ๊ฐ€๋ฒ•๋ น์ •๋ณด์„ผํ„ฐ Open API ํ‚ค๋ฅผ ๋ฐœ๊ธ‰๋ฐ›์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค:

1. [๊ตญ๊ฐ€๋ฒ•๋ น์ •๋ณด์„ผํ„ฐ Open API ์‚ฌ์ดํŠธ](https://open.law.go.kr/) ๋ฐฉ๋ฌธ
2. ํšŒ์›๊ฐ€์ž… ๋ฐ ๋กœ๊ทธ์ธ
3. **๊ณต๋™ํ™œ์šฉ ์„œ๋น„์Šค** > **Open API** ๋ฉ”๋‰ด์—์„œ API ์‹ ์ฒญ
4. ์Šน์ธ ํ›„ **์ธ์ฆํ‚ค(OC)** ๋ฐœ๊ธ‰๋ฐ›๊ธฐ

> ๐Ÿ“Œ **์ฐธ๊ณ **: API ํ‚ค ๋ฐœ๊ธ‰์€ ๋ณดํ†ต ์ฆ‰์‹œ ์Šน์ธ๋˜๋ฉฐ, ๋ฌด๋ฃŒ๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

### 3) ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •

ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์— `.env` ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ณ  API ํ‚ค๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค:

```bash
cp env.law.example .env
```

`.env` ํŒŒ์ผ ๋‚ด์šฉ:

```env
LAW_API_KEY=your_law_api_key_here
LOG_LEVEL=INFO
PORT=8096
```

### 4) ์„œ๋ฒ„ ์‹คํ–‰

```bash
python -m src.law_main
```

๋˜๋Š” HTTP ์„œ๋ฒ„๋กœ ์‹คํ–‰:

```bash
python src/law_main.py
```

## ๐Ÿณ Docker ์‹คํ–‰

Docker๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ„ํŽธํ•˜๊ฒŒ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

```bash
# ์ด๋ฏธ์ง€ ๋นŒ๋“œ
docker build -t korean-law-mcp:latest .

# ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰
docker run --rm \
  -e LAW_API_KEY=your_law_api_key_here \
  -p 8096:8096 \
  korean-law-mcp:latest
```

## ๐Ÿงฐ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋„๊ตฌ (Tools)

### 1. `health`
- **์„ค๋ช…**: ์„œ๋น„์Šค ์ƒํƒœ ๋ฐ API ํ‚ค ์„ค์ • ํ™•์ธ
- **ํŒŒ๋ผ๋ฏธํ„ฐ**: ์—†์Œ
- **๋ฐ˜ํ™˜**: ์„œ๋น„์Šค ์ƒํƒœ ๊ฐ์ฒด

### 2. `search_law_tool`
- **์„ค๋ช…**: ๋ฒ•๋ น์„ ํ‚ค์›Œ๋“œ๋กœ ๊ฒ€์ƒ‰
- **ํŒŒ๋ผ๋ฏธํ„ฐ**:
  - `query` (string, ํ•„์ˆ˜): ๊ฒ€์ƒ‰ํ•  ๋ฒ•๋ น ํ‚ค์›Œ๋“œ (์˜ˆ: '๋ฏผ๋ฒ•', '์ƒ๋ฒ•')
  - `page` (integer, ์„ ํƒ): ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ (๊ธฐ๋ณธ๊ฐ’: 1)
  - `page_size` (integer, ์„ ํƒ): ํŽ˜์ด์ง€๋‹น ๊ฒฐ๊ณผ ์ˆ˜ (๊ธฐ๋ณธ๊ฐ’: 10, ์ตœ๋Œ€: 50)
- **๋ฐ˜ํ™˜**: ๊ฒ€์ƒ‰๋œ ๋ฒ•๋ น ๋ชฉ๋ก (๋ฒ•๋ น๋ช…, ์†Œ๊ด€๋ถ€์ฒ˜, ๊ณตํฌ์ผ์ž, ์‹œํ–‰์ผ์ž ๋“ฑ)

**์˜ˆ์‹œ ์‘๋‹ต**:
```json
{
  "total": 152,
  "page": 1,
  "page_size": 10,
  "laws": [
    {
      "๋ฒ•๋ นID": "001122",
      "๋ฒ•๋ น๋ช…": "๋ฏผ๋ฒ•",
      "๋ฒ•๋ น๊ตฌ๋ถ„": "๋ฒ•๋ฅ ",
      "์†Œ๊ด€๋ถ€์ฒ˜": "๋ฒ•๋ฌด๋ถ€",
      "๊ณตํฌ์ผ์ž": "19580222",
      "์‹œํ–‰์ผ์ž": "19600101"
    }
  ]
}
```

### 3. `get_law_detail_tool`
- **์„ค๋ช…**: ํŠน์ • ๋ฒ•๋ น์˜ ์ƒ์„ธ ์ •๋ณด ๋ฐ ์ „๋ฌธ(์กฐ๋ฌธ) ์กฐํšŒ
- **ํŒŒ๋ผ๋ฏธํ„ฐ**:
  - `law_id` (string, ํ•„์ˆ˜): ๋ฒ•๋ น ID (๋ฒ•๋ น ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ์—์„œ ์–ป์€ ๋ฒ•๋ นID)
- **๋ฐ˜ํ™˜**: ๋ฒ•๋ น์˜ ์ƒ์„ธ ์ •๋ณด์™€ ๋ชจ๋“  ์กฐ๋ฌธ ๋‚ด์šฉ

**์˜ˆ์‹œ ์‘๋‹ต**:
```json
{
  "๋ฒ•๋ นID": "001122",
  "๋ฒ•๋ น๋ช…": "๋ฏผ๋ฒ•",
  "๋ฒ•๋ น๊ตฌ๋ถ„": "๋ฒ•๋ฅ ",
  "์†Œ๊ด€๋ถ€์ฒ˜": "๋ฒ•๋ฌด๋ถ€",
  "๊ณตํฌ์ผ์ž": "19580222",
  "์‹œํ–‰์ผ์ž": "19600101",
  "์กฐ๋ฌธ์ˆ˜": 1118,
  "์กฐ๋ฌธ": [
    {
      "์กฐ๋ฌธ๋ฒˆํ˜ธ": "์ œ1์กฐ",
      "์กฐ๋ฌธ์ œ๋ชฉ": "๋ฒ•์›",
      "์กฐ๋ฌธ๋‚ด์šฉ": "๋ฏผ์‚ฌ์— ๊ด€ํ•˜์—ฌ ๋ฒ•๋ฅ ์— ๊ทœ์ •์ด ์—†์œผ๋ฉด..."
    }
  ]
}
```

### 4. `search_precedent_tool`
- **์„ค๋ช…**: ํŒ๋ก€๋ฅผ ํ‚ค์›Œ๋“œ๋กœ ๊ฒ€์ƒ‰
- **ํŒŒ๋ผ๋ฏธํ„ฐ**:
  - `query` (string, ํ•„์ˆ˜): ๊ฒ€์ƒ‰ํ•  ํŒ๋ก€ ํ‚ค์›Œ๋“œ (์˜ˆ: '์†ํ•ด๋ฐฐ์ƒ', '๊ณ„์•ฝ')
  - `page` (integer, ์„ ํƒ): ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ (๊ธฐ๋ณธ๊ฐ’: 1)
  - `page_size` (integer, ์„ ํƒ): ํŽ˜์ด์ง€๋‹น ๊ฒฐ๊ณผ ์ˆ˜ (๊ธฐ๋ณธ๊ฐ’: 10, ์ตœ๋Œ€: 50)
  - `court` (string, ์„ ํƒ): ๋ฒ•์› ๊ตฌ๋ถ„ (์˜ˆ: '๋Œ€๋ฒ•์›', 'ํ—Œ๋ฒ•์žฌํŒ์†Œ')
- **๋ฐ˜ํ™˜**: ๊ฒ€์ƒ‰๋œ ํŒ๋ก€ ๋ชฉ๋ก

**์˜ˆ์‹œ ์‘๋‹ต**:
```json
{
  "total": 2453,
  "page": 1,
  "page_size": 10,
  "precedents": [
    {
      "ํŒ๋ก€์ผ๋ จ๋ฒˆํ˜ธ": "202012345",
      "์‚ฌ๊ฑด๋ช…": "์†ํ•ด๋ฐฐ์ƒ(๊ธฐ)",
      "์‚ฌ๊ฑด๋ฒˆํ˜ธ": "2020๋‹ค123456",
      "์„ ๊ณ ์ผ์ž": "20201015",
      "์„ ๊ณ ": "ํŒŒ๊ธฐํ™˜์†ก",
      "๋ฒ•์›๋ช…": "๋Œ€๋ฒ•์›",
      "์‚ฌ๊ฑด์ข…๋ฅ˜๋ช…": "๋ฏผ์‚ฌ",
      "ํŒ์‹œ์‚ฌํ•ญ": "...",
      "ํŒ๊ฒฐ์š”์ง€": "..."
    }
  ]
}
```

### 5. `get_precedent_detail_tool`
- **์„ค๋ช…**: ํŠน์ • ํŒ๋ก€์˜ ์ƒ์„ธ ์ •๋ณด ์กฐํšŒ
- **ํŒŒ๋ผ๋ฏธํ„ฐ**:
  - `precedent_id` (string, ํ•„์ˆ˜): ํŒ๋ก€ ์ผ๋ จ๋ฒˆํ˜ธ
- **๋ฐ˜ํ™˜**: ํŒ๋ก€์˜ ์ƒ์„ธ ์ •๋ณด (ํŒ๊ฒฐ์š”์ง€, ์ฐธ์กฐ์กฐ๋ฌธ, ํŒ๋ก€ ์ „๋ฌธ ๋“ฑ)

**์˜ˆ์‹œ ์‘๋‹ต**:
```json
{
  "ํŒ๋ก€์ผ๋ จ๋ฒˆํ˜ธ": "202012345",
  "์‚ฌ๊ฑด๋ช…": "์†ํ•ด๋ฐฐ์ƒ(๊ธฐ)",
  "์‚ฌ๊ฑด๋ฒˆํ˜ธ": "2020๋‹ค123456",
  "์„ ๊ณ ์ผ์ž": "20201015",
  "์„ ๊ณ ": "ํŒŒ๊ธฐํ™˜์†ก",
  "๋ฒ•์›๋ช…": "๋Œ€๋ฒ•์›",
  "ํŒ์‹œ์‚ฌํ•ญ": "...",
  "ํŒ๊ฒฐ์š”์ง€": "...",
  "์ฐธ์กฐ์กฐ๋ฌธ": "๋ฏผ๋ฒ• ์ œ750์กฐ, ์ œ751์กฐ",
  "์ฐธ์กฐํŒ๋ก€": "๋Œ€๋ฒ•์› 2019๋‹ค234567...",
  "ํŒ๋ก€๋‚ด์šฉ": "ใ€์ „๋ฌธใ€‘..."
}
```

### 6. `search_administrative_rule_tool`
- **์„ค๋ช…**: ํ–‰์ •๊ทœ์น™์„ ํ‚ค์›Œ๋“œ๋กœ ๊ฒ€์ƒ‰
- **ํŒŒ๋ผ๋ฏธํ„ฐ**:
  - `query` (string, ํ•„์ˆ˜): ๊ฒ€์ƒ‰ํ•  ํ–‰์ •๊ทœ์น™ ํ‚ค์›Œ๋“œ
  - `page` (integer, ์„ ํƒ): ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ (๊ธฐ๋ณธ๊ฐ’: 1)
  - `page_size` (integer, ์„ ํƒ): ํŽ˜์ด์ง€๋‹น ๊ฒฐ๊ณผ ์ˆ˜ (๊ธฐ๋ณธ๊ฐ’: 10, ์ตœ๋Œ€: 50)
- **๋ฐ˜ํ™˜**: ๊ฒ€์ƒ‰๋œ ํ–‰์ •๊ทœ์น™ ๋ชฉ๋ก

## ๐Ÿ’ก ์‚ฌ์šฉ ์˜ˆ์‹œ

### Claude Desktop์—์„œ ์‚ฌ์šฉ

1. Claude Desktop ์„ค์ • ํŒŒ์ผ (`claude_desktop_config.json`) ์ˆ˜์ •:

```json
{
  "mcpServers": {
    "korean-law": {
      "command": "python",
      "args": ["-m", "src.law_main"],
      "env": {
        "LAW_API_KEY": "your_api_key_here"
      }
    }
  }
}
```

2. Claude Desktop ์žฌ์‹œ์ž‘

3. Claude์—๊ฒŒ ์งˆ๋ฌธ:
   - "๋ฏผ๋ฒ• ์ œ750์กฐ์— ๋Œ€ํ•ด ์•Œ๋ ค์ค˜"
   - "๋ถ€๋‹นํ•ด๊ณ  ๊ด€๋ จ ํŒ๋ก€ ์ฐพ์•„์ค˜"
   - "๊ฐœ์ธ์ •๋ณด๋ณดํ˜ธ๋ฒ• ๊ฒ€์ƒ‰ํ•ด์ค˜"

### Cursor์—์„œ ์‚ฌ์šฉ

Cursor์˜ MCP ์„ค์ •์—์„œ ์œ„์™€ ๋™์ผํ•˜๊ฒŒ ์ถ”๊ฐ€ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

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

```text
korean-law-mcp/
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ __init__.py
โ”‚   โ”œโ”€โ”€ law_main.py        # MCP ์„œ๋ฒ„ ๋ฉ”์ธ ํŒŒ์ผ
โ”‚   โ””โ”€โ”€ law_tools.py       # ๋ฒ•๋ฅ  API ํ˜ธ์ถœ ๋„๊ตฌ
โ”œโ”€โ”€ .env                   # ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ํŒŒ์ผ (API ํ‚ค ๋“ฑ)
โ”œโ”€โ”€ env.law.example        # ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์˜ˆ์‹œ ํŒŒ์ผ
โ”œโ”€โ”€ requirements.txt       # Python ์˜์กด์„ฑ
โ”œโ”€โ”€ README_LAW.md          # ํ”„๋กœ์ ํŠธ ๋ฌธ์„œ (์ด ํŒŒ์ผ)
โ””โ”€โ”€ pyproject.toml         # ํ”„๋กœ์ ํŠธ ์„ค์ •
```

## ๐Ÿš€ ๋กœ๋“œ๋งต

- [ ] ๋ฒ•๋ น ๊ฐœ์ • ์ด๋ ฅ ์กฐํšŒ
- [ ] ๋ฒ•๋ น/ํŒ๋ก€ ์ „๋ฌธ PDF ๋‹ค์šด๋กœ๋“œ
- [ ] ์ž์—ฐ์–ด ๊ธฐ๋ฐ˜ ๋ฒ•๋ น ํ•ด์„
- [ ] ๋ฒ•๋ น ๋น„๊ต ๋ถ„์„ ๊ธฐ๋Šฅ
- [ ] ํŒ๋ก€ ์œ ์‚ฌ๋„ ๋ถ„์„
- [ ] ๋ฒ•๋ฅ  ์šฉ์–ด ์‚ฌ์ „

## ๐Ÿ’ฐ ๋น„์ฆˆ๋‹ˆ์Šค ๋ชจ๋ธ

์ด MCP ์„œ๋ฒ„๋Š” **ํŒ๋งค์šฉ ์ œํ’ˆ**์œผ๋กœ ๊ฐœ๋ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค:

### ํƒ€๊ฒŸ ๊ณ ๊ฐ
- ๐Ÿข **๋ฒ•๋ฅ ์‚ฌ๋ฌด์†Œ/๋กœํŽŒ**: ๋ฒ•๋ฅ  ๋ฆฌ์„œ์น˜ ์ž๋™ํ™”
- ๐Ÿญ **๊ธฐ์—… ๋ฒ•๋ฌดํŒ€**: ์ปดํ”Œ๋ผ์ด์–ธ์Šค ๊ด€๋ฆฌ
- ๐Ÿš€ **์Šคํƒ€ํŠธ์—…**: ๋ฒ•๋ฅ  ๋ฆฌ์Šคํฌ ๋ถ„์„
- ๐ŸŽ“ **๋ฒ•ํ•™ ์—ฐ๊ตฌ์ž**: ํŒ๋ก€ ์—ฐ๊ตฌ ๋„๊ตฌ

### ๊ฐ€๊ฒฉ ์ฑ…์ • (์ฐธ๊ณ )
- **Basic**: 30๋งŒ์› (๊ธฐ๋ณธ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ)
- **Pro**: 100๋งŒ์› (AI ๋ถ„์„ ๊ธฐ๋Šฅ ์ถ”๊ฐ€)
- **Enterprise**: 200๋งŒ์›+ (์ปค์Šคํ„ฐ๋งˆ์ด์ง•, ๊ธฐ์ˆ  ์ง€์›)

### ์ฐจ๋ณ„ํ™” ํฌ์ธํŠธ
- โœ… ๊ตญ๊ฐ€ ๊ณต์‹ ๋ฐ์ดํ„ฐ ํ™œ์šฉ
- โœ… AI ์—์ด์ „ํŠธ ์ง์ ‘ ํ†ตํ•ฉ
- โœ… ์‹ค์‹œ๊ฐ„ ์ตœ์‹  ๋ฒ•๋ น/ํŒ๋ก€ ์กฐํšŒ
- โœ… ํ•œ๊ตญ์–ด ์™„๋ฒฝ ์ง€์›
- โœ… ๋ณต์žกํ•œ API ์ฒ˜๋ฆฌ ์ž๋™ํ™”

## โš ๏ธ ์ €์žฅ์†Œ ์ด์ „ ์•ˆ๋‚ด (Repository Moved)

๋ณธ ํ”„๋กœ์ ํŠธ๋Š” ๋” ํ™•์žฅ๋œ ๊ตฌ์กฐ์™€ ๋ช…ํ™•ํ•œ ๋ชฉ์ ์„ ๋ฐ˜์˜ํ•˜์—ฌ  
์•„๋ž˜ ์ €์žฅ์†Œ๋กœ **์ด์ „ ๋ฐ ๊ณ„์† ๊ฐœ๋ฐœ**๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ‘‰ **LexGuard MCP**  
https://github.com/SeoNaRu/lexguard-mcp

์ด ์ €์žฅ์†Œ(korean-law-mcp)๋Š” ๋” ์ด์ƒ ์œ ์ง€๋ณด์ˆ˜๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.  
์ตœ์‹  ๊ธฐ๋Šฅ ๋ฐ ์—…๋ฐ์ดํŠธ๋Š” ์ƒˆ๋กœ์šด ์ €์žฅ์†Œ๋ฅผ ์ด์šฉํ•ด์ฃผ์„ธ์š”.