MCP server exposing Korea's ALIO public institution disclosure data (한국 공공기관 알리오 항목별공시 MCP) — Node/TypeScript port for MCPB one-click install
alio-mcp exposes 17 tools with consistent naming (verb_noun pattern: list_*, search_*, download_*, get_*) and detailed Korean-language descriptions. All tools have input schemas with type definitions and parameter descriptions. However, output schemas are documented only in descriptions (not as formal JSON Schema), and error handling lacks recovery guidance. Tool descriptions average ~180 chars, within baseline (194 chars p50). Parameters are well-described but lack enums for constrained values (e.g., 'kind' in download_disclosure_attachment accepts 'file'|'dfile' but no enum). No tool annotations (readOnlyHint/destructiveHint) despite clear read/write semantics. Composition is sound, tools chain well (list_menus → list_organs → download_report). Security: no secrets in params, but no audit logging visible.
다중 기관의 공시 본문을 병렬 비교한다. 반환: {기관별: {기관명: {표, 평문}}}.
게시판형 자료의 첨부 파일을 다운로드한다. list_board_attachments 응답의 파일ID로 호출. 반환: {saved_path, size_bytes}.
보고서 부속 첨부 파일을 다운로드한다. kind='file'(일반 첨부) 또는 'dfile'(안전경영책임보고서). 반환: {saved_path, size_bytes}.
공시번호(disclosureNo)로 보고서 PDF를 다운로드한다. 보고서형 메뉴(임직원수·일반현황 등)의 공시번호로 호출. 반환: {saved_path, size_bytes}.
내부규정 파일을 다운로드한다. list_rules 응답의 파일번호로 호출. 반환: {saved_path, size_bytes}.
기관 프로필 상세를 반환한다. 기관ID 또는 기관명으로 조회. 반환: {기관ID, 기관명, 기관유형, 주무부처, 지역, 설립일, 홈페이지, ...}.
공시 보고서 본문을 표·평문으로 반환한다. 보고서형 메뉴의 공시번호로 호출. 반환: {표: [[행1], [행2], ...], 평문: '...'}.
Output schemas not formally documented. Tool descriptions mention return structure (e.g., '{표: [[行1], ...], 平文: ...}') but no JSON Schema definitions. LLMs cannot reliably parse unstructured output descriptions.
Constrained parameters lack enums. 'kind' in download_disclosure_attachment accepts 'file'|'dfile'; 'divis' in list_rules accepts specific classification codes, but no enum constraints in schema. LLMs may hallucinate invalid values.
Error responses lack recovery guidance. Example: 'REQUEST_FAILED: 알리오 API 응답 없음' tells LLM nothing about retry strategy or alternatives. Should include 'Retryable: yes. Suggest: wait 5s and retry, or try search_organs() for specific institution.'
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | 2026-07-28+ | v2 |
징계·청렴도 정형 집계를 반환한다. 공시번호로 호출. 반환: {집계: {파면, 해임, 정직, 감봉, 견책, 기타}}.
게시판형·보고서형 항목의 전체 자료 목록을 자동 순회로 반환한다. 페이지 순회 자동화. 반환: {rootNo, 자료: [{제목, 등록일, ...}]}.
게시판형 자료의 첨부 메타를 반환한다. list_board_items 응답 필드를 그대로 입력. 반환: {첨부: [{파일ID, 파일명, 파일크기}], 외부링크: [{링크명, URL}]}.
게시판형·보고서형 항목의 자료 목록(1페이지 최대 10건). 게시판형 예: B1010 임원 모집공고, B1220 감사원 지적사항. 보고서형 예: 43006 자체감사결과. 43006·32301 등은 apbaId 필수할 수 있음. 응답 필드를 그대로 list_board_attachments 호출에 활용 가능.
보고서 부속 첨부 목록을 반환한다. 공시번호로 호출. 반환: {첨부: [{파일ID, 파일명, 파일크기}]}.
항목별공시 메뉴 목록(92개)을 반환한다. 자주 쓰는 rootNo: 일반현황 10105, 임직원 수 20201, 징계현황 21201, 자체감사결과 43006, 감사원 지적사항 B1220, 경영 평가결과 B1230, 내부규정 21110 등. category(대분류)와 keyword(항목명 부분일치)는 AND 조건으로 동시 사용 가능.
92개 항목을 대분류>중분류 계층 트리로 반환(파일유형 포함). list_menus는 평면 목록(검색·필터용)이고, 이 도구는 계층 + 파일유형(rule/pdf+file/pdf+file+dfile/file — 어떤 다운로드 도구를 쓸지 라우팅 힌트). 반환: {대분류: [{중분류, 항목명, rootNo, 파일유형, 보고서형}]}.
특정 메뉴(rootNo)에 공시하는 기관 목록(약 355개). rootNo는 list_menus 응답의 'rootNo'. 한 페이지 ≈10건, totalCnt로 규모 확인 후 page 순회. 특정 기관만 필요하면 search_organs(name)으로 기관ID를 먼저 얻는 편이 토큰 효율적. 콤마 다중 rootNo는 첫 항목만 사용. 반환: {totalCnt, page, 기관:[{기관ID, 기관명, 기관유형, 주무부처, 기준연도, 기준분기, 공시번호, 제출번호}]}.
기관의 내부규정 목록을 반환한다. 기관명으로 검색. 반환: {규정: [{규정명, 파일명, 파일번호, 분류}]}.
기관명·지역·유형으로 기관을 검색한다. 반환: {기관: [{기관ID, 기관명, 기관유형, 주무부처, 지역}]}.
No tool annotations. All tools lack readOnlyHint/destructiveHint/idempotentHint. Download tools (download_report, download_board_attachment) should be marked destructiveHint=false (read-only) or idempotentHint=true. Helps agents reason about safety.
Pagination not uniformly exposed. list_organs, list_board_items accept 'page' param but do not document max page size or total result count in return schema. list_all_board_items auto-paginates but hides pagination details from LLM.