Skip to main content
Glama

DAPA MCP

DAPA MCP는 대한민국 방위사업 업무를 지원하는 읽기 전용 Model Context Protocol 서버다. LLM의 기억 대신 법제처 국가법령정보 공동활용 Open API와 출처가 표시된 DAPA_info를 조회한다. 핵심 원칙은 Search → Retrieve → Verify → Compare → Cite → Explain이다.

v0.1.0 Core와 법령정보 MCP Parity 1차를 구현한다. 로컬 stdio, Vercel용 Streamable HTTP와 17개 도구, DAPA 공식 법령·행정규칙 카탈로그, 법령 상세 구조화, 연혁 조회, 기준일 검색을 제공한다. 특허, 논문, 뉴스, 공개데이터, 신구조문 비교는 아직 구현하지 않았으며 ROADMAP.md에 구분되어 있다.

왜 MCP인가

  • 현행 법령과 과거·폐지 규정을 혼동하지 않도록 공식 Source를 우선한다.

  • 인용한 법령명·조문·사건번호를 다시 조회해 검증한다.

  • 정상 0건인 NOT_FOUND와 timeout·429·5xx·손상 응답인 SOURCE_UNAVAILABLE을 구분한다.

  • 조직·업무 지식에도 출처, 확인일, 검증 여부를 붙인다.

Related MCP server: Korean Law MCP Server

Architecture

ChatGPT / Claude Web-compatible MCP client ── HTTPS /law ─┐
Codex / Claude Code / Gemini CLI ───────── local stdio ───┤
                                                         ▼
         DAPA MCP Tool Registry
           ├── LawProvider ── 국가법령정보 Open API
           ├── DapaCatalogProvider ── DAPA 공식 목록 스냅샷
           └── DapaInfoProvider ── DAPA_info

상세 설계와 벤치마크 기록은 docs/ARCHITECTURE.md를 참고한다.

설치와 실행

요구사항은 Node.js 20.19 이상이다.

npm install
cp .env.example .env
npm run build
npm test
npm run start

npm run start는 stdio JSON-RPC 서버이므로 터미널에서 대기하는 것이 정상이다. 일반 로그를 stdout으로 출력하지 않는다.

공식 DAPA 법령·행정규칙 목록을 갱신하려면 다음 명령을 실행한다.

npm run sync:dapa-catalog

카탈로그의 각 항목을 국가법령정보 공동활용 Open API의 최신 목록과 대조해 미매칭 목록을 만들려면 다음 명령을 실행한다. 행정규칙은 DAPA 기관 범위에서 현행 목록과 연혁 목록을 함께 수집한 뒤 문서 ID·발령번호·발령일자·제목 순으로 연결한다. 개발용 스크립트에는 인증값을 환경변수로 전달하며 실제 값은 저장소와 셸 명령 기록에 남기지 않는다.

LAW_API_OC="<your-oc>" npm run audit:dapa-catalog

PowerShell에서는 다음처럼 실행한다.

$env:LAW_API_OC = "<your-oc>"
npm run audit:dapa-catalog
Remove-Item Env:LAW_API_OC

결과는 DAPA_info/legal/coverage-report.json에 저장된다. missing은 DAPA 공식 목록의 제목이 국가법령정보 API에서 동일하게 검색되지 않았다는 뜻이며, 법적 부존재를 단정하지 않는다. 폐지·제정 이력, 제목 표기 차이, 원문이 파일로만 제공되는 항목은 별도 확인이 필요하다. title_variant는 DAPA 표시 제목과 API canonical 제목이 다르지만 대응 문서로 확인된 경우다. metadata_mismatch는 제목은 같지만 행정규칙 발령번호·발령일자가 다른 경우이고, external_only는 DAPA가 국가법령정보 외부 원문 링크만 제공하는 법령이다.

이 보고서는 카탈로그 스냅샷과 API 목록 조회 시점에 종속된다. 카탈로그를 다시 동기화하거나 API 최신성이 중요할 때는 반드시 감사도 다시 실행해야 하며, missing 건수는 법적 부존재가 아니라 아직 API 문서와 연결되지 않은 후보를 뜻한다. 따라서 전체 카탈로그가 국가법령정보 본문으로 완전히 커버된 것으로 간주하지 않는다.

업무·정책 메뉴와 각 페이지의 하위 탭 본문을 DAPA_info/policy/catalog.json으로 갱신하려면 다음 명령을 실행한다. 방위사업청 내부 페이지만 수집하며 menuSeq와 최종 페이지 ID를 기준으로 중복을 제거한다. 동시에 두 번 실행하면 잠금 파일을 감지해 두 번째 동기화를 종료한다.

npm run sync:dapa-policy

공식 14개 범주·40개 세부 API를 현재 실서버에 순차 호출해 목록·본문 연결과 오류를 점검하려면 다음 명령을 실행한다. 맞춤형 기본 샘플 코드는 공식 가이드의 L/A/O 코드를 사용하며, 환경변수로 교체할 수 있다.

LAW_API_OC="<your-oc>" npm run backtest:law-api

환경변수

이름

필수

기본값

설명

LAW_API_OC

없음

국가법령정보 공동활용 인증값; 환경변수 또는 로컬 .env로 설정

LAW_API_TIMEOUT_MS

아니오

15000

개별 공식 API 요청 timeout; Vercel 함수 한도 안에서 부분 결과를 반환하도록 제한

LAW_API_RETRY_LIMIT

아니오

1

429/5xx 및 빈 응답·점검 HTML 재시도 상한

LAW_API_CACHE_TTL_MS

아니오

300000

API 검색 캐시 TTL(밀리초), 0이면 캐시 비활성화

LAW_API_DETAIL_CACHE_TTL_MS

아니오

21600000

법령 상세 본문 캐시 TTL(기본 6시간), 0이면 캐시 비활성화

LAW_API_MAX_TEXT_RESPONSE_BYTES

아니오

8388608

JSON/HTML API 응답 최대 바이트

LAW_API_MAX_RESOURCE_RESPONSE_BYTES

아니오

26214400

별표·서식 파일 최대 바이트

LAW_API_MAX_CONCURRENCY

아니오

8

서버 인스턴스 하나가 국가법령정보에 동시에 보내는 요청 상한; 모든 법령 Provider가 공유

LAW_API_MAX_QUEUE

아니오

128

서버 인스턴스별 공식 API 대기 요청 상한; 초과 요청은 빠르게 제한 오류로 반환

LAW_API_CONTENT_SEARCH_BUDGET_MS

아니오

25000

통합 목록·본문 검색 전체 시간 예산; 남은 시간이 없으면 새 공식 API 호출을 시작하지 않고 부분 결과 반환

LAW_API_MAX_TOOL_RESPONSE_CHARS

아니오

250000

법령 API MCP 도구의 JSON 출력 최대 문자 수

LAW_API_REFERER

아니오

https://www.law.go.kr/

클라우드에서 공식 API에 전달할 Referer

LAW_API_USER_AGENT

아니오

dapa-mcp/0.1 (...)

공식 API에 전달할 서버 식별자

MCP_MAX_REQUEST_BYTES

아니오

1048576

HTTP MCP 요청 본문 최대 바이트(1 MiB)

DAPA_INFO_PATH

아니오

./DAPA_info

공개지식 루트

서버는 LAW_API_OC 환경변수 또는 로컬 .env에 설정된 인증값을 사용한다. 인증값 자체는 저장소, 문서, URL, 로그에 기록하지 않는다. .env는 Git에서 제외된다. 값이 없으면 서버는 시작되지만 source_health에서 law: not_configured로 알려 주고 법령 API 호출은 하지 않는다.

국가법령정보 API 설정

국가법령정보 공동활용 인증값을 발급받은 뒤 MCP Client가 서버를 시작할 때 LAW_API_OC 환경변수로 전달하고, source_health에서 law: healthy를 확인한다. 공개 Vercel 배포에서는 Project Settings의 환경변수에 저장하고 문서나 클라이언트 설정에 값을 직접 넣지 않는다.

조직 배포 기준

여러 직원이 사용하는 운영 구성은 다음 흐름을 기준으로 한다.

직원용 LLM → 조직 OAuth/SSO → DAPA MCP 여러 인스턴스 → 공용 Redis 캐시 → 국가법령정보 API
                                      └→ 지연·오류율·호출량 모니터링

현재 저장소는 공식 데이터 파싱, 인스턴스 안의 검색·본문 캐시, 동일 검색 병합, 공식 API 동시 호출 상한과 통합 검색 시간 예산을 제공한다. 반면 조직 사용자 인증과 인스턴스 사이의 공용 Redis 캐시는 배포 환경의 인증 제공자와 저장소를 선택해야 하므로 기본 코드에 임의의 사업자나 계정을 고정하지 않는다. 운영 전에는 No authentication 구성을 조직 OAuth로 바꾸고, 사용자별 rate limit과 공용 캐시를 연결해야 한다.

MCP 도구

도구

역할

search_legal

법령·행정규칙·자치법규·판례·헌재·해석례·행정심판 검색

search_legal_content

법령·행정규칙·자치법규·판례·헌재·해석례·행정심판의 자연어 본문검색; 자료 유형 자동 판별, 최대 500자, 기본 fast, 전체 검토는 thorough

get_legal_detail

검색 결과 documentId 상세조회

get_legal_history

법령 제정·개정·폐지 연혁 조회

list_legal_apis

DAPA 관련 국가법령정보 14개 범주·40개 목록/본문 API 카탈로그 조회

query_legal_api

카탈로그 apiId로 공식 목록·본문을 온디맨드 조회

get_legal_api_body

목록 apiId와 결과 식별자로 본문 API 자동 연결; 별표·서식 파일 본문 추출

verify_citations

법령명·조문번호·표기된 조문제목과 사건번호 검증

search_dapa_info

조직·용어·업무 공개지식 검색

get_dapa_organization

조직명·별칭 상세조회

search_dapa_policy

업무·정책 메뉴와 하위 탭의 본문 검색

get_dapa_policy_page

검색 결과 ID로 업무·정책 전체 본문 조회

search_dapa_legal_catalog

DAPA 공식 법령·행정규칙 목록 검색

get_dapa_legal_catalog_item

DAPA 공식 목록 항목 상세조회

get_dapa_legal_content

DAPA 항목을 국가법령정보 본문과 연결해 조회

dapa_catalog_status

DAPA 공식 목록 동기화 상태

source_health

Provider 설정과 상태 확인

서버 답변 지침

MCP 서버는 연결 초기화 때 Codex, Claude 등 지원 클라이언트에 답변 지침을 전달한다. 지침은 다음 원칙을 적용한다.

  • 국가법령정보 공동활용 API의 최신 본문을 최우선 근거로 사용하고, DAPA 카탈로그는 소관 범위와 분류를 확인하는 보조자료로 사용한다.

  • 별도 기관 지정이 없는 직원 질문은 방위사업청 업무 질문으로 해석한다. 같은 용어가 여러 기관에 있으면 방위사업청 소관·공동소관 또는 방위사업청 업무에 직접 적용되는 법령·행정규칙·판례·해석례를 먼저 검토하고, 다른 기관 자료는 비교·보충 근거로 분리한다.

  • 같은 용어나 쟁점이 여러 법령·행정규칙에 있으면 대표 문서 하나에서 멈추지 않고 서로 독립적으로 관련된 모든 문서의 본문을 확인한다. 예를 들어 야전운용시험방위사업관리규정국방전력발전업무훈령을 각각 조회하고 다른 관련 문서도 확인한다.

  • 법령·행정규칙의 문서명과 제○조 제○항 제○호, 별표·서식 번호를 원문에 존재하는 수준까지 표시한다. 판례·결정례·해석례는 사건·안건번호, 날짜와 판단 위치를 표시한다.

  • 법령·행정규칙뿐 아니라 판례, 헌재결정례, 법령해석례, 행정심판례와 지원되는 공식 API 범주를 함께 조회한다. 0건, API 미지원, 인증 실패와 출처 장애를 구분해 알린다.

  • 검색 결과는 법률 자문이나 정답이 아니라 공식 근거에 기반한 검토 방향이다. 적용 가능성, 해석상 쟁점과 추가 확인사항을 밝히며 최종 판단은 담당자가 원문과 사실관계를 확인해 수행한다.

권장 답변 순서는 [검토 범위][방위사업청 우선 근거][다른 기관 비교·보충 근거][조회 결과 없음 또는 한계][검토 방향][사람의 최종 확인]이다. 제목이나 검색 메타데이터만으로 관련성을 확정하지 않고 후보별 상세 본문을 확인한 뒤 인용한다.

committee_decision은 입력 계약만 제공하고 실제 Provider는 아직 설정하지 않는다. asOfDate는 법제처 eflaw 기준일 검색으로 처리하며, 해당 기준일 자료가 없으면 NOT_FOUND를 반환한다. currentOnly 기본값은 true이며, 행정규칙도 명시적인 연혁·폐지 상태를 제외한다. 과거 자료가 필요하면 currentOnly: false를 사용하고, 최신 API 재조회가 필요하면 forceRefresh: true를 사용한다. 성공한 검색 결과의 기본 캐시 TTL은 5분이다. query_legal_apiget_legal_api_body도 같은 currentOnly·asOfDate 입력을 사용하며, 응답의 temporalScope로 적용 범위(current, all, as_of, not_applicable)를 확인할 수 있다. 법령·행정규칙 외 구분은 시간 필터가 적용되지 않으면 not_applicable로 명시한다.

search_legal_content의 기본 fast 모드는 법령·행정규칙·자치법규·판례·헌재결정례·법령해석례·행정심판례에서 입력 문장과 핵심 용어로 첫 페이지를 조회하고, 상위 3개 본문에서 직접 근거가 확인되면 즉시 반환한다. 근거가 부족할 때만 요청한 limit 범위에서 최대 5개까지 확장한다. thorough 모드는 검색어 최대 3개·2페이지·본문 최대 10개를 확인한다. 본문 요청은 작은 묶음으로 제한하며 동일 검색과 동일 문서의 동시 요청은 하나로 합치고 성공한 상세 본문은 기본 6시간 재사용한다. 본문에서 질의가 확인된 결과는 match: "content", 검색 메타데이터만 일치한 결과는 match: "metadata"로 구분한다. 법령·행정규칙은 관련 조문을, 판례 계열은 관련 판단 원문을 excerpts로 제한해 반환한다. 한 후보가 여러 국가법령정보 문서와 연결되면 get_dapa_legal_contentmatches 배열에 각 문서의 본문을 모두 반환한다.

동시 직원 요청은 서버 인스턴스별 LAW_API_MAX_CONCURRENCY 상한을 공유해 국가법령정보 API로 한꺼번에 몰리지 않게 하고, LAW_API_MAX_QUEUE를 넘는 요청은 무한 대기시키지 않는다. 목록과 본문 조회, 대기열은 모두 같은 전체 시간 예산을 사용한다. 이 메모리 캐시와 상한은 Vercel의 서로 다른 함수 인스턴스 사이에는 공유되지 않는다. 조직 운영에서는 Redis 같은 공용 캐시, 사용자 인증, 사용자별 rate limit과 지연·오류율 모니터링을 배포 계층에 별도로 구성해야 한다.

국가법령정보 API 범위

list_legal_apis는 아래 14개 범주의 API 메타데이터만 반환한다. 실제 응답 본문은 query_legal_api가 요청 시점에 법제처에서 목록을 조회하고, get_legal_api_body가 목록 결과의 식별자 또는 첨부 링크를 받아 본문을 조회하므로 전체 법령 데이터를 MCP 컨텍스트나 DAPA_info에 적재하지 않는다. list_legal_apis의 각 API에는 실행 가능한 bodyTool과, 별도 본문 API가 있는 경우 bodyApiId가 함께 반환된다.

범주

목록·본문 처리

사전컨설팅 의견서

감사원 baiPvcs 목록·본문

중앙부처 1차 해석

방위사업청 dapaCgmExpc 목록·본문

법령정보 지식베이스

용어·조문·관련법령·지능형 검색 9종

맞춤형

법령·행정규칙·자치법규 목록 및 조문 6종; vcode 필요

법령용어

lstrm 목록·본문

별표·서식

법령·행정규칙·자치법규 목록 및 HWP/HWPX/PDF/XLSX/DOCX 원문 본문 추출

조약

trty 목록·본문

헌재결정례

detc 목록·본문

법령해석례

expc 목록·본문

행정심판례

decc 목록·본문

법령

law 목록·본문

행정규칙

admrul 목록·본문

자치법규

ordin 목록·본문

판례

prec 목록·본문

별표·서식은 공식 가이드에 독립 본문 API가 없으므로 목록 응답의 별표서식파일링크 또는 별표서식PDF파일링크get_legal_api_bodyattachmentUrl에 전달한다. 서버가 공식 법제처 링크만 내려받아 파일을 Markdown 본문으로 변환한다. 맞춤형 목록은 연결된 일반 법령 본문 API로, 맞춤형 조문 API는 자체 응답으로 해석된다.

DAPA 카탈로그는 공식 홈페이지의 범위·분류·발령 메타데이터를 보존하고, 실제 조문과 법적 본문은 search_legalget_legal_detail의 국가법령정보 공동활용 API에서 조회한다.

MCP Client 연결

모든 예시의 /absolute/path/to/DAPA MCP를 실제 절대경로로 바꾸고 먼저 빌드한다.

Codex CLI

현재 Codex CLI의 로컬 stdio 등록 명령은 다음 형태다.

codex mcp add dapa-mcp -- node "/absolute/path/to/DAPA MCP/dist/index.js"
codex mcp list

Claude Code

Claude Code 공식 MCP 문서의 stdio 형식을 사용한다.

claude mcp add --transport stdio dapa-mcp -- \
  node "/absolute/path/to/DAPA MCP/dist/index.js"
claude mcp list

Claude Desktop은 현재 로컬 서버를 Desktop Extension으로 배포하는 방식을 권장한다. v0.1.0은 .mcpb 패키지를 제공하지 않으므로 개발 중에는 Claude Code stdio 연결을 사용한다.

Gemini CLI

Gemini CLI 공식 MCP 문서에 따라 ~/.gemini/settings.jsonmcpServers에 추가한다.

{
  "mcpServers": {
    "dapa-mcp": {
      "command": "node",
      "args": ["/absolute/path/to/DAPA MCP/dist/index.js"],
      "timeout": 30000,
      "trust": false
    }
  }
}

ChatGPT와 OpenAI API

Vercel 배포 후 ChatGPT 개발자 모드의 앱 생성 화면에 https://<Vercel 도메인>/law를 입력한다. 개인 개발·검증 배포만 No authentication을 사용할 수 있고, 직원용 운영 배포는 회사 OAuth/SSO가 세 MCP 경로를 모두 보호해야 한다. Vercel의 일반 로그인 화면이 아니라 MCP 클라이언트가 사용할 수 있는 OAuth 인증이어야 한다.

Vercel 배포 체크리스트와 ChatGPT, Claude, Gemini, Codex의 등록 절차는 클라이언트 연결 가이드를 따른다.

GitHub Pages 정책 페이지

Plugin 공개 심사에 사용할 개인정보처리방침과 이용약관은 docs/에 정적 페이지로 제공한다. 저장소 Settings → Pages에서 Source를 GitHub Actions로 한 번 선택하면 main의 변경 때마다 자동 배포된다. 배포 후 주소는 다음과 같다.

  • 개인정보처리방침: https://ai-studying-man.github.io/DAPA-MCP/privacy/

  • 이용약관: https://ai-studying-man.github.io/DAPA-MCP/terms/

  • 서비스 안내: https://ai-studying-man.github.io/DAPA-MCP/

이 주소들은 Plugin 메타데이터의 Website, Privacy policy URL, Terms of Service URL에 사용한다. MCP 서버 연결 주소인 https://dapa-law-mcp.vercel.app/law와는 구분한다.

ChatGPT·Codex 플러그인 마켓플레이스

저장소에는 원격 DAPA MCP 앱을 참조하는 플러그인 패키지와 GitHub 마켓플레이스 카탈로그가 포함되어 있다. 플러그인은 .app.json으로 ChatGPT에 등록된 앱을 참조하므로 GPT 웹과 Codex의 지원 화면에서 함께 사용할 수 있다.

플러그인 페이지에서 마켓플레이스를 추가할 때 다음 값을 사용한다.

항목

출처

https://github.com/ai-studying-man/DAPA-MCP

Git ref

main

Sparse 경로

비워 둠

마켓플레이스를 추가한 뒤 DAPA MCP 플러그인을 설치하고 새 대화를 시작한다. 저장소의 .app.json은 기존 원격 앱 연결을 참조할 뿐 새 앱을 생성하거나 접근 권한을 부여하지 않으므로, 조직 배포 시 관리자는 해당 앱과 플러그인을 대상 역할에 허용해야 한다.

DAPA_info 추가 방법

구조화 항목은 items 배열을 가진 JSON으로 작성한다. 필수 필드는 id, name, category, description, source, sourceUrl, lastVerifiedAt, verified다. 확인되지 않은 정보는 verified: false로 저장하고 공식 사실처럼 표현하지 않는다. 설명 자료는 Markdown으로 두되 법적 근거를 대신하지 않는다고 명시한다.

{
  "items": [
    {
      "id": "term-example",
      "name": "예시 용어",
      "aliases": [],
      "category": "terminology",
      "description": "쉬운 설명",
      "source": "공식 문서명",
      "sourceUrl": "https://example.go.kr/source",
      "lastVerifiedAt": "2026-08-27",
      "verified": false
    }
  ]
}

개발과 검증

npm run lint
npm run typecheck
npm test
npm run build

테스트는 정규화, 로컬 지식 검색, 공식 API wire fake, 429/5xx/손상 응답, 인용 검증, 실제 stdio 및 Streamable HTTP MCP 초기화·목록·호출을 포함한다.

보안과 법률상 주의

  • 공개 가능한 정보만 저장한다. 개인정보, 비공개 사업정보, 군사기밀, 내부망 주소를 금지한다.

  • 직원용 HTTP 서버는 조직 OAuth/SSO로 /law, /mcp, /api/mcp를 모두 보호하고 사용자별·조직 전체 rate limit, 허용 Origin, 감사 로그를 적용한다.

  • MCP 결과는 법률의견이나 정책결정을 대신하지 않는다.

  • verified: true는 공식 Source에서 해당 데이터를 조회했다는 뜻이지 법적 판단의 보증이 아니다.

  • 뉴스는 향후 추가되어도 법적 근거로 사용하지 않는다.

데이터 출처와 License

소스 코드는 MIT License로 배포한다. 제공 데이터의 권리와 이용조건은 각 원 제공기관 정책을 따른다. 자세한 고지는 NOTICE에 있다.

Available Tools

17 tools
dapa_catalog_statusB
Read-onlyIdempotent

DAPA 공식 법령·행정규칙 카탈로그의 동기화 상태를 반환합니다.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so safety is well covered. The description adds that the returned value is about catalog synchronization, but it does not describe response freshness, format, possible failure modes, or any operational behavior beyond the annotated read-only nature.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that states the resource and the returned information without filler or redundant phrasing. It is appropriately minimal for a zero-parameter status tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless, read-only status tool, the description is mostly adequate, and the annotations cover side-effect safety. However, there is no output schema, and the description does not explain what 'synchronization status' means or what possible values an agent should expect, leaving some ambiguity about how to interpret the response.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has no properties, so there are no parameters to document. With 0 parameters, the baseline of 4 applies, and the description justifiably contains no parameter-level detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific action and resource: it returns the synchronization status of the DAPA official laws and administrative rules catalog. However, it does not explicitly differentiate itself from siblings such as source_health, which may also relate to status-like queries.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance about when to use this tool versus alternatives, and no exclusions or preferred conditions. The only implied usage is 'when you need the catalog sync status,' but the description does not discuss sibling tools or decision criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_dapa_organizationA
Read-onlyIdempotent

방위사업청 조직명 또는 별칭으로 조직 상세를 조회합니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes조직명 또는 별칭

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the method of lookup (by name or alias) but does not go beyond that; no contradictions exist.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, tightly written Korean sentence that conveys the resource, the lookup key, and the operation. Every word earns its place; there is no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple, read-only lookup tool with one well-documented parameter and rich safety annotations, the description is complete enough for an agent to select and invoke it correctly. No output schema exists, but the phrase '조직 상세' sufficiently indicates the return is organization detail information.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%: the single required parameter 'query' is already documented as '조직명 또는 별칭' (organization name or alias). The description essentially restates this same meaning without adding format, examples, or disambiguation guidance, so it adds no new semantic value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('조회합니다' - retrieves) with a clear resource ('방위사업청 조직 상세' - DAPA organization details) and a clear lookup method (by organization name or alias). It is unambiguous and distinct from the legal/policy-focused sibling tools, though it does not explicitly contrast itself with any sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives, no exclusions, and no context about when this lookup is appropriate. The sibling names imply it is organization-related rather than legal/policy-related, but that inference is left entirely to the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_dapa_policy_pageA
Read-onlyIdempotent

search_dapa_policy에서 받은 ID로 업무·정책 페이지 전체 본문을 조회합니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, idempotent, and non-destructive behavior. The description adds that the tool returns the entire page body, which is useful, but it doesn't disclose return format, error behavior, or any additional constraints. This is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with no filler. It efficiently communicates the action, resource, and parameter source in one compact statement.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple: one parameter, no output schema, and rich safety annotations. The description covers what the tool returns (full body text) and the prerequisite ID source. It is complete enough for the low complexity, though a bit more detail about response format would be ideal.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description compensates by explaining that the single 'id' parameter is the ID received from search_dapa_policy. This gives the parameter semantic meaning beyond the raw schema, though it does not specify the ID format or how to extract it from search results.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('retrieves the full body text') and the resource ('work/policy page'), and specifies that the ID comes from search_dapa_policy. This distinguishes it from sibling tools like get_dapa_legal_content and search_dapa_policy itself.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a clear usage context: call this after search_dapa_policy to fetch the full page body for a returned ID. It does not explicitly list exclusions or alternatives, but the ID-source constraint makes the intended workflow obvious.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_dapa_infoB
Read-onlyIdempotent

공개 출처 기반 DAPA_info에서 조직·용어·업무 지식을 검색합니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes
categoriesNo

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds that the search is based on public sources, which is useful context, but it does not disclose other behavioral details such as result ordering, filtering behavior, pagination, or any limitations. It is consistent with the annotations, so no contradiction exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single succinct Korean sentence with no filler or redundancy. It front-loads the key information—public-source basis, resource name, and subject scope—and every phrase earns its place. This is an appropriately sized description for a straightforward search tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With three parameters, no output schema, and a large set of sibling tools, the description is too minimal to be contextually complete. It does not explain return values, how queries should be structured, what categories control, or how this tool relates to similar search tools. The read-only annotations cover safety but not operational completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description carries the full burden of explaining parameters like query, limit, and categories. It completely fails to do so, mentioning only the broad knowledge types that loosely correspond to category values without explaining their meaning, format, or defaults. The description adds no value beyond the schema's structural definitions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (검색합니다, 'searches'), a clear resource (DAPA_info), and a scoped set of subjects (조직·용어·업무 지식, 'organization, terminology, and work knowledge'). This makes the tool's function clear at a glance, but it does not explicitly differentiate it from sibling tools such as search_legal or search_dapa_policy, relying on the resource and subject scope to imply the distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool: when searching DAPA_info for organizational, terminology, or work knowledge. However, it provides no explicit guidance about when not to use it, nor does it mention alternatives among the many sibling search tools. The usage context is present but not fully developed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_dapa_policyB
Read-onlyIdempotent

방위사업청 업무·정책 메뉴와 하위 탭에서 동기화한 공개 본문을 검색합니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes
sectionNo

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, open-world, idempotent, and non-destructive behavior. The description adds useful context that the content is public and synchronized from specific menus, but it does not disclose pagination, ranking, or synchronization freshness.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single tight sentence with no filler. It front-loads the action and object, making it easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only search with one required parameter, this is minimally viable: an agent can invoke it with just a query. However, the optional section parameter is unexplained, there is no output schema, and the definition does not differentiate it among 15 sibling tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not explain query syntax, the meaning of limit, or valid section values. The mention of 'menu and sub-tabs' hints at the section parameter's conceptual scope, but it does not actually map to the parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: it searches public body text synchronized from the DAPA work/policy menu and its sub-tabs. This makes the tool's scope reasonably distinct from legal-search and general-info siblings, though it does not name an alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no explicit when-to-use or when-not-to-use guidance. An agent must infer the appropriate context from the name and the phrase 'searches', leaving ambiguity against close siblings like search_dapa_info and search_legal_content.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

source_healthA
Read-onlyIdempotent

각 데이터 Provider의 설정 및 가용 상태를 반환합니다.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds the return content (configuration and availability), but it does not disclose behavior such as freshness, failure modes, or how availability is determined.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that front-loads the action ('returns') and the resource ('configuration and availability status of each data provider'). There is no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-parameter read-only status tool, the description is mostly complete and the annotations cover safety. However, there is no output schema and the description only vaguely names 'configuration and availability status' without specifying the exact response shape or fields.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the description is not expected to explain parameter semantics. The schema and description are consistent, with 100% coverage of an empty parameter set.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns the configuration and availability status of each data provider, giving a specific verb and resource. It is distinct from the legal-focused sibling tools, though it does not explicitly contrast itself with them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies a health/status-check use case but provides no explicit guidance on when to use this tool versus alternatives or any exclusions. An agent would need to infer applicability from the tool name and general context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_citationsA
Read-onlyIdempotent

법령 조문 또는 사건번호가 공식 출처에 실제 존재하는지 검증합니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
citationsYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint false. The description adds useful context about checking against official sources rather than local data, but it does not disclose what the tool returns or how it behaves when a citation does not exist.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, focused sentence with no filler. It front-loads the key resource ('statutory provisions or case numbers') and the action ('verify existence'), earning its place entirely.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has one simple parameter and strong annotations, which help. However, there is no output schema and the description does not state the return format or per-citation behavior, leaving an important gap for an agent that needs to interpret the verification result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description adds some meaning by clarifying that the 'citations' strings are statutory provisions or case numbers. However, it does not provide format examples or further detail about accepted citation syntax, so the parameter semantics are only partially compensated.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('verifies'), a clear resource ('statutory provisions or case numbers'), and the scope ('actual existence in official sources'). This clearly distinguishes it from the many search/get sibling tools by focusing on existence verification rather than retrieval.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool should be used when one needs to confirm whether legal citations actually exist, but it provides no explicit guidance about when to use this tool versus alternatives such as search_legal, search_legal_content, or get_legal_detail. No exclusions or conditions are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 17 tool updatesv0.1.0
    • First observeddapa_catalog_status
    • First observedget_dapa_legal_catalog_item
    • First observedget_dapa_legal_content
    • First observedget_dapa_organization
    • First observedget_dapa_policy_page
    • First observedget_legal_api_body
    • First observedget_legal_detail
    • First observedget_legal_history
    • First observedlist_legal_apis
    • First observedquery_legal_api
    • First observedsearch_dapa_info
    • First observedsearch_dapa_legal_catalog
    • First observedsearch_dapa_policy
    • First observedsearch_legal
    • First observedsearch_legal_content
    • First observedsource_health
    • First observedverify_citations

TDQS

B3.4/5.0
Disambiguation3/5

The set is separated by source and action, but get_legal_detail, get_legal_api_body, get_dapa_legal_content, and search_legal_content all concern retrieving legal document text or detail, creating real selection risk. The five search_* tools are more distinct because their source targets are clearer.

Naming Consistency4/5

Most tools follow a predictable verb_noun snake_case pattern such as search_*, get_*, and list_*. A few exceptions like source_health and dapa_catalog_status are noun-phrase status checks, and the placement of 'dapa' varies across names.

Tool Count4/5

With 17 tools, this is on the heavier side but each covers a distinct area: official legal APIs, DAPA catalog, policy pages, organization lookup, citation verification, and provider health. The count is slightly above a lean toolkit but not bloated.

Completeness4/5

The read-only domain is broadly covered with search, detail retrieval, legal history, citation verification, catalog status, policy pages, and organization lookup. Minor gaps remain for enumerated browsing such as listing all policy pages or the full organization tree, but agents can work around them.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables searching and retrieving Korean legal information including laws, court precedents, legal interpretations, and local ordinances from the Korean National Law Information Center API with intelligent search ranking.
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables real-time search and analysis of Korean laws, legal precedents, and administrative rules through the National Law Information Center Open API, allowing AI agents to access official legal information for contract review, compliance, and legal research.
    73
    -
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables exploration of Korean National Assembly data by connecting bills, committee reviews, and official records. Allows users to ask natural language questions and receive structured answers with citations to original documents.
    26
    Apache 2.0
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI programs to search and retrieve approved public regulations with citations, supporting PDF, HWP, HWPX, and DOCX formats.
    43
    MIT

Latest Blog Posts

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/ai-studying-man/DAPA-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server