본문 바로가기
🗜 MCP

[국가법령 MCP 서버 만들기] - 1. API 발급, 환경 구성

by Majestyblue 2025. 8. 28.

살다보면 법을 알아야 할 때가 반드시 온다. 

학교폭력 담당교사 시절 학폭법을 달달달 외었던 기억이 난다. (지금은 대입쪽...) 그래서 당분간 법을 볼 일이 없었는데...

 

현재 신축 아파트로 이사왔는데 벽지 한 곳이 들떠 하자 보수를 해야 한다.

그런데 입주 전부터 계속 요구를 하였는데도 입주 당일까지 온다는 약속도 어기고 오지 않았다.

뿐만 아니라, 벽지 보수를 위해 다 뜯어내야 함은 물론이거니와 커텐과 같은 기물 파손과 먼지가 날릴 수 있다는 사실을 이야기해 주었다.

 

너무 화가 나서 인터넷 검색을 해 보면서 방법을 찾아갔는데, 이런건 '하자심사분쟁조정위원회' → 소액민사소송  이런식으로 가는 것을 알 수 있었다.

 

X톡을 통하여 상담한 내용인데, 일반인이 생각하기에 이런 법들을 알 리가 있나;;;;

 

때마침 이러한 법령을 검색하는 AI가 있었으면 좋겠다는 주변 의뢰도 있어서, '국가법령 MCP 서버'를 만들어 보기로 했다.

 

1. API 신청하기

국가법령정보 공동활용 사이트에 들어가서 회원가입 → OPEN API 신청을 해야 한다.

https://open.law.go.kr/LSO/openApi/guideList.do

 

국가법령정보 공동활용

※ 체계도 등 부가서비스는 법령서비스 신청을 하면 추가신청 없이 이용가능합니다.

open.law.go.kr

 

 

'전체 선택' 체크

 

다음날 되니 신청이 완료되었음을 확인할 수 있었다.

 

 

 

2. 가상환경 구성하기

5. gemini cli + 커스텀 mcp 만들기 : uv 환경구성

 

5. gemini cli + 커스텀 mcp 만들기 : uv 환경구성

1. uv 설치최근 대세는 uv라고 한다. 지금까지 miniconda를 사용했었는데 과연 이게 어떨지 궁금하긴 하다. 참고로 uv를 설치하는 과정은 3. gemini cli + mcp(SQLite) 3. gemini cli + mcp(SQLite)1. SQLite란SQLite는 데

toyourlight.tistory.com

여기 포스팅을 보며 진행하면 된다.

 

uv init E:\my_mcp\mylaw_info --python 3.11

E:

cd E:\my_mcp\mylaw_info

uv venv

.venv\Scripts\activate

uv add mcp[cli] httpx xmltodict requests beautifulsoup4 lxml selenium webdriver-manager fastapi

# API 통신 테스트를 위해 requests 라이브러리 설치

 

 

 

vs code로 잘 불러와지면 성공이다.

 

 

3. API 호출해 보기

법령정보사이트에서 OPEN API 활용가이트를 클릭하면 아래와 같이 판례, 헌재결정례, 법령해석례, 행정심판례를 볼 수 있는데, 의뢰한 분의 말씀에 따르면 국가일을 하면서 위의 4가지를 자주 봐야 한다고 한다. 

 

 

 

목록이 뭐가 중요한가 싶어서 바로 본문 보기를 눌러보니, 판례 본문을 조외하려면 '판례 일련번호'하고 '판례명'을 알아야 한다고 한다. 그러면 어쩔 수 없이 판례 목록을 봐야 한다.

 

 

 

 

음... 일단 본문 검색도 되는 것 같으니까 요청을 해 보자. (도와줘 AI야!)

 

요청 URL : http://www.law.go.kr/DRF/lawSearch.do?target=prec
요청 변수 (request parameter)
요청변수	값	설명
OC	string(필수)	사용자 이메일의 ID(g4c@korea.kr일경우 OC값=g4c)
target	string : prec(필수)	서비스 대상
type	char(필수)	출력 형태 : HTML/XML/JSON
search	int	검색범위 (기본 : 1 판례명) 2 : 본문검색
query	string	검색범위에서 검색을 원하는 질의(검색 결과 리스트)
(정확한 검색을 위한 문자열 검색 query="자동차")

이 자료를 바탕으로 "하자 보수" 판례를 JSON 파일로 결과를 출력하는 파이썬 코드를 작성해줘 내 OC값은 OOOOOO 야

 

import requests
import json

# API 요청에 필요한 파라미터 설정
# OC 값은 사용자 ID로, 제공해주신 '<your_OC>'를 사용합니다.
# 검색어(query)는 '하자 보수'로 설정합니다.

params = {
    'OC': '<your_OC>',
    'target': 'prec',
    'type': 'JSON',
    'search': '1',
    'query': '하자 보수'
}

# API 요청을 보낼 URL
url = 'http://www.law.go.kr/DRF/lawSearch.do'

try:
    # GET 방식으로 API 요청 보내기
    response = requests.get(url, params=params)

    # 응답 상태 코드가 200 (성공)일 경우
    if response.status_code == 200:
        # 응답 받은 데이터를 JSON 형식으로 변환
        data = response.json()

        # JSON 데이터를 예쁘게 출력 (들여쓰기 4칸, 한글 깨짐 방지)
        print(json.dumps(data, indent=4, ensure_ascii=False))

    else:
        print(f"API 요청에 실패했습니다. 상태 코드: {response.status_code}")
        print(f"응답 내용: {response.text}")

except requests.exceptions.RequestException as e:
    print(f"오류가 발생했습니다: {e}")

 

오 출력된다!

 

 

하지만 '도배 하자 보수'를 검색하니 나오지 않는다.

 

 

 

그래서 본문 검색(search=2)까지 확대해서 해보았는데 영 엉뚱한 이야기가 나온다.

 

 

일단 성공적으로 불러올 수 있다는 것을 알 수 있었다.