gqai-law-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@gqai-law-mcpWhat does Article 382 of the Commercial Act say?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
GQAI 법령조회 MCP
법제처 국가법령정보 OPEN API 기반 원격 MCP 서버. 사용자가 인증키를 발급받지 않고도
https://law.gqai.kr/mcp에 연결해 법령·판례·행정규칙·자치법규를 조회한다.
기반: chrisryugj/korean-law-mcp v4.10.0 포크 (MIT)
실행: Vercel Node.js Function, 서울 리전(icn1), Stateless Streamable HTTP
소스 주석과 아래 문서에 나오는 "계획서 N절"은 이 저장소에 포함하지 않은 내부 구축 계획서(v1.1)를 가리킨다. 설계 판단의 근거는 각 파일 상단 주석과 이 README의 방어 구조 절에 그대로 옮겨 두었으므로, 계획서 없이도 코드를 읽는 데 지장이 없다.
저장소 구조
upstream 소스 파일은 한 줄도 수정하지 않았다. GQAI 기능은 전부 새 파일로 얹혀 있어
월 1회 upstream 병합 시 src/에서 충돌이 나지 않는다.
교체한 것은 프로젝트 설정 파일뿐이다 — package.json, .gitignore, .env.example.
경로 | 소유 | 역할 |
| upstream | 도구 정의, 법제처 클라이언트, 파서 |
| GQAI | 법제처 응답 캐시 (전역 |
| GQAI | Redis 전역 토큰버킷 + 일일 캡 |
| GQAI | Upstash Redis REST 클라이언트 |
| GQAI | 출구 IP 안정성 감시 |
| upstream | 로컬·Fly 배포용 (Vercel에서 미사용) |
| GQAI |
|
| GQAI | Vercel Function 엔트리포인트 |
| GQAI | Cron 감시 엔드포인트 |
| GQAI | 공개 안내 페이지 |
| GQAI | 수용 시험·운영 확인·로컬 기동 |
Related MCP server: Vaquill-AI/vaquill-mcp
방어 구조
공용 서버 키 하나를 불특정 다수가 공유하므로, 쿼터 소진과 비용 폭주를 세 겹으로 막는다.
요청 → [Vercel WAF·Spend 한도] → [응답 캐시] → [전역 한도] → 법제처
비용 방어 1차 방어 2차 방어캐시가 1차인 이유: 한도 제한은 쿼터가 소진되는 속도만 늦추지만, 캐시는 법제처 호출 자체를 없앤다. 법령 조문은 개정 전까지 불변이고 트래픽이 인기 법령에 쏠리므로 실효 방어는 캐시 쪽이다.
IP별 제한을 총량 보호에 쓰지 않는 이유: 원격 MCP 클라이언트(claude.ai 커넥터 등) 트래픽은 최종 사용자 IP가 아니라 클라이언트 운영사의 소수 egress IP로 도달한다. IP는 사용자 식별 수단이 될 수 없어 봇 방어 수준으로만 운용하고, 총량은 전역 한도가 맡는다.
저장소 장애 시: 인메모리 한도로 degrade하되 인스턴스 수를 가정해 한도를 나눠 잡는다
(KV_FALLBACK_DIVISOR). fail-open은 쿼터 무방비, fail-closed는 전체 중단이라 어느 쪽도
쓰지 않는다. degrade 상태는 /health의 limiter.degradedCount로 관측한다.
로컬 개발
npm install # 로컬은 전체 설치 (--omit=optional 쓰지 말 것)
npm run build
node scripts/local-server.mjs 8000scripts/local-server.mjs는 Vercel에 배포되는 것과 같은 앱을 띄운다.
upstream의 npm start(http-server.ts)는 Vercel용 경로(캐시·Redis 한도·Host 검증)를
전혀 타지 않으므로 배포 전 검증에는 쓰지 않는다.
시험
npm test # 단위 시험 186건
node scripts/smoke-test.mjs http://127.0.0.1:8000 # 수용 기준 (계획서 7장)LAW_OC가 없으면 법제처 실호출 항목은 자동으로 skip된다.
배포
1. Vercel 프로젝트 연결
vercel link빌드 설정은 vercel.json이 전부 담고 있다(리전 icn1, maxDuration, Cron, rewrite).
2. 환경변수 등록
.env.example이 전체 목록과 각 값의 의미를 담고 있다.
Preview와 Production에 각각 등록하며, 값은 Vercel Secret에만 저장한다.
최소 필수: LAW_OC, UPSTASH_REDIS_REST_URL, UPSTASH_REDIS_REST_TOKEN,
CRON_SECRET, FALLBACK_DAILY_CAP
3. 배포 후 검증
node scripts/smoke-test.mjs https://<preview-url> # 관문 A·B·D
node scripts/synthetic-check.mjs https://<preview-url> --run # 감시 1회 실행4. Vercel 콘솔에서 추가 설정
vercel.json으로 표현할 수 없어 콘솔에서 직접 해야 하는 것들:
Spend Management: 지출 한도와 알림 임계값 (429를 반환해도 Function 호출 비용은 발생한다)
Firewall/WAF: 허용 경로·메서드 외 트래픽 차단
Log Drain 또는 알림: 오류율 급증·synthetic 연속 실패 수신 채널
운영
일일 확인 (공개 후 첫 7일)
node scripts/synthetic-check.mjs https://law.gqai.kr캐시 적중률, 한도 백엔드 상태, synthetic 실패율을 한 화면에 요약한다.
/health가 같은 정보를 JSON으로 준다.
고정 IP 필요 여부 판단 (관문 A)
Vercel 출구 IP는 동적 풀에서 배정되므로 배포 직후 연속 성공만으로는 안정성을 확정할 수 없다.
/api/synthetic이 매시간 캐시를 우회해 법제처를 실호출하고 결과를 누적한다.
1~2주간 실패율이 임계(기본 2%) 아래로 유지되면 고정 IP 불필요로 확정하고,
초과하면 대체 인프라(Fly.io/VPS) 또는 Vercel Static IP를 검토한다.
감시가 캐시를 우회하는 것이 핵심이다. 캐시를 타면 법제처가 완전히 끊긴 상태에서도 저장된 응답이 돌아와 계속 "정상"으로 보고된다.
장애 대응
/health와 MCPinitialize를 분리 확인/health의synthetic.lastFail에서 실패 유형 확인인증 실패→ OC 상태, 법제처 도메인 등록, Referer 확인HTML 페이지 반환→ 안티봇 또는 법제처 점검HTTP 5xx→ 법제처 장애
최근 배포를 이전 정상 버전으로 Promote
키 유출 의심 시 법제처에서 OC 변경 후 재배포
출구 문제가 지속되면
law.gqai.krDNS를 대체 인프라로 변경 (DNS TTL을 평시 300초 이하로 유지해 전환 시간을 줄여둔다)
캐시가 장애를 가리거나 연장한다고 판단되면 CACHE_DISABLED=1로 즉시 끌 수 있다.
upstream 병합 (월 1회)
git fetch upstream
git log --oneline HEAD..upstream/main # 변경 내역 확인
git merge upstream/main
npm install && npm run build && npm test
node scripts/smoke-test.mjs http://127.0.0.1:8000GQAI 파일은 upstream에 존재하지 않으므로 충돌은 package.json,
.gitignore, .env.example 정도에서만 발생한다.
src/server/http-server.ts가 바뀌었다면 src/server/vercel-app.ts에
반영할 보안 변경이 있는지 반드시 diff를 대조한다. 두 파일은 같은 뿌리에서 갈라졌다.
알려진 트레이드오프
이미지 기반 PDF의 OCR을 지원하지 않는다.
kordoc의 선택적 의존성인 onnxruntime-node(131MB) + @huggingface/transformers +
sharp가 Function 번들로 딸려 들어와, 법령 조회 서비스에 ML 런타임 150MB가
얹히는 상태였다. 배포 시 --omit=optional로 제외해 번들을 166.5MB → 10.8MB로 줄였다.
영향은 이미지 기반 PDF 별표의 텍스트 추출뿐이며, 이 경우 upstream 코드가 이미 다운로드 링크를 안내하는 경로로 degrade한다. 일반 HWPX/HWP5/PDF 텍스트 별표는 정상 동작한다. 계획서 3.2절 경량 프로필의 1순위 제외 대상과 일치한다.
로컬 개발에서는 npm install(전체)을 쓴다. --omit=optional은 vitest의 네이티브
바인딩까지 제거해 시험이 돌지 않는다. 배포 설치만 npm ci --omit=optional이다.
설치 복원력: Vercel 첫 빌드는 npm 캐시가 비어 132MB를 전량 내려받고, 그중
pdfjs-dist 하나가 40MB다. 레지스트리 연결이 끊기면(ECONNRESET) 기본 재시도로는
복구되지 않아 설치가 통째로 실패하므로, .npmrc에서 재시도 횟수·백오프 상한을 늘리고
불필요한 레지스트리 왕복(audit·fund)을 껐다. npm install 대신 npm ci를 쓰는 것도
같은 이유다 — 락파일대로만 받아 메타데이터 재해석 왕복이 없다.
라이선스 및 출처
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityDmaintenanceMCP server for the Korean National Assembly Open API, enabling querying of bills, members, votes, committees, and more via natural language.20Apache 2.0

Vaquill-AI/vaquill-mcpofficial
AlicenseAqualityAmaintenanceMCP server for Vaquill legal research API. Covers US federal + 50-state law (USC, CFR, state legislation, CourtListener case law)194MIT- FlicenseAqualityDmaintenanceMCP server that enables AI agents to search Korean laws and retrieve article contents using the Korean Ministry of Legislation's law information API.2
- Alicense-qualityDmaintenanceEnables searching and retrieving Korean statutes, precedents, and constitutional court decisions via MCP, using the National Law Information Center API.4,7961MIT
Related MCP Connectors
A paid remote MCP for CLI tool MCP, built to return verdicts, receipts, usage logs, and audit-ready
A paid remote MCP for OpenAI Codex context compressor, built to return verdicts, receipts, usage log
Japan Law MCP — Japanese national laws & ordinances via the e-Gov Law API.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/yongkyu4803/gqai-law-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server