Skip to main content
Glama
ssd7830-cmyk

korean-firefighter-law-mcp

by ssd7830-cmyk

korean-firefighter-law-mcp

v0.8.0 · 소방기관 검토·시범운영용 · 공개 저장소 (MIT)

기관 도입 전 검토·시범운영을 전제로 공개합니다. 운영 승인 전 확인이 필요한 항목은 기준.md 6장에 그대로 남겨 두었습니다.

소방청 공공데이터와 법제처 국가법령정보를 조회해 AI가 소방 법령·화재통계·교통사고 구급통계· 특정소방대상물·소방시설·위험물 질문에 공식 자료를 근거로 답하도록 연결하는 MCP 서버입니다.

이 저장소의 목적은 소방기관이 코드를 직접 검토한 뒤 다음 두 방식 중 기관 환경에 맞는 방식으로 시범 적용할 수 있게 하는 것입니다. 소방청 또는 법제처의 공식 제품은 아닙니다.

도입 방식 두 가지

방식

사용자 경험

기관이 운영할 것

안내 문서

기관 서버형

브라우저 채팅 또는 기관 서비스가 API 호출

서버 1대, 정부 API 키, 선택한 LLM API 키

DEPLOY.md

개별 PC 설치형

PC의 stdio 지원 AI 클라이언트에서 도구 사용

각 PC의 프로그램과 정부 API 키

LOCAL_SETUP.md

기관 서버형은 GET / 웹 채팅, POST /api/chat, POST /mcp를 제공합니다. 웹 채팅과 /api/chat은 LLM이 질문을 공식 API 호출 계획(1~4건)으로 바꾸고 조회 자료로 답변을 작성하므로 LLM 설정이 필수입니다. LLM이 없으면 챗봇은 503으로 비활성화되고 /mcp만 동작합니다. 답변은 조회 자료에 있는 내용만으로 구조화된 존댓말로 작성되며 주장·수치 문장에 근거 자료 번호([자료 N])를 인용합니다(서버가 인용 유효성 검증). 자료가 부족하면 1라운드에 한해 스스로 추가 조회하고, 그래도 없는 데이터는 공식 안내처를 권합니다. 공식 조회 원문은 응답의 sources 필드로 항상 함께 제공되며 화면에서는 접이식으로 표시됩니다.

개별 PC 설치형은 중앙 서버와 별도 LLM API 키가 필요 없습니다. 연결한 AI 클라이언트가 답변을 만들고 이 프로그램은 stdio MCP 도구로 공식 API를 조회합니다. ChatGPT는 로컬 MCP 서버에 직접 연결하지 않으므로 ChatGPT를 사용할 때는 기관 서버형의 원격 MCP 또는 웹/API 방식을 검토해야 합니다.

설치 방법 두 가지

이 프로그램은 npm에 게시되어 있어 내려받기·빌드 없이 바로 실행할 수 있습니다.

npx korean-firefighter-law-mcp

AI 클라이언트의 MCP 설정에도 같은 방식으로 등록합니다. 경로를 지정할 필요가 없습니다.

{
  "mcpServers": {
    "firefighter-law": {
      "command": "npx",
      "args": ["-y", "korean-firefighter-law-mcp"],
      "env": {
        "DATA_GO_KR_KEY": "발급받은 키",
        "LAW_OC": "발급받은 OC"
      }
    }
  }
}

코드를 직접 검토하거나 수정해서 운영하려면 저장소를 내려받아 빌드합니다. 기관 심사·내부 배포에는 이 방식을 권합니다. 절차는 LOCAL_SETUP.mdDEPLOY.md에 있습니다.

MCP 공식 레지스트리에는 io.github.ssd7830-cmyk/korean-firefighter-law-mcp로 등재되어 있습니다.

Related MCP server: korean-engineering-mcp

제공 도구 11개

도구

범위

공식 데이터 출처

search_fire_stats

날짜별 화재 접수·진행·오인·자체진화 현황

소방청 화재정보서비스

get_ems_stats

시도본부·소방서별 교통사고 구급활동 통계

소방청 구급통계서비스

search_fire_building

시도·건물명·사용승인연도별 특정소방대상물 검색

소방청 특정소방대상물정보

get_building_facilities

특정소방대상물의 소방시설 현황

소방청 소방시설정보

search_fire_law

소방 관계 법령 이름·본문 검색

법제처 국가법령정보

get_fire_law_text

법령 조문 전문 조회

법제처 국가법령정보

get_fire_law_annex

시행령 등 법령 별표 원문·키워드 조회

법제처 국가법령정보

search_fire_precedents

소방 관련 판례 검색

법제처 국가법령정보

search_fire_admin_rules

행정규칙·화재안전기준(NFPC·NFTC) 검색

법제처 국가법령정보

get_fire_admin_rule_text

NFPC·NFTC 행정규칙 원문·절 조회

법제처 국가법령정보

search_hazmat

물질명·CAS·UN번호별 위험물 정보

소방청 국가위험물정보

법령 약칭(화재예방법·소방시설법·위험물법·119법 등)을 정식 명칭으로 바꾸며, 법령·행정규칙 이름 검색이 0건이면 본문 검색으로 전환합니다. 본문 검색은 전량(최대 100건)을 받아 소방·건축 소관 관련도순으로 재정렬해 표시하고, 총 건수 대비 표시 건수를 명시합니다.

빠른 코드 검증

Node.js 22 이상이 필요하며 새 설치에는 현재 LTS인 Node.js 24를 권장합니다.

git clone https://github.com/ssd7830-cmyk/korean-firefighter-law-mcp.git
cd korean-firefighter-law-mcp
npm ci
npm run verify

verify는 타입검사, 전체 자동 테스트, 배포 빌드를 차례로 실행합니다. 실제 정부 API 호출은 인증키와 활용승인이 있어야 하므로 DEPLOY.md의 배포 전 실연동 점검을 별도로 수행해야 합니다.

필요한 정부 API 키

  1. 공공데이터포털에서 다음 5개 API를 활용신청하고 DATA_GO_KR_KEY를 설정합니다. 화재정보 · 구급통계 · 특정소방대상물 · 소방시설 · 국가위험물정보

  2. 법제처 국가법령정보 공동활용에서 OPEN API를 신청하고 LAW_OC를 설정합니다.

승인 방식, 호출 한도, 유효기간은 바뀔 수 있으므로 저장소의 숫자보다 각 발급 계정과 API 상세 페이지의 현재 표시를 기준으로 합니다.

안전 설계와 운영상 주의

  • 조회 자료 없이 LLM이 답을 생성하는 경로를 두지 않습니다. 조회 실패 시 오류 또는 조회 원문을 표시합니다.

  • 서버는 기본적으로 127.0.0.1에만 열리고, 외부 주소 바인딩은 접속 토큰 없이는 시작을 거부합니다.

  • API 키는 환경변수 또는 HTTPS 요청 헤더로만 받고, 애플리케이션 오류의 키 값은 마스킹합니다.

  • 데이터베이스를 배포하지 않습니다. 공식 API를 호출하고 항목별 TTL의 인메모리 캐시만 사용합니다.

  • /mcp/api/chat은 운영 시 토큰과 HTTPS로 보호해야 합니다. 자세한 설정은 DEPLOY.md에 있습니다.

  • 기관 서버형 챗봇은 사용자 질문과 조회 자료를 선택한 외부 LLM 사업자로 전송합니다. 기관의 개인정보·보안· 기록물 정책 검토 전에는 민감정보나 개인정보를 입력하지 않습니다. LLM 사용을 승인하지 않는 기관은 웹 챗봇 대신 /mcp 원격 도구 또는 개별 PC 설치형(클라이언트 LLM 사용)을 검토합니다.

  • 이 프로그램의 결과는 실무 검토 보조자료입니다. 법적 판단과 현장 안전 판단은 공식 원문·기관 지침과 담당자의 검토를 대신하지 않습니다.

보안 구조와 제한은 ARCHITECTURE.md, 취약점 신고와 운영 기본선은 SECURITY.md, 변경 의도와 검증 이력은 기준.md, 운영 인계 절차는 인수인계.md에 기록합니다.

현재 검증 상태

  • 자동 테스트·타입검사·빌드는 현재 소스에서 재실행합니다. 결과 수는 npm run verify 출력이 기준입니다.

  • 검색 재정렬·조문 키워드 추출·추가 조회 라운드·화면 개편의 검증 이력과 12문항 실사용 감사 결과는 기준.md 3-3~3-6에, 남은 개선 순서는 인수인계.md 16장에 기록되어 있습니다.

  • 실제 Gemini·Claude·OpenAI API 호출, Docker 이미지 빌드, ChatGPT/Claude 원격 MCP UI 연결은 현재 환경에서 재검증하지 못했습니다. 문서에 완료로 표시하지 않으며 기관 시험 환경에서 확인해야 합니다.

  • 로컬 개발용 claude-clicodex-cli 어댑터가 있지만 개인 로그인을 공유 서버 운영에 사용하지 않습니다.

  • 구급통계는 전체 구급활동이 아니라 교통사고 구급활동 범위만 연결되어 있습니다.

라이선스

MIT License. 정부 원천 데이터의 이용조건은 각 제공기관의 현재 조건을 별도로 따릅니다.

Available Tools

7 tools
get_building_facilitiesA

특정소방대상물의 소방시설 현황 조회 (스프링클러 설치 여부 등)

ParametersJSON Schema
NameRequiredDescriptionDefault
sidoYes시도명 (예: 서울특별시)
pageNoNo페이지 번호
numOfRowsNo결과 수 (최대 1000)
buildingNameNo대상물명 (선택, 결과 내 필터)

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the burden. It implies a read-only operation via '조회' and adds context on the type of data (sprinkler installation). However, it does not disclose any pagination behavior, required parameters, or response format beyond the literal purpose.

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?

One concise, front-loaded sentence with no filler. Every word earns its place, and the example adds clarity without bloat.

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 tool with no output schema, the description covers the core purpose but lacks any mention of the required 'sido' parameter or the optional buildingName filter beyond schema. It is minimally complete but not richer than necessary.

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 100%, so the baseline is 3. The description adds an example of facility types but does not clarify any parameter semantics beyond what the schema already provides.

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?

Describes a specific query ('소방시설 현황 조회' - fire facility status inquiry) for a specific resource (특정소방대상물 - specific firefighting targets), with an example (스프링클러 설치 여부). This clearly distinguishes it from sibling tools like search_fire_stats or get_ems_stats.

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?

No guidance on when to use this tool versus alternatives. Sibling tools like search_fire_building or search_fire_stats are not mentioned, and no context is given about the preferred scenarios for this tool.

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

get_ems_statsA

시도본부·소방서별 구급활동 통계 조회 (교통사고 구급활동: 출동·이송 건수)

ParametersJSON Schema
NameRequiredDescriptionDefault
sidoYes시도본부명 (예: 서울소방재난본부, 경기소방재난본부)
monthNo접수년월 (YYYYMM, 선택)
pageNoNo페이지 번호
numOfRowsNo결과 수 (최대 1000)
fireStationNo출동소방서명 (선택)
patientTypeNo환자유형 (선택)

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden of behavioral disclosure. The verb '조회' (inquiry) indicates a read-only operation, which is a behavioral trait. However, the description does not disclose return format, pagination behavior, or error handling. It adds some value but stops short of full transparency.

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 purpose and adds a parenthetical clarifying the metric type. There is zero wasted text, making it exceptionally efficient.

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 six parameters, one required, and no output schema or annotations. The description clarifies the domain (traffic accident ambulance stats) and the core metric, but it does not explain pagination, filtering behavior, or how to interpret the results. For a moderately complex stats tool, this is adequate but not fully complete.

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?

The input schema covers all six parameters with clear descriptions, including examples for 'sido' and a regex pattern for 'month'. The tool description adds no parameter-specific meaning beyond what the schema already provides, so the baseline score of 3 is appropriate.

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 tool's function: it retrieves EMS activity statistics (traffic accident ambulance dispatch and transport counts) broken down by provincial headquarters and fire station. The Korean terms '구급활동' and '교통사고' make it specific and distinguish it from sibling fire-related search tools.

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 does not explicitly state when to use this tool versus alternatives like search_fire_stats. However, the focus on ambulance/EMS activity implies its use case, and the sibling tools are clearly fire-oriented. This is enough for implied usage but lacks explicit alternatives or exclusions.

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

get_fire_law_textA

소방 법령 조문 전문 조회 (예: lawName="소방시설법", jo="제10조")

ParametersJSON Schema
NameRequiredDescriptionDefault
joNo조번호 (예: "제10조", "10", "10의2"). 비우면 전체 (길면 잘림)
mstNo법령일련번호 MST (search_fire_law 결과의 값, 있으면 우선)
lawNameNo법령명 (약칭 지원, mst 없을 때 검색해서 첫 매칭 사용)

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the purpose and fails to mention behaviors like truncation when jo is empty, priority of mst, or return format. The schema covers some behavior, but the description adds no transparency beyond the bare function.

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 sentence that front-loads the purpose and includes a concrete example. Every word is useful; there is no waste or irrelevant detail.

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 tool with three optional, well-described parameters, the description is adequate. However, without an output schema or annotations, it could benefit from noting what the response looks like or how it relates to sibling tools. The basic premise is covered, but deeper context is missing.

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?

The schema provides 100% coverage of parameter descriptions, including examples. The description's example is redundant and does not add meaning beyond what the schema already states. Baseline of 3 is appropriate since the schema does the heavy lifting.

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 uses a specific verb '조회' (inquiry) and resource '조문 전문' (full text of provisions), clearly indicating the tool retrieves the full text of a specific fire law article. The example with lawName and jo makes the purpose concrete and distinguishes it from sibling search tools like search_fire_law.

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 provides a usage example but does not explicitly state when to use this tool versus alternatives. The schema hints at a workflow (using MST from search_fire_law), but the description itself only implies usage without offering exclusions or alternative guidance.

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

search_fire_buildingC

특정소방대상물(건물) 검색 — 시도·사용승인연도별

ParametersJSON Schema
NameRequiredDescriptionDefault
sidoYes시도명 (예: 서울특별시, 경기도)
pageNoNo페이지 번호
numOfRowsNo결과 수 (최대 1000)
approvalYearNo사용승인 연도 (YYYY, 선택)

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are present, so the description carries the full burden of behavioral disclosure. However, it only says 'search' and does not mention read-only behavior, pagination, result format, authentication requirements, or any side effects. It is minimal and not misleading, but it fails to add meaningful behavioral context.

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 phrase that immediately conveys the tool's purpose and the primary filter dimensions. Every word earns its place, and there is no redundant filler or repetition.

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 no output schema and only a one-line description, the return value structure, pagination behavior, error handling, and any special conditions are entirely omitted. The description is too sparse to fully prepare an agent for invoking the tool and interpreting results, especially given the search API nature with pageNo and numOfRows parameters.

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?

The input schema provides complete descriptions for all four parameters (sido, pageNo, numOfRows, approvalYear), so the baseline is 3. The description adds only a brief mention of filtering by city/province and approval year, which largely overlaps with the schema. No additional parameter semantics are provided beyond what the schema already defines.

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 action ('search') and the resource ('specific fire-fighting target buildings'), and adds the filter dimensions by city/province and approval year. While it does not explicitly differentiate from sibling tools, the subject matter is distinct enough from stats, law, and precedents searches.

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?

No usage guidance is provided. The description does not mention when to use this tool versus siblings, nor does it state prerequisites, exclusions, or alternative tools. The agent is left to infer applicability from the tool name alone.

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

search_fire_lawA

소방 관계 법령 검색 (법제처). 약칭 지원: 화재예방법·소방시설법·위험물법 등. 검색어 없으면 소방 법령 목록

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNo법령명 또는 키워드 (약칭 지원: 화재예방법, 소방시설법 등). 비우면 소방 법령 목록 표시
displayNo결과 수

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It adds useful details: abbreviation support and the empty-query fallback to a list. However, it does not disclose return format, sorting, pagination, or error behavior, so transparency is only partial.

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 compact sentence that covers the core function, source, abbreviation feature, and empty-query behavior. Every clause provides value, with no wasted words or repetition.

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 simple tool with two optional parameters and no output schema, the description is largely sufficient: it conveys the search scope, source, and what happens when the query is empty. Minor gaps such as exact result fields are acceptable given the sibling get_fire_law_text implies this tool returns a list.

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%, with both 'query' and 'display' already described in the input schema. The description essentially repeats the query parameter's behavior (abbreviation support, empty-query listing), adding little beyond what the schema already provides. Baseline 3 is appropriate.

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's function: searching fire-related statutes (소방 관계 법령 검색) with a source (법제처) and abbreviation support. It distinguishes itself from sibling tools like search_fire_stats and search_fire_precedents by focusing on laws, though it does not explicitly name alternatives.

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?

Provides clear context that this tool is for searching Korean fire statutes and explains empty-query behavior (displays a list of fire statutes). However, it does not explicitly state when to use this tool over get_fire_law_text or other siblings, leaving usage guidance largely implied.

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

search_fire_precedentsA

소방 관련 판례 검색 (법제처). 소방시설·위험물·소방공무원 관련 재판례

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes검색어 (예: 소방시설 점검, 위험물 저장, 소방공무원 순직)
displayNo결과 수

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the full burden. It discloses the source (법제처) and topical scope, but does not mention output format, pagination, or safety profile. As a read-only search operation, inherent safety mitigates some risk, but details are limited.

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 consists of two concise sentences that front-load the purpose and scope. There is no redundant or unnecessary information, and every sentence adds value.

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 simple 2-parameter search tool, the description sufficiently covers purpose and topical scope. It does not explicitly describe the return format, but given the low complexity and clear search nature, the description is mostly complete. An explicit note on return type would have been beneficial.

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 100%, with both parameters (query and display) fully documented including examples. The description adds no additional parameter semantics beyond what the schema already provides, so a baseline score of 3 is appropriate.

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 uses a specific verb '검색' (search) and clearly identifies the resource as fire-related legal precedents. It distinguishes from sibling tools like search_fire_stats (statistics) and search_fire_law (laws) by specifying '판례' (precedents).

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 usage by listing covered topics (소방시설, 위험물, 소방공무원) but does not explicitly state when to use this tool over alternatives. It provides context but no exclusions or direct comparison with siblings.

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

search_fire_statsA

날짜별 화재발생현황 조회 (소방청 국가화재정보). 접수·진행·오인·자체진화 건수 등

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYes발생일자 (YYYYMMDD, 예: 20250315)
pageNoNo페이지 번호
numOfRowsNo결과 수 (최대 1000)

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses that the tool returns counts for reception, in-progress, false alarms, and self-extinguishing, giving some insight into the data content. However, it does not mention read-only safety, pagination behavior, rate limits, or error handling, which are important for a search API.

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 highly concise, with two short sentences. The first sentence is front-loaded with the core purpose, and the second adds valuable detail about the data categories. No redundant or filler content.

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 has low complexity with 3 well-documented parameters and no output schema. The description sufficiently explains the tool's purpose and the nature of the returned data. However, it could be more complete by noting that results are paginated or that the API is read-only, though these are partly inferable from the schema.

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 100%, so the schema fully documents all three parameters (date, pageNo, numOfRows). The description adds no additional parameter-level detail beyond the overall purpose, so it meets the baseline but does not exceed it.

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 tool's function: '날짜별 화재발생현황 조회' (search fire occurrence status by date), with a specific resource (National Fire Agency national fire information) and data categories (접수, 진행, 오인, 자체진화). This distinguishes it from sibling tools like search_fire_building, which focuses on building-specific information.

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 usage for date-based fire statistics through the date parameter, but it does not explicitly state when to use this tool versus alternatives. It lacks guidance on exclusions or when to prefer sibling tools such as search_fire_building or get_ems_stats.

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

TDQS

A3.7/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: fire statistics, building search, EMS statistics, building facilities, law search, law text retrieval, and precedent search. Even the two statistics tools (fire vs EMS) and two legal tools (law vs precedent) are clearly separated by subject matter.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern using snake_case (search_* or get_*), making the action and target predictable. The use of 'fire' in most names, though not all, still follows the same structural pattern.

Tool Count5/5

Seven tools is an appropriate size for this domain, covering statistics, building information, and legal research. Each tool serves a distinct function without redundancy.

Completeness4/5

The tool surface covers the main needs of the domain: fire and EMS statistics, building search and facility details, and legal research (law search, law text, precedents). Some minor gaps exist, such as no tool for broader building metadata or emergency response details, but the core workflows are comprehensively supported.

Maintenance

ActivityMaintained
ResponsivenessSyncing

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

  • A
    license
    Not graded
    quality
    B
    maintenance
    This MCP server enables searching Korean construction standards (KDS/KCS), laws from the Ministry of Government Legislation, administrative rules and interpretations, and optionally local water/wastewater design manuals to generate grounded evidence packages for engineering answers.
    2
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server that provides tools to query Korean financial products (savings, deposits, pensions, mortgages, loans) via the FSS Open API, enabling search by company or product type.
    2
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    This MCP server integrates South Korea's national law information, building registers from MOLIT, and KOSIS statistics for housing development research. It enables searching laws, retrieving building details, and accessing statistical data through natural language.

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/ssd7830-cmyk/korean-firefighter-law-mcp'

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