korean-firefighter-law-mcp
This server lets you query official Korean firefighting and law data through MCP tools, enabling AI assistants to answer fire-safety, statistics, building, and legal questions with cited official sources.
Search daily fire occurrence statistics by date (reports, in-progress, false alarms, self-extinguished)
Get traffic-accident EMS activity statistics by provincial headquarters and fire station
Search specific fire-fighting target buildings by region and approval year
Retrieve fire facility details of a specific building (e.g., sprinkler installation)
Search fire-related statutes by name or keyword, with support for common abbreviations
Get full text of specific statutory articles (e.g., Fire Facility Act Article 10)
Look up annexes of enforcement decrees and related regulations
Search precedents related to firefighting, hazardous materials, and fire officials
Search administrative rules such as NFPC and NFTC fire safety standards
Get full text of NFPC/NFTC administrative rules by clause
Search hazardous material information by substance name, CAS number, or UN number
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., "@korean-firefighter-law-mcp소방시설법 제10조 조문 내용 알려줘"
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.
korean-firefighter-law-mcp
v0.8.0 · 소방기관 검토·시범운영용 · 공개 저장소 (MIT)
기관 도입 전 검토·시범운영을 전제로 공개합니다. 운영 승인 전 확인이 필요한 항목은 기준.md 6장에 그대로 남겨 두었습니다.
소방청 공공데이터와 법제처 국가법령정보를 조회해 AI가 소방 법령·화재통계·교통사고 구급통계· 특정소방대상물·소방시설·위험물 질문에 공식 자료를 근거로 답하도록 연결하는 MCP 서버입니다.
이 저장소의 목적은 소방기관이 코드를 직접 검토한 뒤 다음 두 방식 중 기관 환경에 맞는 방식으로 시범 적용할 수 있게 하는 것입니다. 소방청 또는 법제처의 공식 제품은 아닙니다.
도입 방식 두 가지
방식 | 사용자 경험 | 기관이 운영할 것 | 안내 문서 |
기관 서버형 | 브라우저 채팅 또는 기관 서비스가 API 호출 | 서버 1대, 정부 API 키, 선택한 LLM API 키 | |
개별 PC 설치형 | PC의 stdio 지원 AI 클라이언트에서 도구 사용 | 각 PC의 프로그램과 정부 API 키 |
기관 서버형은 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-mcpAI 클라이언트의 MCP 설정에도 같은 방식으로 등록합니다. 경로를 지정할 필요가 없습니다.
{
"mcpServers": {
"firefighter-law": {
"command": "npx",
"args": ["-y", "korean-firefighter-law-mcp"],
"env": {
"DATA_GO_KR_KEY": "발급받은 키",
"LAW_OC": "발급받은 OC"
}
}
}
}코드를 직접 검토하거나 수정해서 운영하려면 저장소를 내려받아 빌드합니다. 기관 심사·내부 배포에는 이 방식을 권합니다. 절차는 LOCAL_SETUP.md와 DEPLOY.md에 있습니다.
MCP 공식 레지스트리에는
io.github.ssd7830-cmyk/korean-firefighter-law-mcp로 등재되어 있습니다.
Related MCP server: korean-engineering-mcp
제공 도구 11개
도구 | 범위 | 공식 데이터 출처 |
| 날짜별 화재 접수·진행·오인·자체진화 현황 | 소방청 화재정보서비스 |
| 시도본부·소방서별 교통사고 구급활동 통계 | 소방청 구급통계서비스 |
| 시도·건물명·사용승인연도별 특정소방대상물 검색 | 소방청 특정소방대상물정보 |
| 특정소방대상물의 소방시설 현황 | 소방청 소방시설정보 |
| 소방 관계 법령 이름·본문 검색 | 법제처 국가법령정보 |
| 법령 조문 전문 조회 | 법제처 국가법령정보 |
| 시행령 등 법령 별표 원문·키워드 조회 | 법제처 국가법령정보 |
| 소방 관련 판례 검색 | 법제처 국가법령정보 |
| 행정규칙·화재안전기준(NFPC·NFTC) 검색 | 법제처 국가법령정보 |
| NFPC·NFTC 행정규칙 원문·절 조회 | 법제처 국가법령정보 |
| 물질명·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 verifyverify는 타입검사, 전체 자동 테스트, 배포 빌드를 차례로 실행합니다. 실제 정부 API 호출은 인증키와
활용승인이 있어야 하므로 DEPLOY.md의 배포 전 실연동 점검을 별도로 수행해야 합니다.
필요한 정부 API 키
공공데이터포털에서 다음 5개 API를 활용신청하고
DATA_GO_KR_KEY를 설정합니다. 화재정보 · 구급통계 · 특정소방대상물 · 소방시설 · 국가위험물정보법제처 국가법령정보 공동활용에서 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-cli와codex-cli어댑터가 있지만 개인 로그인을 공유 서버 운영에 사용하지 않습니다.구급통계는 전체 구급활동이 아니라 교통사고 구급활동 범위만 연결되어 있습니다.
라이선스
MIT License. 정부 원천 데이터의 이용조건은 각 제공기관의 현재 조건을 별도로 따릅니다.
Available Tools
7 toolsget_building_facilitiesA
특정소방대상물의 소방시설 현황 조회 (스프링클러 설치 여부 등)
| Name | Required | Description | Default |
|---|---|---|---|
| sido | Yes | 시도명 (예: 서울특별시) | |
| pageNo | No | 페이지 번호 | |
| numOfRows | No | 결과 수 (최대 1000) | |
| buildingName | No | 대상물명 (선택, 결과 내 필터) |
TDQS
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.
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.
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.
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.
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.
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
시도본부·소방서별 구급활동 통계 조회 (교통사고 구급활동: 출동·이송 건수)
| Name | Required | Description | Default |
|---|---|---|---|
| sido | Yes | 시도본부명 (예: 서울소방재난본부, 경기소방재난본부) | |
| month | No | 접수년월 (YYYYMM, 선택) | |
| pageNo | No | 페이지 번호 | |
| numOfRows | No | 결과 수 (최대 1000) | |
| fireStation | No | 출동소방서명 (선택) | |
| patientType | No | 환자유형 (선택) |
TDQS
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.
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.
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.
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.
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.
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조")
| Name | Required | Description | Default |
|---|---|---|---|
| jo | No | 조번호 (예: "제10조", "10", "10의2"). 비우면 전체 (길면 잘림) | |
| mst | No | 법령일련번호 MST (search_fire_law 결과의 값, 있으면 우선) | |
| lawName | No | 법령명 (약칭 지원, mst 없을 때 검색해서 첫 매칭 사용) |
TDQS
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.
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.
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.
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.
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.
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
특정소방대상물(건물) 검색 — 시도·사용승인연도별
| Name | Required | Description | Default |
|---|---|---|---|
| sido | Yes | 시도명 (예: 서울특별시, 경기도) | |
| pageNo | No | 페이지 번호 | |
| numOfRows | No | 결과 수 (최대 1000) | |
| approvalYear | No | 사용승인 연도 (YYYY, 선택) |
TDQS
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.
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.
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.
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.
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.
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
소방 관계 법령 검색 (법제처). 약칭 지원: 화재예방법·소방시설법·위험물법 등. 검색어 없으면 소방 법령 목록
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | 법령명 또는 키워드 (약칭 지원: 화재예방법, 소방시설법 등). 비우면 소방 법령 목록 표시 | |
| display | No | 결과 수 |
TDQS
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.
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.
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.
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.
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.
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
소방 관련 판례 검색 (법제처). 소방시설·위험물·소방공무원 관련 재판례
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | 검색어 (예: 소방시설 점검, 위험물 저장, 소방공무원 순직) | |
| display | No | 결과 수 |
TDQS
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.
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.
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.
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.
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.
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
날짜별 화재발생현황 조회 (소방청 국가화재정보). 접수·진행·오인·자체진화 건수 등
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | 발생일자 (YYYYMMDD, 예: 20250315) | |
| pageNo | No | 페이지 번호 | |
| numOfRows | No | 결과 수 (최대 1000) |
TDQS
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.
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.
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.
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.
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.
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
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.
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.
Seven tools is an appropriate size for this domain, covering statistics, building information, and legal research. Each tool serves a distinct function without redundancy.
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
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
Cloudflare Workers MCP server: govdata-korea
Public MCP server for discovering open jobs. Search, filter, and get application links.
This MCP server provides seamless access to Malaysia's government open data, including datasets, w…
Related MCP Servers
- 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
- AlicenseNot gradedqualityBmaintenanceThis 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.2MIT
- AlicenseNot gradedqualityDmaintenanceMCP 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.2MIT
- FlicenseNot gradedqualityCmaintenanceThis 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
- 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/ssd7830-cmyk/korean-firefighter-law-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server